Class SM2AsymmetricAbstract
- java.lang.Object
-
- com.gitee.apanlh.util.algorithm.asymmetric.AsymmetricAbstract
-
- com.gitee.apanlh.util.algorithm.asymmetric.SM2AsymmetricAbstract
-
- All Implemented Interfaces:
AsymmetricKeyFormat,AsymmetricSign,CryptoOperation
- Direct Known Subclasses:
SM2
public abstract class SM2AsymmetricAbstract extends AsymmetricAbstract implements CryptoOperation, AsymmetricKeyFormat
SM2国密算法抽象类
默认算法为C1C3C2,默认曲线sm2p256v1
需要依赖BouncyCastleProvider库
C1:表示椭圆曲线上的一个点,用于进行签名或者加密过程中的一些运算
C2:表示加密的结果,即加密后的数据
C3:表示对数据的签名值,用于验证数据的完整性,不是加密过程中的一部分
线程安全类- Author:
- Pan
-
-
Field Summary
Fields Modifier and Type Field Description static StringCURVE_NAME默认国密曲线名称static org.bouncycastle.crypto.params.ECDomainParametersEC_DOMAIN_PARAMETERS国密椭圆曲线域参数,包含曲线参数、基点、阶及余因子static org.bouncycastle.asn1.x9.X9ECParametersEC_PARAMETERS国密曲线参数
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description AsymmetricKeycreateKeyObject()创建Key密钥对对象(可用于缓存)
默认Base64编码格式AsymmetricKeycreateKeyObject(boolean isBase64)创建Key密钥对对象(可用于缓存)
自定义编码格式(true:Base64, false:十六进制)byte[]doFinal(CipherMode cipherMode, byte[] content)最终执行加解密方法BigIntegergetD()获取私钥D值byte[]getDBytes()获取私钥D值org.bouncycastle.math.ec.ECPointgetEcPoint()获取公钥Q值byte[]getPrivateEncode()获取原始私钥字节数组byte[]getPrivateEncodeToBase64()将私钥编码Base64StringgetPrivateEncodeToBase64Str()将私钥编码Base64字符串StringgetPrivateEncodeToHex()将私钥编码十六进制字符串org.bouncycastle.crypto.params.ECPrivateKeyParametersgetPrivateKey()获取私钥ProvidergetProvider()获取Providerbyte[]getPublicEncode()获取原始公钥字节数组byte[]getPublicEncodeToBase64()将公钥编码Base64StringgetPublicEncodeToBase64Str()将公钥编码Base64字符串StringgetPublicEncodeToHex()将公钥编码十六进制字符串org.bouncycastle.crypto.params.ECPublicKeyParametersgetPublicKey()获取公钥byte[]getQ()获取公钥Q值byte[]getQ(boolean isCompress)获取公钥Q值abstract byte[]getUserId()获取用户idabstract booleangetWithRandom()判断签名时是否使用随机数byte[]sign(byte[] data)对数据进行签名booleanverify(byte[] data, byte[] signature)验证签名-
Methods inherited from class com.gitee.apanlh.util.algorithm.asymmetric.AsymmetricAbstract
decrypt, decryptFromBase64, decryptFromBase64, decryptFromBase64, decryptFromBase64, decryptFromBase64Str, decryptFromBase64Str, decryptFromBase64Str, decryptFromBase64Str, decryptFromHex, decryptFromHexStr, encrypt, encrypt, encryptToBase64, encryptToBase64, encryptToBase64, encryptToBase64, encryptToBase64Str, encryptToBase64Str, encryptToBase64Str, encryptToBase64Str, encryptToHex, encryptToHex, encryptToHex, encryptToHex, sign, signToBase64, signToBase64, signToBase64Str, signToBase64Str, signToBase64Str, signToBase64Str, signToHex, signToHex, verifyFromBase64, verifyFromBase64, verifyFromBase64, verifyFromBase64, verifyFromBase64, verifyFromBase64, verifyFromHex, verifyFromHex
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.gitee.apanlh.util.algorithm.crypto.CryptoOperation
decrypt, decryptFromBase64, decryptFromBase64, decryptFromBase64, decryptFromBase64, decryptFromBase64Str, decryptFromBase64Str, decryptFromBase64Str, decryptFromBase64Str, decryptFromHex, decryptFromHexStr, encrypt, encrypt, encryptToBase64, encryptToBase64, encryptToBase64, encryptToBase64, encryptToBase64Str, encryptToBase64Str, encryptToBase64Str, encryptToBase64Str, encryptToHex, encryptToHex, encryptToHex, encryptToHex
-
-
-
-
Field Detail
-
CURVE_NAME
public static final String CURVE_NAME
默认国密曲线名称- See Also:
- Constant Field Values
-
EC_PARAMETERS
public static final org.bouncycastle.asn1.x9.X9ECParameters EC_PARAMETERS
国密曲线参数
-
EC_DOMAIN_PARAMETERS
public static final org.bouncycastle.crypto.params.ECDomainParameters EC_DOMAIN_PARAMETERS
国密椭圆曲线域参数,包含曲线参数、基点、阶及余因子
-
-
Method Detail
-
getPublicKey
public org.bouncycastle.crypto.params.ECPublicKeyParameters getPublicKey()
获取公钥- Returns:
- ECPublicKeyParameters
-
getPrivateKey
public org.bouncycastle.crypto.params.ECPrivateKeyParameters getPrivateKey()
获取私钥- Returns:
- ECPrivateKeyParameters
-
getEcPoint
public org.bouncycastle.math.ec.ECPoint getEcPoint()
获取公钥Q值- Returns:
- ECPoint
-
getQ
public byte[] getQ()
获取公钥Q值- Returns:
- byte[]
-
getQ
public byte[] getQ(boolean isCompress)
获取公钥Q值- Parameters:
isCompress- 是否压缩- Returns:
- byte[]
-
getD
public BigInteger getD()
获取私钥D值- Returns:
- BigInteger
-
getDBytes
public byte[] getDBytes()
获取私钥D值- Returns:
- dBytes
-
getPublicEncode
public byte[] getPublicEncode()
Description copied from interface:AsymmetricKeyFormat获取原始公钥字节数组- Specified by:
getPublicEncodein interfaceAsymmetricKeyFormat- Returns:
- byte[]
-
getPublicEncodeToHex
public String getPublicEncodeToHex()
Description copied from interface:AsymmetricKeyFormat将公钥编码十六进制字符串- Specified by:
getPublicEncodeToHexin interfaceAsymmetricKeyFormat- Returns:
- String
-
getPublicEncodeToBase64
public byte[] getPublicEncodeToBase64()
Description copied from interface:AsymmetricKeyFormat将公钥编码Base64- Specified by:
getPublicEncodeToBase64in interfaceAsymmetricKeyFormat- Returns:
- byte[]
-
getPublicEncodeToBase64Str
public String getPublicEncodeToBase64Str()
Description copied from interface:AsymmetricKeyFormat将公钥编码Base64字符串- Specified by:
getPublicEncodeToBase64Strin interfaceAsymmetricKeyFormat- Returns:
- String
-
getPrivateEncode
public byte[] getPrivateEncode()
Description copied from interface:AsymmetricKeyFormat获取原始私钥字节数组- Specified by:
getPrivateEncodein interfaceAsymmetricKeyFormat- Returns:
- byte[]
-
getPrivateEncodeToHex
public String getPrivateEncodeToHex()
Description copied from interface:AsymmetricKeyFormat将私钥编码十六进制字符串- Specified by:
getPrivateEncodeToHexin interfaceAsymmetricKeyFormat- Returns:
- String
-
getPrivateEncodeToBase64
public byte[] getPrivateEncodeToBase64()
Description copied from interface:AsymmetricKeyFormat将私钥编码Base64- Specified by:
getPrivateEncodeToBase64in interfaceAsymmetricKeyFormat- Returns:
- String
-
getPrivateEncodeToBase64Str
public String getPrivateEncodeToBase64Str()
Description copied from interface:AsymmetricKeyFormat将私钥编码Base64字符串- Specified by:
getPrivateEncodeToBase64Strin interfaceAsymmetricKeyFormat- Returns:
- String
-
getProvider
public Provider getProvider()
Description copied from class:AsymmetricAbstract获取Provider- Specified by:
getProviderin classAsymmetricAbstract- Returns:
- Provider
-
getUserId
public abstract byte[] getUserId()
获取用户id- Returns:
- byte[]
-
getWithRandom
public abstract boolean getWithRandom()
判断签名时是否使用随机数- Returns:
- boolean
-
doFinal
public byte[] doFinal(CipherMode cipherMode, byte[] content)
最终执行加解密方法- Specified by:
doFinalin classAsymmetricAbstract- Parameters:
cipherMode- 加解密模式content- 加解密内容- Returns:
- byte[] 密文
-
sign
public byte[] sign(byte[] data)
Description copied from class:AsymmetricAbstract对数据进行签名- Specified by:
signin classAsymmetricAbstract- Parameters:
data- 待签名的原始数据(字节数组)- Returns:
- byte[] 签名值(字节数组)
-
verify
public boolean verify(byte[] data, byte[] signature)Description copied from class:AsymmetricAbstract验证签名- Specified by:
verifyin classAsymmetricAbstract- Parameters:
data- 原始数据signature- 签名值- Returns:
- boolean true表示验证通过
-
createKeyObject
public AsymmetricKey createKeyObject()
创建Key密钥对对象(可用于缓存)
默认Base64编码格式- Returns:
- AsymmetricKey
-
createKeyObject
public AsymmetricKey createKeyObject(boolean isBase64)
创建Key密钥对对象(可用于缓存)
自定义编码格式(true:Base64, false:十六进制)- Parameters:
isBase64- true:Base64, false:十六进制- Returns:
- AsymmetricKey
-
-