Fx.crypto:和加解密,编码解码相关的API
1. getMD5 MD5
Fx.crypto.getMD5()
返回值类型
MD5API
(1).参考MD5API
2. getDESede DESede
Fx.crypto.getDESede()
返回值类型
DESedeAPI
(1).参考DESedeAPI
3. getBase64 Base64
Fx.crypto.getBase64()
返回值类型
Base64API
(1).参考Base64API
4. getSHA1 SHA1
Fx.crypto.getSHA1()
返回值类型
SHA1API
(1).参考SHA1API
5. getURL URL编码解码
Fx.crypto.getURL()
返回值类型
URLAPI
(1).参考URLAPI
6. getSHA SHA
Fx.crypto.getSHA()
返回值类型
SHAAPI
(1).参考SHAAPI
7. getECC ECC算法
Fx.crypto.getECC()
返回值类型
ECCAPI
(1).参考ECCAPI
8. getRSA RSA算法
Fx.crypto.getRSA()
返回值类型
RSAAPI
(1).参考RSAAPI
9. getHex HEX
Fx.crypto.getHex()
返回值类型
HexAPI
(1).参考HexAPI
10. getHmac HMAC
Fx.crypto.getHmac()
返回值类型
HmacAPI
(1).参考HmacAPI
11. getSymmetry 对称算法集合
Fx.crypto.getSymmetry()
返回值类型
SymmetryAPI
(1).参考SymmetryAPI
12. getSM4 SM4中国对称加密算法
Fx.crypto.getSM4()
返回值类型
SM4API
(1).参考SM4API
13. getSM2 SM2中国非对称加密算法
Fx.crypto.getSM2()
返回值类型
SM2API
(1).参考SM2API
14. getSM3 SM3中国数据签名算法
Fx.crypto.getSM3()
返回值类型
SM3API
(1).参考SM3API
参考类 com.fxiaoke.functions.api.MD5API
1. 对输入字节进行MD5摘要运算,并对byte[]运算结果进行16进制转字符串编码
encode(<byte[] data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
data | byte[] | 需要运算的数据 |
返回值类型
String
返回值说明
返回的数据类型: String
Java举例
byte[] bts = {1, 2, 3};
Fx.crypto.getMD5().encode(bts);
Groovy举例:
Fx.crypto.MD5.encode([1, 2] as byte[])
2. 对输入内容进行MD5摘要运算
encode2Bytes(<byte[] data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
data | byte[] | 需要运算的数据 |
返回值类型
byte[]
返回值说明
返回的数据类型: byte[]
Java举例
byte[] bts = {1, 2, 3};
log.info(Fx.crypto.getMD5().encode2Bytes(bts));
Groovy举例:
log.info(Fx.crypto.MD5.encode2Bytes([1, 2] as byte[]))
3. 对输入的字符串进行MD5摘要运算,并对byte[]运算结果进行16进制转字符串编码
encode(<String data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
data | String | 需要运算的数据 |
返回值类型
String
返回值说明
返回的数据类型: String
Java举例
Fx.crypto.getMD5().encode("fxiaoke");
Groovy举例:
Fx.crypto.MD5.encode("fxiaoke")
参考类 com.fxiaoke.functions.api.DESedeAPI
1. DESede加密
encode(<byte[] key>, <java.lang.String iv>, <byte[] data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
key | byte[] | 加密秘钥 |
iv | String | 初始向量 |
data | byte[] | 加密数据 |
返回值类型
byte[]
返回值说明
返回的数据类型: byte[]
Java举例
byte[] bts = {1, 2, 3};
Fx.crypto.getDESede().encode(Strings.toUTF8Bytes("123456789101112131415123116") ,"12345678", bts);
Groovy举例:
Fx.crypto.DESede.encode(Strings.toUTF8Bytes("123456789101112131415123116") ,"12345678",[1,2] as byte[])
2. DESede解密
decode(<byte[] key>, <java.lang.String iv>, <byte[] data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
key | byte[] | 加密秘钥 |
iv | String | 初始向量 |
data | byte[] | 解密数据 |
返回值类型
byte[]
返回值说明
返回的数据类型: byte[]
Java举例
byte[] bts = {1, 2, 3};
Fx.crypto.getDESede().decode(Strings.toUTF8Bytes("123456789101112131415123116") ,"12345678", bts);
Groovy举例:
Fx.crypto.DESede.decode(Strings.toUTF8Bytes ( " 123456789101112131415123116 ") ,"12345678", [36, -81, -60, 112, -122, 19, -24, -70] as byte[])
参考类 com.fxiaoke.functions.api.Base64API
1. Base64编码
encode(<byte[] data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
data | byte[] | 需要编码的数据 |
返回值类型
String
返回值说明
返回的数据类型: String
Java举例
byte[] bts = {1, 2, 3};
Fx.crypto.getBase64().encode(bts);
Groovy举例:
Fx.crypto.base64.encode([1] as byte[])
2. Base64解码
decode(<String data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
data | String | 需要解码的数据 |
返回值类型
byte[]
返回值说明
返回的数据类型: byte[]
Java举例
Fx.crypto.getBase64().decode("content");
Groovy举例:
Fx.crypto.base64.decode("content")
3. Base64解码
decode(<byte[] data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
data | byte[] | 需要解码的数据 |
返回值类型
byte[]
返回值说明
返回的数据类型: byte[]
Java举例
byte[] bts = {1, 2, 3};
Fx.crypto.getBase64().decode(bts);
Groovy举例:
Fx.crypto.base64.decode([1, 2] as byte[])
参考类 com.fxiaoke.functions.api.SHA1API
1. sha1运算
encode(<byte[] data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
data | byte[] | 需要运算的数据 |
返回值类型
byte[]
返回值说明
返回的数据类型: byte[]
Java举例
byte[] bts = {1, 2, 3};
Fx.crypto.getSHA1().encode(bts);
Groovy举例:
Fx.crypto.SHA1.encode([1, 2] as byte[])
2. sha1运算
encode(<String data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
data | String | 需要运算的数据 |
返回值类型
byte[]
返回值说明
返回的数据类型: byte[]
Java举例
Fx.crypto.getSHA1().encode("data");
Groovy举例:
Fx.crypto.SHA1.encode("data")
3. sha1运算,并对结果追加hex编码
hex(<byte[] data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
data | byte[] | 需要运算的数据 |
返回值类型
String
返回值说明
返回的数据类型: byte[]
Java举例
byte[] bts = {1, 2, 3};
Fx.crypto.getSHA1().hex(bts);
Groovy举例:
Fx.crypto.SHA1.hex([1, 2] as byte[])
4. sha1运算,并对结果追加hex编码
hex(<String data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
data | String | 需要运算的数据 |
返回值类型
String
返回值说明
返回的数据类型: byte[]
Java举例
Fx.crypto.getSHA1().hex("data");
Groovy举例:
Fx.crypto.SHA1.hex("data")
5. hmacSHA1运算
hmacSHA1(<String secret>, <String content>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
secret | String | 运算秘钥 |
content | String | 需要运算的数据 |
返回值类型
byte[]
返回值说明
返回的数据类型: byte[]
Java举例
byte[] bts = {1, 2, 3};
Fx.crypto.getSHA1().hmacSHA1("123", "hello");
Groovy举例:
Fx.crypto.SHA1.hmacSHA1("123", "hello")
参考类 com.fxiaoke.functions.api.URLAPI
1. url编码
encode(<String data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
data | String | 需要编码的数据 |
返回值类型
APIResult
返回值说明
返回的数据类型: String
Java举例
APIResult ret = Fx.crypto.getURL().encode("编码的数据");
if (ret.isError()) {
log.info(ret.message());
} else {
log.info(ret.getData());
}
Groovy举例:
def(boolean error, String reuslt, String errorMessage) = Fx.crypto.URL.encode("编码的数据")
2. url解码
decode(<String data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
data | String | 需要解码的数据 |
返回值类型
APIResult
返回值说明
返回的数据类型: String
Java举例
APIResult ret = Fx.crypto.getURL().decode("%E7%BC%96%E7%A0%81%E7%9A%84%E6%95%B0%E6%8D%AE");
if (ret.isError()) {
log.info(ret.message());
} else {
log.info(ret.getData());
}
Groovy举例:
def(boolean error, String result, String errorMessage) = Fx.crypto.URL.decode("%E7%BC%96%E7%A0%81%E7%9A%84%E6%95%B0%E6%8D%AE")
参考类 com.fxiaoke.functions.api.SHAAPI
1. sha256运算
sha256(<byte[] data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
data | byte[] | 需要运算的数据 |
返回值类型
byte[]
返回值说明
返回的数据类型: byte[]
Java举例
byte[] bts = {1, 2, 3};
Fx.crypto.getSHA().sha256(bts);
Groovy举例:
byte[] ss = Fx.crypto.SHA.sha256([1,2] as byte[])
2. sha256运算
sha256(<java.lang.String data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
data | String | 需要运算的数据 |
返回值类型
byte[]
返回值说明
返回的数据类型: byte[]
Java举例
byte[] bts = {1, 2, 3};
Fx.crypto.getSHA().sha256(bts);
Groovy举例:
byte[] ss = Fx.crypto.SHA.sha256([1,2] as byte[])
3. HmacSHA256运算
sha256HMAC(<java.lang.String secret>, <java.lang.String content>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
secret | String | 运算秘钥 |
content | String | 需要运算的数据 |
返回值类型
byte[]
返回值说明
返回的数据类型: byte[]
Java举例
byte[] ss = Fx.crypto.getSHA().sha256HMAC("1FA82F2D6DEE67E1A3E183BFA7E2FE67", "大家好");
Groovy举例:
byte[] ss = Fx.crypto.SHA.sha256HMAC('1FA82F2D6DEE67E1A3E183BFA7E2FE67', '大家好')
4. HmacSHA256运算
sha256HMAC(<byte[] secret>, <java.lang.String content>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
secret | byte[] | 运算秘钥 |
content | String | 需要运算的数据 |
返回值类型
byte[]
返回值说明
返回的数据类型: byte[]
Java举例
byte[] bts = {1, 2, 3};
byte[] ss = Fx.crypto.getSHA().sha256HMAC(bts, "大家好");
Groovy举例:
byte[] ss = Fx.crypto.SHA.sha256HMAC([1,2] as byte[], '大家好')
5. sha256运算,并对加密结果做Hex编码
sha256Hex(<java.lang.String data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
data | String | 需要运算的数据 |
返回值类型
java.lang.String
返回值说明
返回的数据类型: byte[]
Java举例
String ss = Fx.crypto.getSHA().sha256Hex("大家好");
Groovy举例:
String ss = Fx.crypto.SHA.sha256Hex("大家好")
6. 并对运算结果做Hex编码
sha256Hex(<byte[] data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
data | byte[] | 需要运算的数据 |
返回值类型
java.lang.String
返回值说明
返回的数据类型: byte[]
Java举例
byte[] bts = {1, 2, 3};
String ss = Fx.crypto.getSHA().sha256Hex(bts);
Groovy举例:
String ss = Fx.crypto.SHA.sha256Hex([1,2] as byte[])
参考类 com.fxiaoke.functions.api.ECCAPI
1. ECC加密
encrypt(<String publicKey>, <String data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
publicKey | String | 加密公钥,生成的算法为ECC,格式为Base64,X.509标准存储 |
data | String | 需要加密的数据 |
返回值类型
String
返回值说明
返回的数据类型: String
Java举例
String publicKey = "MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEwGWFaJ9DfFEOerfs9ONP9nPozdJmpQ+tTy2xUknp8YVJnx/93dWXbRI6oGEwAVY26zWMcNPLtd8ekbPWbfSjUA==";
String str = "大家好";
String encryptData = Fx.crypto.getECC().encrypt(publicKey, str);
Groovy举例:
String publicKey = "MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEwGWFaJ9DfFEOerfs9ONP9nPozdJmpQ+tTy2xUknp8YVJnx/93dWXbRI6oGEwAVY26zWMcNPLtd8ekbPWbfSjUA=="
String str = "大家好";
String encryptData = Fx.crypto.ECC.encrypt(publicKey, str);
2. ECC解密
decrypt(<String privateKey>, <String data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
privateKey | String | 解密私钥,生成的算法为ECC,格式为Base64, PKCS8标准存储 |
data | String | 需要加密的数据 |
返回值类型
String
返回值说明
返回的数据类型: String
Java举例
String publicKey = "MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEwGWFaJ9DfFEOerfs9ONP9nPozdJmpQ+tTy2xUknp8YVJnx/93dWXbRI6oGEwAVY26zWMcNPLtd8ekbPWbfSjUA==";
String str = "大家好";
String encryptData = Fx.crypto.getECC().encrypt(publicKey, str);
Groovy举例:
String privateKey = "MD4CAQAwEAYHKoZIzj0CAQYFK4EEAAoEJzAlAgEBBCA1IMt9uJOEdW7kB69aTDmSRdxbpESSDUhNd9/d8hM5lw=="
String encryptData = Fx.crypto.ECC.encrypt(publicKey, str);
String decryptData = Fx.crypto.ECC.decrypt(privateKey, encryptData);
3. ECC签名
sign(<String privateKey>, <String data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
privateKey | String | 签名私钥,生成的算法为ECC,格式为Base64, PKCS8标准存储 |
data | String | 需要加密的数据 |
返回值类型
String
返回值说明
返回的数据类型: String
Java举例
String privateKey = "MD4CAQAwEAYHKoZIzj0CAQYFK4EEAAoEJzAlAgEBBCA1IMt9uJOEdW7kB69aTDmSRdxbpESSDUhNd9/d8hM5lw==";
String data = "hello world";
String sign = Fx.crypto.getECC().sign(privateKey, data);
Groovy举例:
String privateKey = "MD4CAQAwEAYHKoZIzj0CAQYFK4EEAAoEJzAlAgEBBCA1IMt9uJOEdW7kB69aTDmSRdxbpESSDUhNd9/d8hM5lw=="
String data = "hello world"
String sign = Fx.crypto.ECC.sign(privateKey, data);
4. ECC验签
verifySign(<String publicKey>, <String sign>, <String data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
publicKey | String | 验签公钥,生成的算法为ECC,格式为Base64,X.509标准存储 |
sign | String | 签名后的内容 |
data | String | 原始内容 |
返回值类型
boolean
返回值说明
返回的数据类型: boolean
Java举例
String publicKey = "MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEwGWFaJ9DfFEOerfs9ONP9nPozdJmpQ+tTy2xUknp8YVJnx/93dWXbRI6oGEwAVY26zWMcNPLtd8ekbPWbfSjUA==";
String privateKey = "MD4CAQAwEAYHKoZIzj0CAQYFK4EEAAoEJzAlAgEBBCA1IMt9uJOEdW7kB69aTDmSRdxbpESSDUhNd9/d8hM5lw==";
String data = "hello world";
String sign = Fx.crypto.getECC().sign(privateKey, data);
log.info(Fx.crypto.getECC().verifySign(publicKey, sign, data));
Groovy举例:
String publicKey = "MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEwGWFaJ9DfFEOerfs9ONP9nPozdJmpQ+tTy2xUknp8YVJnx/93dWXbRI6oGEwAVY26zWMcNPLtd8ekbPWbfSjUA=="
String privateKey = "MD4CAQAwEAYHKoZIzj0CAQYFK4EEAAoEJzAlAgEBBCA1IMt9uJOEdW7kB69aTDmSRdxbpESSDUhNd9/d8hM5lw=="
String data = "hello world"
String sign = Fx.crypto.ECC.sign(privateKey, data);
log.info(Fx.crypto.ECC.verifySign(publicKey, sign, data));
参考类 com.fxiaoke.functions.api.RSAAPI
1. RSA加密
encrypt(<java.lang.String publicKey>, <java.lang.String data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
publicKey | String | 公钥 |
data | String | 需要加密的数据 |
返回值类型
java.lang.String
返回值说明
返回的数据类型: String
Java举例
String publicKey =
"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyVTOYRGyEZ2gjY+N4bsH" +
"suSjy/WevRi5X7MXklwpcyHdIYGrw8si+PoGnGivMhL/tfmOAglAeVviF+QeebDs" +
"6kKXwHB/PacSgx82Q4yQFS2UNfLOG6WQNIlPHZ1094cDFlVdcjxCSYcvgoBLZaws" +
"GelKmnjk1cBUhleeZElKLPj7mF3yq4hehNewUv5W/eByUCZ0CUqnWFnKPJ/xUYqX" +
"Fuvqx20cNYKhjAPKgDcKbNBGCKJW2uu1MMyDrxr5MKkn5gsDZ/P7AI0yy4UVbQ5C" +
"qG4rfuAJZ/WZ7fx9PrGEUBYt0NX33tcXAO/denOwMp9N5HgJlJGlJzJ7esx/ex3K" +
"wwIDAQAB";
String originalContent = "原始内容";
String text = Fx.crypto.getRSA().encrypt(publicKey,originalContent);
Fx.log.info(text);
Groovy举例:
String publicKey =
"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyVTOYRGyEZ2gjY+N4bsH" +
"suSjy/WevRi5X7MXklwpcyHdIYGrw8si+PoGnGivMhL/tfmOAglAeVviF+QeebDs" +
"6kKXwHB/PacSgx82Q4yQFS2UNfLOG6WQNIlPHZ1094cDFlVdcjxCSYcvgoBLZaws" +
"GelKmnjk1cBUhleeZElKLPj7mF3yq4hehNewUv5W/eByUCZ0CUqnWFnKPJ/xUYqX" +
"Fuvqx20cNYKhjAPKgDcKbNBGCKJW2uu1MMyDrxr5MKkn5gsDZ/P7AI0yy4UVbQ5C" +
"qG4rfuAJZ/WZ7fx9PrGEUBYt0NX33tcXAO/denOwMp9N5HgJlJGlJzJ7esx/ex3K" +
"wwIDAQAB"
String originalContent = "原始内容"
String text = Fx.crypto.RSA.encrypt(publicKey,originalContent)
Fx.log.info(text)
2. RSA解密
decrypt(<java.lang.String privateKey>, <java.lang.String data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
privateKey | String | 私钥 |
data | String | 需要解密的数据 |
返回值类型
java.lang.String
返回值说明
返回的数据类型: String
Java举例
String privateKey =
"MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDJVM5hEbIRnaCN" +
"j43huwey5KPL9Z69GLlfsxeSXClzId0hgavDyyL4+gacaK8yEv+1+Y4CCUB5W+IX" +
"5B55sOzqQpfAcH89pxKDHzZDjJAVLZQ18s4bpZA0iU8dnXT3hwMWVV1yPEJJhy+C" +
"gEtlrCwZ6UqaeOTVwFSGV55kSUos+PuYXfKriF6E17BS/lb94HJQJnQJSqdYWco8" +
"n/FRipcW6+rHbRw1gqGMA8qANwps0EYIolba67UwzIOvGvkwqSfmCwNn8/sAjTLL" +
"hRVtDkKobit+4Aln9Znt/H0+sYRQFi3Q1ffe1xcA7916c7Ayn03keAmUkaUnMnt6" +
"zH97HcrDAgMBAAECggEASEA9/AncrIOz3Xl6AlsbTTDOM2DHAbeAtv5PZD/cxCuP" +
"7vlZCd+5gj4/5xuOW9sDl2uiccqeL68wuUAtS6CZtQwG55G3qAlwFEw8LgugnWkI" +
"+j9ThgppcOEh2k/qbPYvvnEOIvPLGhYAj8W4yRj7jqTxF/RwsuDdtIR3HChNDUv+" +
"DX4SNWbAeyjceT4k/2bnO/+nFnylxLj9j+DajKy869APQk+4wmT8o/lEC/+MX2Uy" +
"IlC3YBGGwABJBIetAhj0RJi+6yjMk4GBnSGVPH1ehGy+cGTC6pFIupK+xYsGbd6S" +
"/XJo+3GEfnpUq8E9ZrCpPym0wjFJYIeL6sztaJnKgQKBgQDnGJU3XJYAdh7EpIHQ" +
"+yMtJPNIKZrZy4MZhWAPZRz6jwPocWlzg2B/jF4jydOlmccyXRGzqNyhSpYOxq7W" +
"uawVk2XEfqMCBnWBt/3j452gTQXkq1UQ/jLT/qZRvvzhbCun3uX9OdBWS3V4em6E" +
"yYi4SECaaGcdBY1jA5P6kElygwKBgQDfBxS+XKPpMvcOHrlSzXWQol47FA50Wx6S" +
"DgIE+lBmp+sylZe8ONBdnX0jQO9Ce75x3J/eY7dsnZxRC2B7ZW6H6pjt7ex0RBNk" +
"EfVjK7ykjttlXh2CX+WiT3oeY/DOz8pAU1deiUPAgIwR4ffbEgfhNQo1bf88lPhp" +
"+nMnR8XSwQKBgEA4EJ9F11lhecNjg7+zSl8tOX4AMcv8Rf49ligxDRCD1a4udgNn" +
"qtVHCJIhb/NA/J3+RwEKF+WqeHC6vbNl/XAxecJU/q99ZAIcQy2k/xSg0tZs1kLW" +
"oQFQbp+g1109VhRcWMU5369bYNWOEFBOQPQU//7orF7gQB4XzHOAzShJAoGAcUj+" +
"f2c9FvH9Td3LUsTsJ6hh5u5cHTw/ff7BhdfDyTEYJdyYc1IEfNjHPIX6QjHq3Zks" +
"V2EdRX2VbhEyU9uE1mMShSCqT7BYjScWFuabbpbl2EqDALtHQDfQluk640HmwN/U" +
"bD+a+4gQHfFC3bL976XqZpNV52bf+6zsmxI46MECgYA7auynp1+IUSrzF4sFtKfd" +
"YaPGn82p+PdDVKoA6hnjrIwnC5k6nR7XfSRyVt2n9myQYufoZs9WHwwme9FXEPYd" +
"qzJTqkMMtqh4jsGK1Uz95uUm3F0wZtvd0W17CrL9eR6My00oKXGcEMWJ+iGg7BSo" +
"JvxtK9uvc7rTlcbqxqD3dw==";
String text = "大家好dgahd212";
String t3 = Fx.crypto.getRSA().decrypt(privateKey, text);
log.info(t3);
Groovy举例:
String privateKey =
"MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDJVM5hEbIRnaCN" +
"j43huwey5KPL9Z69GLlfsxeSXClzId0hgavDyyL4+gacaK8yEv+1+Y4CCUB5W+IX" +
"5B55sOzqQpfAcH89pxKDHzZDjJAVLZQ18s4bpZA0iU8dnXT3hwMWVV1yPEJJhy+C" +
"gEtlrCwZ6UqaeOTVwFSGV55kSUos+PuYXfKriF6E17BS/lb94HJQJnQJSqdYWco8" +
"n/FRipcW6+rHbRw1gqGMA8qANwps0EYIolba67UwzIOvGvkwqSfmCwNn8/sAjTLL" +
"hRVtDkKobit+4Aln9Znt/H0+sYRQFi3Q1ffe1xcA7916c7Ayn03keAmUkaUnMnt6" +
"zH97HcrDAgMBAAECggEASEA9/AncrIOz3Xl6AlsbTTDOM2DHAbeAtv5PZD/cxCuP" +
"7vlZCd+5gj4/5xuOW9sDl2uiccqeL68wuUAtS6CZtQwG55G3qAlwFEw8LgugnWkI" +
"+j9ThgppcOEh2k/qbPYvvnEOIvPLGhYAj8W4yRj7jqTxF/RwsuDdtIR3HChNDUv+" +
"DX4SNWbAeyjceT4k/2bnO/+nFnylxLj9j+DajKy869APQk+4wmT8o/lEC/+MX2Uy" +
"IlC3YBGGwABJBIetAhj0RJi+6yjMk4GBnSGVPH1ehGy+cGTC6pFIupK+xYsGbd6S" +
"/XJo+3GEfnpUq8E9ZrCpPym0wjFJYIeL6sztaJnKgQKBgQDnGJU3XJYAdh7EpIHQ" +
"+yMtJPNIKZrZy4MZhWAPZRz6jwPocWlzg2B/jF4jydOlmccyXRGzqNyhSpYOxq7W" +
"uawVk2XEfqMCBnWBt/3j452gTQXkq1UQ/jLT/qZRvvzhbCun3uX9OdBWS3V4em6E" +
"yYi4SECaaGcdBY1jA5P6kElygwKBgQDfBxS+XKPpMvcOHrlSzXWQol47FA50Wx6S" +
"DgIE+lBmp+sylZe8ONBdnX0jQO9Ce75x3J/eY7dsnZxRC2B7ZW6H6pjt7ex0RBNk" +
"EfVjK7ykjttlXh2CX+WiT3oeY/DOz8pAU1deiUPAgIwR4ffbEgfhNQo1bf88lPhp" +
"+nMnR8XSwQKBgEA4EJ9F11lhecNjg7+zSl8tOX4AMcv8Rf49ligxDRCD1a4udgNn" +
"qtVHCJIhb/NA/J3+RwEKF+WqeHC6vbNl/XAxecJU/q99ZAIcQy2k/xSg0tZs1kLW" +
"oQFQbp+g1109VhRcWMU5369bYNWOEFBOQPQU//7orF7gQB4XzHOAzShJAoGAcUj+" +
"f2c9FvH9Td3LUsTsJ6hh5u5cHTw/ff7BhdfDyTEYJdyYc1IEfNjHPIX6QjHq3Zks" +
"V2EdRX2VbhEyU9uE1mMShSCqT7BYjScWFuabbpbl2EqDALtHQDfQluk640HmwN/U" +
"bD+a+4gQHfFC3bL976XqZpNV52bf+6zsmxI46MECgYA7auynp1+IUSrzF4sFtKfd" +
"YaPGn82p+PdDVKoA6hnjrIwnC5k6nR7XfSRyVt2n9myQYufoZs9WHwwme9FXEPYd" +
"qzJTqkMMtqh4jsGK1Uz95uUm3F0wZtvd0W17CrL9eR6My00oKXGcEMWJ+iGg7BSo" +
"JvxtK9uvc7rTlcbqxqD3dw=="
String text = "大家好dgahd212"
String t3 = Fx.crypto.RSA.decrypt(privateKey, text)
log.info(t3)
3. RSA签名
sign(<java.lang.String algorithm>, <java.lang.String privateKey>, <java.lang.String data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
algorithm | String | RSA算法 |
privateKey | String | 私钥 |
data | String | 需要签名的数据 |
返回值类型
java.lang.String
返回值说明
返回的数据类型: String
Java举例
String privateKey =
"MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDJVM5hEbIRnaCN" +
"j43huwey5KPL9Z69GLlfsxeSXClzId0hgavDyyL4+gacaK8yEv+1+Y4CCUB5W+IX" +
"5B55sOzqQpfAcH89pxKDHzZDjJAVLZQ18s4bpZA0iU8dnXT3hwMWVV1yPEJJhy+C" +
"gEtlrCwZ6UqaeOTVwFSGV55kSUos+PuYXfKriF6E17BS/lb94HJQJnQJSqdYWco8" +
"n/FRipcW6+rHbRw1gqGMA8qANwps0EYIolba67UwzIOvGvkwqSfmCwNn8/sAjTLL" +
"hRVtDkKobit+4Aln9Znt/H0+sYRQFi3Q1ffe1xcA7916c7Ayn03keAmUkaUnMnt6" +
"zH97HcrDAgMBAAECggEASEA9/AncrIOz3Xl6AlsbTTDOM2DHAbeAtv5PZD/cxCuP" +
"7vlZCd+5gj4/5xuOW9sDl2uiccqeL68wuUAtS6CZtQwG55G3qAlwFEw8LgugnWkI" +
"+j9ThgppcOEh2k/qbPYvvnEOIvPLGhYAj8W4yRj7jqTxF/RwsuDdtIR3HChNDUv+" +
"DX4SNWbAeyjceT4k/2bnO/+nFnylxLj9j+DajKy869APQk+4wmT8o/lEC/+MX2Uy" +
"IlC3YBGGwABJBIetAhj0RJi+6yjMk4GBnSGVPH1ehGy+cGTC6pFIupK+xYsGbd6S" +
"/XJo+3GEfnpUq8E9ZrCpPym0wjFJYIeL6sztaJnKgQKBgQDnGJU3XJYAdh7EpIHQ" +
"+yMtJPNIKZrZy4MZhWAPZRz6jwPocWlzg2B/jF4jydOlmccyXRGzqNyhSpYOxq7W" +
"uawVk2XEfqMCBnWBt/3j452gTQXkq1UQ/jLT/qZRvvzhbCun3uX9OdBWS3V4em6E" +
"yYi4SECaaGcdBY1jA5P6kElygwKBgQDfBxS+XKPpMvcOHrlSzXWQol47FA50Wx6S" +
"DgIE+lBmp+sylZe8ONBdnX0jQO9Ce75x3J/eY7dsnZxRC2B7ZW6H6pjt7ex0RBNk" +
"EfVjK7ykjttlXh2CX+WiT3oeY/DOz8pAU1deiUPAgIwR4ffbEgfhNQo1bf88lPhp" +
"+nMnR8XSwQKBgEA4EJ9F11lhecNjg7+zSl8tOX4AMcv8Rf49ligxDRCD1a4udgNn" +
"qtVHCJIhb/NA/J3+RwEKF+WqeHC6vbNl/XAxecJU/q99ZAIcQy2k/xSg0tZs1kLW" +
"oQFQbp+g1109VhRcWMU5369bYNWOEFBOQPQU//7orF7gQB4XzHOAzShJAoGAcUj+" +
"f2c9FvH9Td3LUsTsJ6hh5u5cHTw/ff7BhdfDyTEYJdyYc1IEfNjHPIX6QjHq3Zks" +
"V2EdRX2VbhEyU9uE1mMShSCqT7BYjScWFuabbpbl2EqDALtHQDfQluk640HmwN/U" +
"bD+a+4gQHfFC3bL976XqZpNV52bf+6zsmxI46MECgYA7auynp1+IUSrzF4sFtKfd" +
"YaPGn82p+PdDVKoA6hnjrIwnC5k6nR7XfSRyVt2n9myQYufoZs9WHwwme9FXEPYd" +
"qzJTqkMMtqh4jsGK1Uz95uUm3F0wZtvd0W17CrL9eR6My00oKXGcEMWJ+iGg7BSo" +
"JvxtK9uvc7rTlcbqxqD3dw==";
String signText = "原始内容";
String ret = Fx.crypto.getRSA().sign("SHA256", privateKey, signText);
Groovy举例:
String privateKey =
"MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDJVM5hEbIRnaCN" +
"j43huwey5KPL9Z69GLlfsxeSXClzId0hgavDyyL4+gacaK8yEv+1+Y4CCUB5W+IX" +
"5B55sOzqQpfAcH89pxKDHzZDjJAVLZQ18s4bpZA0iU8dnXT3hwMWVV1yPEJJhy+C" +
"gEtlrCwZ6UqaeOTVwFSGV55kSUos+PuYXfKriF6E17BS/lb94HJQJnQJSqdYWco8" +
"n/FRipcW6+rHbRw1gqGMA8qANwps0EYIolba67UwzIOvGvkwqSfmCwNn8/sAjTLL" +
"hRVtDkKobit+4Aln9Znt/H0+sYRQFi3Q1ffe1xcA7916c7Ayn03keAmUkaUnMnt6" +
"zH97HcrDAgMBAAECggEASEA9/AncrIOz3Xl6AlsbTTDOM2DHAbeAtv5PZD/cxCuP" +
"7vlZCd+5gj4/5xuOW9sDl2uiccqeL68wuUAtS6CZtQwG55G3qAlwFEw8LgugnWkI" +
"+j9ThgppcOEh2k/qbPYvvnEOIvPLGhYAj8W4yRj7jqTxF/RwsuDdtIR3HChNDUv+" +
"DX4SNWbAeyjceT4k/2bnO/+nFnylxLj9j+DajKy869APQk+4wmT8o/lEC/+MX2Uy" +
"IlC3YBGGwABJBIetAhj0RJi+6yjMk4GBnSGVPH1ehGy+cGTC6pFIupK+xYsGbd6S" +
"/XJo+3GEfnpUq8E9ZrCpPym0wjFJYIeL6sztaJnKgQKBgQDnGJU3XJYAdh7EpIHQ" +
"+yMtJPNIKZrZy4MZhWAPZRz6jwPocWlzg2B/jF4jydOlmccyXRGzqNyhSpYOxq7W" +
"uawVk2XEfqMCBnWBt/3j452gTQXkq1UQ/jLT/qZRvvzhbCun3uX9OdBWS3V4em6E" +
"yYi4SECaaGcdBY1jA5P6kElygwKBgQDfBxS+XKPpMvcOHrlSzXWQol47FA50Wx6S" +
"DgIE+lBmp+sylZe8ONBdnX0jQO9Ce75x3J/eY7dsnZxRC2B7ZW6H6pjt7ex0RBNk" +
"EfVjK7ykjttlXh2CX+WiT3oeY/DOz8pAU1deiUPAgIwR4ffbEgfhNQo1bf88lPhp" +
"+nMnR8XSwQKBgEA4EJ9F11lhecNjg7+zSl8tOX4AMcv8Rf49ligxDRCD1a4udgNn" +
"qtVHCJIhb/NA/J3+RwEKF+WqeHC6vbNl/XAxecJU/q99ZAIcQy2k/xSg0tZs1kLW" +
"oQFQbp+g1109VhRcWMU5369bYNWOEFBOQPQU//7orF7gQB4XzHOAzShJAoGAcUj+" +
"f2c9FvH9Td3LUsTsJ6hh5u5cHTw/ff7BhdfDyTEYJdyYc1IEfNjHPIX6QjHq3Zks" +
"V2EdRX2VbhEyU9uE1mMShSCqT7BYjScWFuabbpbl2EqDALtHQDfQluk640HmwN/U" +
"bD+a+4gQHfFC3bL976XqZpNV52bf+6zsmxI46MECgYA7auynp1+IUSrzF4sFtKfd" +
"YaPGn82p+PdDVKoA6hnjrIwnC5k6nR7XfSRyVt2n9myQYufoZs9WHwwme9FXEPYd" +
"qzJTqkMMtqh4jsGK1Uz95uUm3F0wZtvd0W17CrL9eR6My00oKXGcEMWJ+iGg7BSo" +
"JvxtK9uvc7rTlcbqxqD3dw=="
String signText = "原始内容"
def ret = Fx.crypto.RSA.sign("SHA256",privateKey,signText)
4. RSA验签
verifySign(<java.lang.String algorithm>, <java.lang.String publicKey>, <java.lang.String sign>, <java.lang.String data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
algorithm | String | RSA算法 |
publicKey | String | 公钥 |
sign | String | 签名后的内容 |
data | String | 原始内容 |
返回值类型
boolean
返回值说明
返回的数据类型: boolean
Java举例
String publicKey =
"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyVTOYRGyEZ2gjY+N4bsH" +
"suSjy/WevRi5X7MXklwpcyHdIYGrw8si+PoGnGivMhL/tfmOAglAeVviF+QeebDs" +
"6kKXwHB/PacSgx82Q4yQFS2UNfLOG6WQNIlPHZ1094cDFlVdcjxCSYcvgoBLZaws" +
"GelKmnjk1cBUhleeZElKLPj7mF3yq4hehNewUv5W/eByUCZ0CUqnWFnKPJ/xUYqX" +
"Fuvqx20cNYKhjAPKgDcKbNBGCKJW2uu1MMyDrxr5MKkn5gsDZ/P7AI0yy4UVbQ5C" +
"qG4rfuAJZ/WZ7fx9PrGEUBYt0NX33tcXAO/denOwMp9N5HgJlJGlJzJ7esx/ex3K" +
"wwIDAQAB";
String signText = "BBmnxSmZkALrte4LotZ5agcUpQnxUt61/NzditHQDav37Mfv5rwUwzPRxiM6HdgKqFhEk1oPcJTiDRNqLwVe6YMM2nuENSaY/fuAfJRoicNHC8ggkVN0+TjM3NH3yLI8R1Mj5TIwLWjnUDo88IUL1smV6/xmnJ9yqlpPplq7z7Df9p4uYw4rdUpf6YYSyWcVDlHTYFd/+MEA6rWCewaeTV32ElYRw4TUG0iO7GdgqSmkWmzr/G1EYNAegD3anRA+dGTzigjH1tUkzQB08SANuXNSZ0wz6VHp5wsUyLWYHbzTrz3vS+xJczhrLkHh04IrBINfv/5EWaeTD5Rc7Y0g8Q==";
String orgText = "原始内容";
boolean ret = Fx.crypto.getRSA().verifySign("SHA256", publicKey, signText, orgText);
log.info(ret);
Groovy举例:
String publicKey =
"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyVTOYRGyEZ2gjY+N4bsH" +
"suSjy/WevRi5X7MXklwpcyHdIYGrw8si+PoGnGivMhL/tfmOAglAeVviF+QeebDs" +
"6kKXwHB/PacSgx82Q4yQFS2UNfLOG6WQNIlPHZ1094cDFlVdcjxCSYcvgoBLZaws" +
"GelKmnjk1cBUhleeZElKLPj7mF3yq4hehNewUv5W/eByUCZ0CUqnWFnKPJ/xUYqX" +
"Fuvqx20cNYKhjAPKgDcKbNBGCKJW2uu1MMyDrxr5MKkn5gsDZ/P7AI0yy4UVbQ5C" +
"qG4rfuAJZ/WZ7fx9PrGEUBYt0NX33tcXAO/denOwMp9N5HgJlJGlJzJ7esx/ex3K" +
"wwIDAQAB"
String signText = """BBmnxSmZkALrte4LotZ5agcUpQnxUt61/NzditHQDav37Mfv5rwUwzPRxiM6HdgKqFhEk1oPcJTiDRNqLwVe6YMM2nuENSaY/fuAfJRoicNHC8ggkVN0+TjM3NH3yLI8R1Mj5TIwLWjnUDo88IUL1smV6/xmnJ9yqlpPplq7z7Df9p4uYw4rdUpf6YYSyWcVDlHTYFd/+MEA6rWCewaeTV32ElYRw4TUG0iO7GdgqSmkWmzr/G1EYNAegD3anRA+dGTzigjH1tUkzQB08SANuXNSZ0wz6VHp5wsUyLWYHbzTrz3vS+xJczhrLkHh04IrBINfv/5EWaeTD5Rc7Y0g8Q=="""
String orgText = """原始内容"""
def ret = Fx.crypto.RSA.verifySign("SHA256", publicKey, signText, orgText)
log.info(ret)
参考类 com.fxiaoke.functions.api.HexAPI
1. Hex编码
encode(<byte[] data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
data | byte[] | 需要编码的数据 |
返回值类型
String
返回值说明
返回的数据类型: String
Java举例
byte[] data = Strings.toUTF8Bytes("123qeq&8|=23");
log.info(Fx.crypto.getHex().encode(data));
Groovy举例:
byte[] data = Strings.toUTF8Bytes("123qeq&8|=23")
log.info(Fx.crypto.hex.encode(data))
2. Hex编码
decode(<String data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
data | String | 需要解码的数据 |
返回值类型
byte[]
返回值说明
返回的数据类型: byte[]
Java举例
byte[] data = Fx.crypto.getHex().decode("31323371657126387c3d3233");
Groovy举例:
byte[] data = Fx.crypto.hex.decode("31323371657126387c3d3233")
参考类 com.fxiaoke.functions.api.HmacAPI
1. Hmac加密
encrypt(<java.lang.String algorithm>, <java.lang.String secret>, <java.lang.String content>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
algorithm | String | 加密算法 |
secret | String | 秘钥 |
content | String | 需要加密码的数据 |
返回值类型
byte[]
返回值说明
返回的数据类型: byte[]
Java举例
String algorithm = "HmacMD5";
String secret = "123";
String content = "大家好";
byte[] data = Fx.crypto.getHmac().encrypt(algorithm, secret, content);
Groovy举例:
String algorithm = "HmacMD5"
String secret = '123'
String content = '大家好'
byte[] data = Fx.crypto.hmac.encrypt(algorithm, secret, content)
注意事项
- 支持的加密算法 HmacMD5,HmacSHA1,HmacSHA256,HmacSHA384,HmacSHA512
2. Hmac加密
encrypt(<java.lang.String algorithm>, <byte[] secret>, <java.lang.String content>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
algorithm | String | 加密算法 |
secret | byte[] | 秘钥 |
content | String | 需要加密码的数据 |
返回值类型
byte[]
返回值说明
返回的数据类型: byte[]
Java举例
String algorithm = "HmacMD5";
byte[] secret = {1, 2, 3};
String content = "大家好";
byte[] data = Fx.crypto.getHmac().encrypt(algorithm, secret, content);
log.info(data);
Groovy举例:
String algorithm = "HmacMD5"
byte[] secret = [1, 2, 3]
String content = '大家好'
byte[] data = Fx.crypto.hmac.encrypt(algorithm, secret, content)
log.info(data)
参考类 com.fxiaoke.functions.api.SymmetryAPI
1. 对称加密,iv类型为String
encrypt(<java.lang.String algorithm>, <byte[] key>, <byte[] data>, <java.lang.String iv>, <java.lang.String mode>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
algorithm | String | 对称加密算法 |
key | byte[] | 秘钥 |
data | byte[] | 需要加密的数据 |
iv | String | 可选参数,向量 |
mode | String | 可选参数, 加密与填充模式 |
返回值类型
byte[]
返回值说明
返回的数据类型: byte[]
Java举例
byte[] input = Strings.toUTF8Bytes("原始内容12341");
byte[] key1 = Strings.toUTF8Bytes("1234567890abcdef"); //秘钥长度16个字节
byte[] e1 = Fx.crypto.getSymmetry().encrypt("AES", key1, input);
byte[] d1 = Fx.crypto.getSymmetry().decrypt("AES", key1, e1);
log.info(Strings.toUTF8String(d1));
Groovy举例:
byte[] input = Strings.toUTF8Bytes("原始内容12341")
byte[] key1 = Strings.toUTF8Bytes("1234567890abcdef") //秘钥长度16个字节
byte[] e1 = Fx.crypto.symmetry.encrypt("AES", key1, input)
byte[] d1 = Fx.crypto.symmetry.decrypt("AES", key1, e1)
log.info(Strings.toUTF8String(d1))
注意事项
- 支持的加密算法 AES\DES\3DES
2. 对称加密,iv类型为byte[]
encrypt(<java.lang.String algorithm>, <byte[] key>, <byte[] data>, <byte[] iv>, <java.lang.String mode>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
algorithm | String | |
key | byte[] | 秘钥 |
data | byte[] | 需要加密的数据 |
iv | byte[] | 可选参数,向量 |
mode | String | 加密与填充模式 |
返回值类型
byte[]
返回值说明
返回的数据类型: byte[]
Java举例
byte[] input = Strings.toUTF8Bytes("原始内容12341");
byte[] iv = {18, 52, 86, 120, -112, -85, -51, -17, 18, 52, 86, 120, -112, -85, -51, -17};
String mode = "AES/CBC/PKCS5Padding";
byte[] key1 = Strings.toUTF8Bytes("1234567890abcdef"); //秘钥长度16个字节
byte[] e1 = Fx.crypto.getSymmetry().encrypt("AES", key1, input, iv, mode);
byte[] d1 = Fx.crypto.getSymmetry().decrypt("AES", key1, e1, iv, mode);
log.info(Strings.toUTF8String(d1));
Groovy举例:
byte[] input = Strings.toUTF8Bytes("原始内容12341")
byte[] iv = [18, 52, 86, 120, -112, -85, -51, -17, 18, 52, 86, 120, -112, -85, -51, -17]
String mode = "AES/CBC/PKCS5Padding"
byte[] key1 = Strings.toUTF8Bytes("1234567890abcdef") //秘钥长度16个字节
byte[] e1 = Fx.crypto.symmetry.encrypt("AES", key1, input, iv, mode)
byte[] d1 = Fx.crypto.symmetry.decrypt("AES", key1, e1, iv, mode)
log.info(Strings.toUTF8String(d1))
3. 对称解密,iv类型为String
decrypt(<java.lang.String algorithm>, <byte[] key>, <byte[] data>, <java.lang.String iv>, <java.lang.String mode>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
algorithm | String | 对称加密算法 |
key | byte[] | 秘钥 |
data | byte[] | 需要加密的数据 |
iv | String | 可选参数,向量 |
mode | String | 可选参数, 加密与填充模式 |
返回值类型
byte[]
返回值说明
返回的数据类型: byte[]
Java举例
byte[] input = Strings.toUTF8Bytes("原始内容12341");
String iv = "NIfb&95GUY86Gfgh";
String mode = "AES/CBC/PKCS5Padding";
byte[] key1 = Strings.toUTF8Bytes("1234567890abcdef"); //秘钥长度16个字节;
byte[] e1 = Fx.crypto.getSymmetry().encrypt("AES", key1, input, iv, mode);
byte[] d1 = Fx.crypto.getSymmetry().decrypt("AES", key1, e1, iv, mode);
log.info(Strings.toUTF8String(d1));
Groovy举例:
byte[] input = Strings.toUTF8Bytes("原始内容12341")
String iv = "NIfb&95GUY86Gfgh"
String mode = "AES/CBC/PKCS5Padding"
byte[] key1 = Strings.toUTF8Bytes("1234567890abcdef") //秘钥长度16个字节
byte[] e1 = Fx.crypto.symmetry.encrypt("AES", key1, input, iv, mode)
byte[] d1 = Fx.crypto.symmetry.decrypt("AES", key1, e1, iv, mode)
log.info(Strings.toUTF8String(d1))
4. 对称解密,iv类型为byte[]
decrypt(<java.lang.String algorithm>, <byte[] key>, <byte[] data>, <byte[] iv>, <java.lang.String mode>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
algorithm | String | |
key | byte[] | 秘钥 |
data | byte[] | 需要加密的数据 |
iv | byte[] | 可选参数,向量 |
mode | String | 加密与填充模式 |
返回值类型
byte[]
返回值说明
返回的数据类型: byte[]
Java举例
byte[] input = Strings.toUTF8Bytes("原始内容12341");
byte[] iv = {18, 52, 86, 120, -112, -85, -51, -17, 18, 52, 86, 120, -112, -85, -51, -17};
String mode = "AES/CBC/PKCS5Padding";
byte[] key1 = Strings.toUTF8Bytes("1234567890abcdef"); //秘钥长度16个字节
byte[] e1 = Fx.crypto.getSymmetry().encrypt("AES", key1, input, iv, mode);
byte[] d1 = Fx.crypto.getSymmetry().decrypt("AES", key1, e1, iv, mode);
log.info(Strings.toUTF8String(d1));
Groovy举例:
byte[] input = Strings.toUTF8Bytes("原始内容12341")
byte[] iv = [18, 52, 86, 120, -112, -85, -51, -17, 18, 52, 86, 120, -112, -85, -51, -17]
String mode = "AES/CBC/PKCS5Padding"
byte[] key1 = Strings.toUTF8Bytes("1234567890abcdef") //秘钥长度16个字节
byte[] e1 = Fx.crypto.symmetry.encrypt("AES", key1, input, iv, mode)
byte[] d1 = Fx.crypto.symmetry.decrypt("AES", key1, e1, iv, mode)
log.info(Strings.toUTF8String(d1))
参考类 com.fxiaoke.functions.api.SM4API
1. SM4加密
encrypt(<java.lang.String key>, <java.lang.String data>, <java.lang.String mode>, <java.lang.String iv>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
key | String | 秘钥 |
data | String | 需要加密的数据 |
mode | String | 加密与填充模式 |
iv | String | 可选参数,向量 |
返回值类型
byte[]
返回值说明
返回的数据类型: byte[]
Java举例
byte[] data = Fx.crypto.getSM4().encrypt("1234567812345678", "SM4UtilsTest", "SM4/CBC/PKCS5Padding", "8765432187654321");
Groovy举例:
byte[] data = Fx.crypto.SM4.encrypt("1234567812345678", "SM4UtilsTest", "SM4/CBC/PKCS5Padding", "8765432187654321")
注意事项
- 支持的加密算法 AES\DES\3DES
2. SM4解密
decrypt(<java.lang.String key>, <byte[] data>, <java.lang.String mode>, <java.lang.String iv>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
key | String | 秘钥 |
data | byte[] | 需要加密的数据 |
mode | String | 加密与填充模式 |
iv | String | 可选参数,向量 |
返回值类型
byte[]
返回值说明
返回的数据类型: byte[]
Java举例
byte[] bts = {-127, 51, 92, -41, -14, 16, 27, 23, -122, -6, 98, 10, -6, 89, 94, 17};
byte[] data = Fx.crypto.getSM4().decrypt("1234567812345678", bts, "SM4/CBC/PKCS5Padding", "8765432187654321");
Groovy举例:
byte[] data = Fx.crypto.SM4.decrypt("1234567812345678", [-127, 51, 92, -41, -14, 16, 27, 23, -122, -6, 98, 10, -6, 89, 94, 17] as byte[] , "SM4/CBC/PKCS5Padding", "8765432187654321")
注意事项
- 支持的加密算法 AES\DES\3DES
参考类 com.fxiaoke.functions.api.SM2API
1. SM2加密
encode(<String input>, <String pubKey>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
input | String | 需要加密的数据 |
pubKey | String | 加密的公钥(Hex格式) |
返回值类型
String
返回值说明
返回的数据类型: String 加密后的数据(Base64格式)
Java举例
String data = Fx.crypto.getSM2().encode("123456", "04e02df2e298eb9f1069905e6fd9f73bb74a2fe7c7d3a74952b7d3929a6ff7992f2d91e36ccb3c2b6a0860945ecfe68ffca181558e823280ab8fd9356893832c97");
Groovy举例:
String data = Fx.crypto.SM2.encode("123456", "04e02df2e298eb9f1069905e6fd9f73bb74a2fe7c7d3a74952b7d3929a6ff7992f2d91e36ccb3c2b6a0860945ecfe68ffca181558e823280ab8fd9356893832c97")
2. SM2解密
decode(<String input>, <String prvKey>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
input | String | 要解密的数据(Base64格式) |
prvKey | String | 私钥(Hex格式) |
返回值类型
String
返回值说明
返回的数据类型: String 解密后的数据
Java举例
String data = Fx.crypto.getSM2().decode("BG1xk/v7swEtrOX1MgExNwX9ZFdn7dwBI4WjTAYL7k0eZhRNCgNMqfCfa6nHC4o9XjqXTXYeZivhc9/I7qRNOQ4OW3cTonPKW5yKmpxL/dmi+AH3VYawq9GSJXsvtnCgrbqIWbI2Iw==", "2e8b0080a153226d5e01903def442677ba6667e15732334619d22a3591f1869c");
Groovy举例:
String data = Fx.crypto.SM2.decode("BG1xk/v7swEtrOX1MgExNwX9ZFdn7dwBI4WjTAYL7k0eZhRNCgNMqfCfa6nHC4o9XjqXTXYeZivhc9/I7qRNOQ4OW3cTonPKW5yKmpxL/dmi+AH3VYawq9GSJXsvtnCgrbqIWbI2Iw==", "2e8b0080a153226d5e01903def442677ba6667e15732334619d22a3591f1869c")
3. SM2加签
sign(<String privteKey>, <String body>, <String mode>, <String userId>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
privteKey | String | 私钥(Hex格式) |
body | String | 需要加签的字符串 |
mode | String | 签名算法模式 |
userId | String | 国密要求,要求加入签名者id |
返回值类型
String
返回值说明
返回的数据类型: String 签名后的数据(当mode为SM3withSM2时是Hex格式,为SM2时是Base64格式)
Java举例
String data = Fx.crypto.getSM2().sign("2e8b0080a153226d5e01903def442677ba6667e15732334619d22a3591f1869c", "test", "SM3withSM2", "1234567812345678");
Groovy举例:
String data = Fx.crypto.SM2.sign("2e8b0080a153226d5e01903def442677ba6667e15732334619d22a3591f1869c", "test", "SM3withSM2", "1234567812345678")
注意事项
- 支持加签的算法支持 SM3withSM2, SM2两种
4. SM2验签
verify(<String publicKeyStr>, <String msgStr>, <String signatureStr>, <String mode>, <String userId>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
publicKeyStr | String | 公钥(Hex格式字符串) |
msgStr | String | 明文 |
signatureStr | String | 密文 (当mode为SM3withSM2时是Hex格式,为SM2时是Base64格式) |
mode | String | 签名模式 |
userId | String | 国密要求,要求加入签名者id |
返回值类型
boolean
返回值说明
返回的数据类型: boolean 是否验签成功
Java举例
boolean success = Fx.crypto.getSM2().verify("04e02df2e298eb9f1069905e6fd9f73bb74a2fe7c7d3a74952b7d3929a6ff7992f2d91e36ccb3c2b6a0860945ecfe68ffca181558e823280ab8fd9356893832c97", "test", "7629a68b2f5dea4c3fea82718a136a039db9fb9f9cd45aa70ecd5af06e80f22190a64a67bc0b8d1b8c808eb9b70af9676e81a582d020b7b94dce6410870a4ba6", "SM3withSM2", "1234567812345678")
Groovy举例:
boolean success = Fx.crypto.SM2.verify("04e02df2e298eb9f1069905e6fd9f73bb74a2fe7c7d3a74952b7d3929a6ff7992f2d91e36ccb3c2b6a0860945ecfe68ffca181558e823280ab8fd9356893832c97", "test", "7629a68b2f5dea4c3fea82718a136a039db9fb9f9cd45aa70ecd5af06e80f22190a64a67bc0b8d1b8c808eb9b70af9676e81a582d020b7b94dce6410870a4ba6", "SM3withSM2", "1234567812345678")
注意事项
- 验签支持SM2,SM3withSM2两种模式
- 支持加签的算法支持 SM3withSM2, SM2两种
参考类 com.fxiaoke.functions.api.SM3API
1. sm3加签
encrypt(<String data>, <String key>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
data | String | 需要加签的字符串 |
key | String | 秘钥,可选参数 |
返回值类型
String
返回值说明
返回的数据类型: String
Java举例
String data = Fx.crypto.getSM3().encrypt("想加密的数据");
Groovy举例:
String data = Fx.crypto.SM3.encrypt("想加密的数据")
2. sm3验签
verify(<String str>, <String hexString>, <String key>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
str | String | 之前数据 |
hexString | String | 加密后数据 |
key | String | 秘钥,可选参数 |
返回值类型
boolean
返回值说明
返回的数据类型: boolean
Java举例
boolean isVerify = Fx.crypto.getSM3().verify("加密前的数据","加密后的数据");
Groovy举例:
boolean isVerify = Fx.crypto.SM3.verify("加密前的数据","加密后的数据")