public class SmUtil extends Object
封装包括:
Modifier and Type | Field and Description |
---|---|
static org.bouncycastle.asn1.ASN1ObjectIdentifier |
ID_SM2_PUBLIC_KEY_PARAM
SM2国密算法公钥参数的Oid标识
|
static String |
SM2_CURVE_NAME
SM2默认曲线
|
static org.bouncycastle.crypto.params.ECDomainParameters |
SM2_DOMAIN_PARAMS
SM2推荐曲线参数(来自https://github.com/ZZMarquis/gmhelper)
|
Constructor and Description |
---|
SmUtil() |
Modifier and Type | Method and Description |
---|---|
static byte[] |
changeC1C2C3ToC1C3C2(byte[] c1c2c3,
org.bouncycastle.crypto.params.ECDomainParameters ecDomainParameters)
bc加解密使用旧标c1||c2||c3,此方法在加密后调用,将结果转化为c1||c3||c2
|
static byte[] |
changeC1C3C2ToC1C2C3(byte[] c1c3c2,
org.bouncycastle.crypto.params.ECDomainParameters ecDomainParameters)
bc加解密使用旧标c1||c3||c2,此方法在解密前调用,将密文转化为c1||c2||c3再去解密
|
static MacEngine |
createHmacSm3Engine(byte[] key)
创建HmacSM3算法的
MacEngine |
static HMac |
hmacSm3(byte[] key)
HmacSM3算法实现
|
static byte[] |
rsAsn1ToPlain(byte[] rsDer)
BC的SM3withSM2签名得到的结果的rs是asn1格式的,这个方法转化成直接拼接r||s
|
static byte[] |
rsPlainToAsn1(byte[] sign)
BC的SM3withSM2验签需要的rs是asn1格式的,这个方法将直接拼接r||s的字节数组转化成asn1格式
|
static SM2 |
sm2()
创建SM2算法对象
生成新的私钥公钥对 |
static SM2 |
sm2(byte[] privateKey,
byte[] publicKey)
创建SM2算法对象
私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密 |
static SM2 |
sm2(org.bouncycastle.crypto.params.ECPrivateKeyParameters privateKeyParams,
org.bouncycastle.crypto.params.ECPublicKeyParameters publicKeyParams)
创建SM2算法对象
私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密 |
static SM2 |
sm2(PrivateKey privateKey,
PublicKey publicKey)
创建SM2算法对象
私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密 |
static SM2 |
sm2(String privateKeyStr,
String publicKeyStr)
创建SM2算法对象
私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密 |
static SM3 |
sm3()
SM3加密
例: SM3加密:sm3().digest(data) SM3加密并转为16进制字符串:sm3().digestHex(data) |
static String |
sm3(File dataFile)
SM3加密文件,生成16进制SM3字符串
|
static String |
sm3(InputStream data)
SM3加密,生成16进制SM3字符串
|
static String |
sm3(String data)
SM3加密,生成16进制SM3字符串
|
static SM3 |
sm3WithSalt(byte[] salt)
SM3加密,可以传入盐
|
static SM4 |
sm4()
SM4加密,生成随机KEY。
|
static SM4 |
sm4(byte[] key)
SM4加密
例: SM4加密:sm4(key).encrypt(data) SM4解密:sm4(key).decrypt(data) |
public static final String SM2_CURVE_NAME
public static final org.bouncycastle.crypto.params.ECDomainParameters SM2_DOMAIN_PARAMS
public static final org.bouncycastle.asn1.ASN1ObjectIdentifier ID_SM2_PUBLIC_KEY_PARAM
public static SM2 sm2(String privateKeyStr, String publicKeyStr)
privateKeyStr
- 私钥Hex或Base64表示publicKeyStr
- 公钥Hex或Base64表示SM2
public static SM2 sm2(byte[] privateKey, byte[] publicKey)
privateKey
- 私钥,必须使用PKCS#8规范publicKey
- 公钥,必须使用X509规范SM2
public static SM2 sm2(PrivateKey privateKey, PublicKey publicKey)
privateKey
- 私钥publicKey
- 公钥SM2
public static SM2 sm2(org.bouncycastle.crypto.params.ECPrivateKeyParameters privateKeyParams, org.bouncycastle.crypto.params.ECPublicKeyParameters publicKeyParams)
privateKeyParams
- 私钥参数publicKeyParams
- 公钥参数SM2
public static SM3 sm3()
SM3
public static SM3 sm3WithSalt(byte[] salt)
salt
- 加密盐SM3
public static String sm3(InputStream data)
data
- 数据public static String sm3(File dataFile)
dataFile
- 被加密文件public static SM4 sm4()
SymmetricCrypto
对象或者使用相同KEYSM4加密:sm4().encrypt(data) SM4解密:sm4().decrypt(data)
SymmetricCrypto
public static SM4 sm4(byte[] key)
SM4加密:sm4(key).encrypt(data) SM4解密:sm4(key).decrypt(data)
key
- 密钥SM4
public static byte[] changeC1C2C3ToC1C3C2(byte[] c1c2c3, org.bouncycastle.crypto.params.ECDomainParameters ecDomainParameters)
c1c2c3
- 加密后的bytes,顺序为C1C2C3ecDomainParameters
- ECDomainParameters
public static byte[] changeC1C3C2ToC1C2C3(byte[] c1c3c2, org.bouncycastle.crypto.params.ECDomainParameters ecDomainParameters)
c1c3c2
- 加密后的bytes,顺序为C1C3C2ecDomainParameters
- ECDomainParameters
public static byte[] rsAsn1ToPlain(byte[] rsDer)
rsDer
- rs in asn1 formatpublic static byte[] rsPlainToAsn1(byte[] sign)
sign
- in plain byte arraypublic static MacEngine createHmacSm3Engine(byte[] key)
MacEngine
key
- 密钥MacEngine
Copyright © 2024. All rights reserved.