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("加密前的数据","加密后的数据")

results matching ""

    No results matching ""