- Fx.crypto
- 参考类
- com.fxiaoke.functions.api.MD5API
- com.fxiaoke.functions.api.DESedeAPI
- com.fxiaoke.functions.api.Base64API
- com.fxiaoke.functions.api.SHA1API
- com.fxiaoke.functions.api.URLAPI
- com.fxiaoke.functions.api.SHAAPI
- com.fxiaoke.functions.api.ECCAPI
- com.fxiaoke.functions.api.RSAAPI
- com.fxiaoke.functions.api.HexAPI
- com.fxiaoke.functions.api.HmacAPI
- com.fxiaoke.functions.api.SymmetryAPI
- com.fxiaoke.functions.api.SM4API
- com.fxiaoke.functions.api.SM2API
- com.fxiaoke.functions.api.SM3API
Fx.crypto
Fx.crypto:和加解密,编码解码相关的API
1. MD5
Fx.crypto.getMD5()
返回值类型
MD5API
(1).参考MD5API
2. DESede
Fx.crypto.getDESede()
返回值类型
DESedeAPI
(1).参考DESedeAPI
3. Base64
Fx.crypto.getBase64()
返回值类型
Base64API
(1).参考Base64API
4. SHA1
Fx.crypto.getSHA1()
返回值类型
SHA1API
(1).参考SHA1API
5. URL编码解码
Fx.crypto.getURL()
返回值类型
URLAPI
(1).参考URLAPI
6. SHA
Fx.crypto.getSHA()
返回值类型
SHAAPI
(1).参考SHAAPI
7. ECC算法
Fx.crypto.getECC()
返回值类型
ECCAPI
(1).参考ECCAPI
8. RSA算法
Fx.crypto.getRSA()
返回值类型
RSAAPI
(1).参考RSAAPI
9. HEX
Fx.crypto.getHex()
返回值类型
HexAPI
(1).参考HexAPI
10. HMAC
Fx.crypto.getHmac()
返回值类型
HmacAPI
(1).参考HmacAPI
11. 对称算法集合
Fx.crypto.getSymmetry()
返回值类型
SymmetryAPI
(1).参考SymmetryAPI
12. SM4中国对称加密算法
Fx.crypto.getSM4()
返回值类型
SM4API
(1).参考SM4API
13. SM2中国非对称加密算法
Fx.crypto.getSM2()
返回值类型
SM2API
(1).参考SM2API
14. SM3中国数据签名算法
Fx.crypto.getSM3()
返回值类型
SM3API
(1).参考SM3API
参考类 com.fxiaoke.functions.api.MD5API
1. 对输入字节进行MD5摘要运算,并对byte[]运算结果进行16进制转字符串编码
encode(<byte[] data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
data | byte[] | 需要运算的数据 |
返回值类型
java.lang.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(<java.lang.String data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
data | String | 需要运算的数据 |
返回值类型
java.lang.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", [-26, -74, -89, -3, 116, 71, -6, -26] as byte[])
参考类 com.fxiaoke.functions.api.Base64API
1. Base64编码
encode(<byte[] data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
data | byte[] | 需要编码的数据 |
返回值类型
java.lang.String
返回值说明
String
Java举例
byte[] bts = {1, 2, 3};
Fx.crypto.getBase64().encode(bts);
Groovy举例:
Fx.crypto.base64.encode([1] as byte[])
2. Base64解码
decode(<java.lang.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")
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(<java.lang.String data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
data | String | 需要编码的数据 |
返回值类型
com.fxiaoke.functions.model.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(<java.lang.String data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
data | String | 需要解码的数据 |
返回值类型
com.fxiaoke.functions.model.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(<java.lang.String publicKey>, <java.lang.String data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
publicKey | String | 加密公钥,生成的算法为ECC,格式为Base64,X.509标准存储 |
data | String | 需要加密的数据 |
返回值类型
java.lang.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(<java.lang.String privateKey>, <java.lang.String data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
privateKey | String | 解密私钥,生成的算法为ECC,格式为Base64, PKCS8标准存储 |
data | String | 需要加密的数据 |
返回值类型
java.lang.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(<java.lang.String privateKey>, <java.lang.String data>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
privateKey | String | 签名私钥,生成的算法为ECC,格式为Base64, PKCS8标准存储 |
data | String | 需要加密的数据 |
返回值类型
java.lang.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(<java.lang.String publicKey>, <java.lang.String sign>, <java.lang.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. 对称加密
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. SM4加密
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. 对称解密
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. SM4加密
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 | 加密的公钥 |
返回值类型
String
返回值说明
String
Java举例
String data = Fx.crypto.getSM2().encode("想加密的数据", "公钥")
Groovy举例:
String data = Fx.crypto.SM2.encode("想加密的数据", "公钥")
2. SM2解密
decode(<String input>, <String prvKey>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
input | String | 要解密的数据 |
prvKey | String | 私钥 |
返回值类型
String
返回值说明
String
Java举例
String data = Fx.crypto.getSM2().decode("想解密的数据", "公钥")
Groovy举例:
String data = Fx.crypto.SM2.decode("想解密的数据", "私钥")
3. SM2加签
sign(<String privteKey>, <String body>, <String mode>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
privteKey | String | 私钥 |
body | String | 需要加签的字符串 |
mode | String | 签名算法模式 |
返回值类型
String
返回值说明
String
Java举例
String data = Fx.crypto.getSM2().sign( "私钥","想加密的数据","SM3withSM2")
Groovy举例:
String data = Fx.crypto.SM2.sign( "私钥","想加密的数据","SM3withSM2")
注意事项
- 支持加签的算法支持 SM3withSM2, SM2两种
4. 获取密钥对
getKeys()
返回值类型
String[]
返回值说明
String[]
Java举例
String[] keys = Fx.crypto.getSM2().getKeys()
Groovy举例:
String[] keys = Fx.crypto.SM2.getKeys()
注意事项
- 随机获取公钥和私钥对,第一个是私钥,第二个是公钥
- 支持加签的算法支持 SM3withSM2, SM2两种
5. SM2验签
verify(<String publicKeyStr>, <String msgStr>, <String signatureStr>, <String mode>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
publicKeyStr | String | 公钥 |
msgStr | String | 明文 |
signatureStr | String | 密文 |
mode | String | 签名模式 |
返回值类型
boolean
返回值说明
boolean
Java举例
boolean data = Fx.crypto.getSM2().verify("公钥字符串","加签前的信息","加签后的密文","SM3withSM2")
Groovy举例:
boolean data = Fx.crypto.SM2.verify("公钥字符串","加签前的信息","加签后的密文","SM3withSM2")
注意事项
- 验签支持SM2,SM3withSM2两种模式
- 支持加签的算法支持 SM3withSM2, SM2两种
参考类 com.fxiaoke.functions.api.SM3API
1. sm3无钥加签
encrypt(<java.lang.String body>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
body | String | 需要加签的字符串 |
返回值类型
java.lang.String
返回值说明
String
Java举例
String data = Fx.crypto.getSM3().encrypt("想加密的数据")
Groovy举例:
String data = Fx.crypto.SM3.encrypt("想加密的数据")
2. sm3无钥验签
verify(<java.lang.String str>, <java.lang.String hexString>)
参数说明
参数 | 类型 | 说明 |
---|---|---|
str | String | 之前数据 |
hexString | String | 加密后数据 |
返回值类型
boolean
返回值说明
boolean
Java举例
boolean isVerify = Fx.crypto.getSM3().verify("加密前的数据","加密后的数据")
Groovy举例:
boolean isVerify = Fx.crypto.SM3.verify("加密前的数据","加密后的数据")