Fx.crypto

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("加密前的数据","加密后的数据")
2024-05-16
0 3