public class SM2 extends AbstractAsymmetricCrypto<SM2>
国密算法包括:
| Modifier and Type | Field and Description |
|---|---|
protected org.bouncycastle.crypto.engines.SM2Engine |
engine |
protected org.bouncycastle.crypto.signers.SM2Signer |
signer |
algorithm, lock, privateKey, publicKey| Constructor and Description |
|---|
SM2()
构造,生成新的随机私钥公钥对
|
SM2(byte[] privateKey,
byte[] publicKey)
构造
私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密 |
SM2(byte[] privateKeyDValue,
byte[] publicKeyPointX,
byte[] publicKeyPointY)
构造
私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密 |
SM2(org.bouncycastle.crypto.params.ECPrivateKeyParameters privateKeyParams,
org.bouncycastle.crypto.params.ECPublicKeyParameters publicKeyParams)
构造
私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密 |
SM2(PrivateKey privateKey,
PublicKey publicKey)
构造
私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密 |
SM2(String privateKeyStr,
String publicKeyStr)
构造
私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密 |
SM2(String privateKeyDValue,
String publicKeyPointXHex,
String publicKeyPointYHex)
构造
私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密 |
| Modifier and Type | Method and Description |
|---|---|
byte[] |
decrypt(byte[] data)
使用私钥解密
|
byte[] |
decrypt(byte[] data,
org.bouncycastle.crypto.CipherParameters privateKeyParameters)
解密
|
byte[] |
decrypt(byte[] data,
KeyType keyType)
解密
|
byte[] |
decrypt(InputStream in)
使用私钥解密
|
byte[] |
decrypt(String data)
使用私钥解密
|
String |
decryptStr(String data)
使用私钥解密
|
String |
decryptStr(String data,
Charset charset)
使用私钥解密
|
byte[] |
encrypt(byte[] data)
使用公钥加密,SM2非对称加密的结果由C1,C3,C2三部分组成,其中:
C1 生成随机数的计算出的椭圆曲线点
C3 SM3的摘要值
C2 密文数据
|
byte[] |
encrypt(byte[] data,
org.bouncycastle.crypto.CipherParameters pubKeyParameters)
加密,SM2非对称加密的结果由C1,C2,C3三部分组成,其中:
C1 生成随机数的计算出的椭圆曲线点
C2 密文数据
C3 SM3的摘要值
|
byte[] |
encrypt(byte[] data,
KeyType keyType)
加密,SM2非对称加密的结果由C1,C3,C2三部分组成,其中:
C1 生成随机数的计算出的椭圆曲线点
C3 SM3的摘要值
C2 密文数据
|
byte[] |
encrypt(InputStream in)
使用公钥加密,SM2非对称加密的结果由C1,C3,C2三部分组成,其中:
C1 生成随机数的计算出的椭圆曲线点
C3 SM3的摘要值
C2 密文数据
|
byte[] |
encrypt(String data)
使用公钥加密,SM2非对称加密的结果由C1,C3,C2三部分组成,其中:
C1 生成随机数的计算出的椭圆曲线点
C3 SM3的摘要值
C2 密文数据
|
String |
encryptBase64(byte[] data)
使用公钥加密,SM2非对称加密的结果由C1,C3,C2三部分组成,其中:
C1 生成随机数的计算出的椭圆曲线点
C3 SM3的摘要值
C2 密文数据
|
String |
encryptBase64(InputStream in)
使用公钥加密,SM2非对称加密的结果由C1,C3,C2三部分组成,其中:
C1 生成随机数的计算出的椭圆曲线点
C3 SM3的摘要值
C2 密文数据
|
String |
encryptBase64(String data)
使用公钥加密,SM2非对称加密的结果由C1,C3,C2三部分组成,其中:
C1 生成随机数的计算出的椭圆曲线点
C3 SM3的摘要值
C2 密文数据
|
byte[] |
getD()
获得私钥D值(编码后的私钥)
|
BigInteger |
getDBigInteger()
获得私钥D值
|
String |
getDHex()
获得私钥D值(编码后的私钥)
|
byte[] |
getQ(boolean isCompressed)
获得公钥Q值(编码后的公钥)
|
SM2 |
init()
初始化
私钥和公钥同时为空时生成一对新的私钥和公钥 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密(签名)或者解密(校验) |
SM2 |
initKeys()
生成随机公钥和私钥
|
SM2 |
setDigest(org.bouncycastle.crypto.Digest digest)
设置Hash算法
|
SM2 |
setEncoding(org.bouncycastle.crypto.signers.DSAEncoding encoding)
设置DSA signatures的编码
|
SM2 |
setMode(org.bouncycastle.crypto.engines.SM2Engine.Mode mode)
设置SM2模式,旧版是C1C2C3,新版本是C1C3C2
|
SM2 |
setPrivateKey(PrivateKey privateKey)
设置私钥
|
SM2 |
setPrivateKeyParams(org.bouncycastle.crypto.params.ECPrivateKeyParameters privateKeyParams)
设置私钥参数
|
SM2 |
setPublicKey(PublicKey publicKey)
设置公钥
|
SM2 |
setPublicKeyParams(org.bouncycastle.crypto.params.ECPublicKeyParameters publicKeyParams)
设置公钥参数
|
SM2 |
setRandom(SecureRandom random)
设置随机数生成器,可自定义随机数种子
|
SM2 |
setRemoveCompressedFlag(boolean removeCompressedFlag)
设置是否移除压缩标记,默认为false
移除后的密文兼容gmssl等库 |
byte[] |
sign(byte[] data)
用私钥对信息生成数字签名,签名格式为ASN1
* 在硬件签名中,返回结果为R+S,可以通过调用 SmUtil.rsAsn1ToPlain(byte[])方法转换之。 |
byte[] |
sign(byte[] data,
byte[] id)
用私钥对信息生成数字签名,签名格式为ASN1
在硬件签名中,返回结果为R+S,可以通过调用 SmUtil.rsAsn1ToPlain(byte[])方法转换之。 |
String |
signHex(byte[] data)
用私钥对信息生成数字签名
|
String |
signHex(byte[] data,
byte[] id)
用私钥对信息生成数字签名
|
String |
signHexFromHex(String dataHex)
用私钥对信息生成数字签名
|
String |
signHexFromHex(String dataHex,
String idHex)
用私钥对信息生成数字签名
|
SM2 |
usePlainEncoding()
设置DSA signatures的编码为PlainDSAEncoding
|
boolean |
verify(byte[] data,
byte[] sign)
用公钥检验数字签名的合法性
|
boolean |
verify(byte[] data,
byte[] sign,
byte[] id)
用公钥检验数字签名的合法性
|
boolean |
verifyHex(String dataHex,
String signHex)
用公钥检验数字签名的合法性
|
boolean |
verifyHex(String dataHex,
String signHex,
String idHex)
用公钥检验数字签名的合法性
|
getKeyByType, getPrivateKey, getPrivateKeyBase64, getPublicKey, getPublicKeyBase64, init, setKey, setLockclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitencrypt, encrypt, encrypt, encryptBase64, encryptBase64, encryptBase64, encryptBase64, encryptHex, encryptHex, encryptHex, encryptHexdecrypt, decrypt, decryptStr, decryptStrprotected org.bouncycastle.crypto.engines.SM2Engine engine
protected org.bouncycastle.crypto.signers.SM2Signer signer
public SM2()
public SM2(String privateKeyStr, String publicKeyStr)
privateKeyStr - 私钥Hex或Base64表示,必须使用PKCS#8规范publicKeyStr - 公钥Hex或Base64表示,必须使用X509规范public SM2(byte[] privateKey,
byte[] publicKey)
privateKey - 私钥,可以使用PKCS#8、D值或PKCS#1规范publicKey - 公钥,可以使用X509、Q值或PKCS#1规范public SM2(String privateKeyDValue, String publicKeyPointXHex, String publicKeyPointYHex)
privateKeyDValue - 私钥16进制(私钥D值)publicKeyPointXHex - 公钥X16进制publicKeyPointYHex - 公钥Y16进制public SM2(byte[] privateKeyDValue,
byte[] publicKeyPointX,
byte[] publicKeyPointY)
privateKeyDValue - 私钥(D值)publicKeyPointX - 公钥XpublicKeyPointY - 公钥Ypublic SM2(PrivateKey privateKey, PublicKey publicKey)
privateKey - 私钥publicKey - 公钥public SM2(org.bouncycastle.crypto.params.ECPrivateKeyParameters privateKeyParams,
org.bouncycastle.crypto.params.ECPublicKeyParameters publicKeyParams)
privateKeyParams - 私钥,可以为nullpublicKeyParams - 公钥,可以为nullpublic SM2 init()
public SM2 initKeys()
BaseAsymmetricinitKeys in class BaseAsymmetric<SM2>public String encryptBase64(String data)
C1 生成随机数的计算出的椭圆曲线点 C3 SM3的摘要值 C2 密文数据
data - 被加密的字符串,UTF8编码CryptoException - 包括InvalidKeyException和InvalidCipherTextException的包装异常public String encryptBase64(InputStream in) throws IORuntimeException
C1 生成随机数的计算出的椭圆曲线点 C3 SM3的摘要值 C2 密文数据
in - 被加密的数据流IORuntimeException - IO异常public String encryptBase64(byte[] data)
C1 生成随机数的计算出的椭圆曲线点 C3 SM3的摘要值 C2 密文数据
data - 被加密的bytespublic byte[] encrypt(String data)
C1 生成随机数的计算出的椭圆曲线点 C3 SM3的摘要值 C2 密文数据
data - 被加密的字符串,UTF8编码CryptoException - 包括InvalidKeyException和InvalidCipherTextException的包装异常public byte[] encrypt(InputStream in) throws IORuntimeException
C1 生成随机数的计算出的椭圆曲线点 C3 SM3的摘要值 C2 密文数据
in - 被加密的数据流IORuntimeException - IO异常public byte[] encrypt(byte[] data)
throws CryptoException
C1 生成随机数的计算出的椭圆曲线点 C3 SM3的摘要值 C2 密文数据
data - 被加密的bytesCryptoException - 包括InvalidKeyException和InvalidCipherTextException的包装异常public byte[] encrypt(byte[] data,
KeyType keyType)
throws CryptoException
C1 生成随机数的计算出的椭圆曲线点 C3 SM3的摘要值 C2 密文数据
data - 被加密的byteskeyType - 私钥或公钥 KeyTypeCryptoException - 包括InvalidKeyException和InvalidCipherTextException的包装异常public byte[] encrypt(byte[] data,
org.bouncycastle.crypto.CipherParameters pubKeyParameters)
throws CryptoException
C1 生成随机数的计算出的椭圆曲线点 C2 密文数据 C3 SM3的摘要值
data - 被加密的bytespubKeyParameters - 公钥参数CryptoException - 包括InvalidKeyException和InvalidCipherTextException的包装异常public String decryptStr(String data)
data - SM2密文数据,Hex(16进制)或Base64字符串public String decryptStr(String data, Charset charset)
data - SM2密文数据,Hex(16进制)或Base64字符串charset - 编码CryptoException - 包括InvalidKeyException和InvalidCipherTextException的包装异常public byte[] decrypt(InputStream in) throws IORuntimeException
in - 密文数据流IORuntimeException - IO异常public byte[] decrypt(String data)
data - SM2密文,实际包含三部分:ECC公钥、真正的密文、公钥和原文的SM3-HASH值public byte[] decrypt(byte[] data)
throws CryptoException
data - SM2密文,实际包含三部分:ECC公钥、真正的密文、公钥和原文的SM3-HASH值CryptoException - 包括InvalidKeyException和InvalidCipherTextException的包装异常public byte[] decrypt(byte[] data,
KeyType keyType)
throws CryptoException
data - SM2密文,实际包含三部分:ECC公钥、真正的密文、公钥和原文的SM3-HASH值keyType - 私钥或公钥 KeyTypeCryptoException - 包括InvalidKeyException和InvalidCipherTextException的包装异常public byte[] decrypt(byte[] data,
org.bouncycastle.crypto.CipherParameters privateKeyParameters)
throws CryptoException
data - SM2密文,实际包含三部分:ECC公钥、真正的密文、公钥和原文的SM3-HASH值privateKeyParameters - 私钥参数CryptoException - 包括InvalidKeyException和InvalidCipherTextException的包装异常public String signHexFromHex(String dataHex)
dataHex - 被签名的数据数据(Hex格式)public String signHexFromHex(String dataHex, String idHex)
dataHex - 被签名的数据数据(Hex格式)idHex - 可以为null,若为null,则默认withId为字节数组:"1234567812345678".getBytes()public String signHex(byte[] data)
data - 被签名的数据数据public String signHex(byte[] data, byte[] id)
data - 被签名的数据数据id - 可以为null,若为null,则默认withId为字节数组:"1234567812345678".getBytes()public byte[] sign(byte[] data)
SmUtil.rsAsn1ToPlain(byte[])方法转换之。data - 加密数据public byte[] sign(byte[] data,
byte[] id)
SmUtil.rsAsn1ToPlain(byte[])方法转换之。data - 被签名的数据数据id - 可以为null,若为null,则默认withId为字节数组:"1234567812345678".getBytes()public boolean verifyHex(String dataHex, String signHex)
dataHex - 后的数据signHex - 签名public boolean verify(byte[] data,
byte[] sign)
data - 数据sign - 签名public boolean verifyHex(String dataHex, String signHex, String idHex)
dataHex - 数据的Hex值signHex - 签名的Hex值idHex - ID的Hex值public boolean verify(byte[] data,
byte[] sign,
byte[] id)
data - 数据sign - 签名id - 可以为null,若为null,则默认withId为字节数组:"1234567812345678".getBytes()public SM2 setPrivateKey(PrivateKey privateKey)
BaseAsymmetricsetPrivateKey in class BaseAsymmetric<SM2>privateKey - 私钥public SM2 setPrivateKeyParams(org.bouncycastle.crypto.params.ECPrivateKeyParameters privateKeyParams)
privateKeyParams - 私钥参数public SM2 setPublicKey(PublicKey publicKey)
BaseAsymmetricsetPublicKey in class BaseAsymmetric<SM2>publicKey - 公钥public SM2 setPublicKeyParams(org.bouncycastle.crypto.params.ECPublicKeyParameters publicKeyParams)
publicKeyParams - 公钥参数public SM2 setRandom(SecureRandom random)
random - 随机数生成器,可自定义随机数种子public SM2 setRemoveCompressedFlag(boolean removeCompressedFlag)
removeCompressedFlag - 是否移除压缩标记public SM2 usePlainEncoding()
public SM2 setEncoding(org.bouncycastle.crypto.signers.DSAEncoding encoding)
encoding - DSAEncoding实现public SM2 setDigest(org.bouncycastle.crypto.Digest digest)
digest - Digest实现public SM2 setMode(org.bouncycastle.crypto.engines.SM2Engine.Mode mode)
mode - SM2Engine.Modepublic byte[] getD()
public String getDHex()
public BigInteger getDBigInteger()
public byte[] getQ(boolean isCompressed)
isCompressed - 是否压缩Copyright © 2025. All rights reserved.