mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-04-19 03:01:48 +08:00
remove methods
This commit is contained in:
parent
ad7ec3ffaa
commit
c210e6be41
@ -12,12 +12,6 @@
|
|||||||
|
|
||||||
package org.dromara.hutool.crypto.asymmetric;
|
package org.dromara.hutool.crypto.asymmetric;
|
||||||
|
|
||||||
import org.dromara.hutool.core.lang.Assert;
|
|
||||||
import org.dromara.hutool.core.codec.HexUtil;
|
|
||||||
import org.dromara.hutool.crypto.bc.BCUtil;
|
|
||||||
import org.dromara.hutool.crypto.CryptoException;
|
|
||||||
import org.dromara.hutool.crypto.bc.ECKeyUtil;
|
|
||||||
import org.dromara.hutool.crypto.SecureUtil;
|
|
||||||
import org.bouncycastle.crypto.CipherParameters;
|
import org.bouncycastle.crypto.CipherParameters;
|
||||||
import org.bouncycastle.crypto.Digest;
|
import org.bouncycastle.crypto.Digest;
|
||||||
import org.bouncycastle.crypto.InvalidCipherTextException;
|
import org.bouncycastle.crypto.InvalidCipherTextException;
|
||||||
@ -33,6 +27,11 @@ import org.bouncycastle.crypto.signers.SM2Signer;
|
|||||||
import org.bouncycastle.crypto.signers.StandardDSAEncoding;
|
import org.bouncycastle.crypto.signers.StandardDSAEncoding;
|
||||||
import org.bouncycastle.util.BigIntegers;
|
import org.bouncycastle.util.BigIntegers;
|
||||||
import org.bouncycastle.util.encoders.Hex;
|
import org.bouncycastle.util.encoders.Hex;
|
||||||
|
import org.dromara.hutool.core.codec.HexUtil;
|
||||||
|
import org.dromara.hutool.core.lang.Assert;
|
||||||
|
import org.dromara.hutool.crypto.CryptoException;
|
||||||
|
import org.dromara.hutool.crypto.SecureUtil;
|
||||||
|
import org.dromara.hutool.crypto.bc.ECKeyUtil;
|
||||||
import org.dromara.hutool.crypto.bc.SmUtil;
|
import org.dromara.hutool.crypto.bc.SmUtil;
|
||||||
|
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
@ -104,8 +103,8 @@ public class SM2 extends AbstractAsymmetricCrypto<SM2> {
|
|||||||
*/
|
*/
|
||||||
public SM2(final byte[] privateKey, final byte[] publicKey) {
|
public SM2(final byte[] privateKey, final byte[] publicKey) {
|
||||||
this(
|
this(
|
||||||
ECKeyUtil.decodePrivateKeyParams(privateKey),
|
ECKeyUtil.decodePrivateKeyParams(privateKey),
|
||||||
ECKeyUtil.decodePublicKeyParams(publicKey)
|
ECKeyUtil.decodePublicKeyParams(publicKey)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -118,7 +117,7 @@ public class SM2 extends AbstractAsymmetricCrypto<SM2> {
|
|||||||
* @param publicKey 公钥
|
* @param publicKey 公钥
|
||||||
*/
|
*/
|
||||||
public SM2(final PrivateKey privateKey, final PublicKey publicKey) {
|
public SM2(final PrivateKey privateKey, final PublicKey publicKey) {
|
||||||
this(BCUtil.toParams(privateKey), BCUtil.toParams(publicKey));
|
this(ECKeyUtil.toPrivateParams(privateKey), ECKeyUtil.toPublicParams(publicKey));
|
||||||
if (null != privateKey) {
|
if (null != privateKey) {
|
||||||
this.privateKey = privateKey;
|
this.privateKey = privateKey;
|
||||||
}
|
}
|
||||||
@ -132,13 +131,13 @@ public class SM2 extends AbstractAsymmetricCrypto<SM2> {
|
|||||||
* 私钥和公钥同时为空时生成一对新的私钥和公钥<br>
|
* 私钥和公钥同时为空时生成一对新的私钥和公钥<br>
|
||||||
* 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密
|
* 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密
|
||||||
*
|
*
|
||||||
* @param privateKeyHex 私钥16进制
|
* @param privateKeyDValue 私钥16进制(私钥D值)
|
||||||
* @param publicKeyPointXHex 公钥X16进制
|
* @param publicKeyPointXHex 公钥X16进制
|
||||||
* @param publicKeyPointYHex 公钥Y16进制
|
* @param publicKeyPointYHex 公钥Y16进制
|
||||||
* @since 5.2.0
|
* @since 5.2.0
|
||||||
*/
|
*/
|
||||||
public SM2(final String privateKeyHex, final String publicKeyPointXHex, final String publicKeyPointYHex) {
|
public SM2(final String privateKeyDValue, final String publicKeyPointXHex, final String publicKeyPointYHex) {
|
||||||
this(BCUtil.toSm2Params(privateKeyHex), BCUtil.toSm2Params(publicKeyPointXHex, publicKeyPointYHex));
|
this(ECKeyUtil.toSm2PrivateParams(privateKeyDValue), ECKeyUtil.toSm2PublicParams(publicKeyPointXHex, publicKeyPointYHex));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -146,13 +145,14 @@ public class SM2 extends AbstractAsymmetricCrypto<SM2> {
|
|||||||
* 私钥和公钥同时为空时生成一对新的私钥和公钥<br>
|
* 私钥和公钥同时为空时生成一对新的私钥和公钥<br>
|
||||||
* 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密
|
* 私钥和公钥可以单独传入一个,如此则只能使用此钥匙来做加密或者解密
|
||||||
*
|
*
|
||||||
* @param privateKey 私钥
|
* @param privateKeyDValue 私钥(D值)
|
||||||
* @param publicKeyPointX 公钥X
|
* @param publicKeyPointX 公钥X
|
||||||
* @param publicKeyPointY 公钥Y
|
* @param publicKeyPointY 公钥Y
|
||||||
* @since 5.2.0
|
* @since 5.2.0
|
||||||
*/
|
*/
|
||||||
public SM2(final byte[] privateKey, final byte[] publicKeyPointX, final byte[] publicKeyPointY) {
|
public SM2(final byte[] privateKeyDValue, final byte[] publicKeyPointX, final byte[] publicKeyPointY) {
|
||||||
this(BCUtil.toSm2Params(privateKey), BCUtil.toSm2Params(publicKeyPointX, publicKeyPointY));
|
this(ECKeyUtil.toSm2PrivateParams(privateKeyDValue),
|
||||||
|
ECKeyUtil.toSm2PublicParams(publicKeyPointX, publicKeyPointY));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -182,8 +182,8 @@ public class SM2 extends AbstractAsymmetricCrypto<SM2> {
|
|||||||
public SM2 init() {
|
public SM2 init() {
|
||||||
if (null == this.privateKeyParams && null == this.publicKeyParams) {
|
if (null == this.privateKeyParams && null == this.publicKeyParams) {
|
||||||
super.initKeys();
|
super.initKeys();
|
||||||
this.privateKeyParams = BCUtil.toParams(this.privateKey);
|
this.privateKeyParams = ECKeyUtil.toPrivateParams(this.privateKey);
|
||||||
this.publicKeyParams = BCUtil.toParams(this.publicKey);
|
this.publicKeyParams = ECKeyUtil.toPublicParams(this.publicKey);
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@ -206,7 +206,7 @@ public class SM2 extends AbstractAsymmetricCrypto<SM2> {
|
|||||||
* C2 密文数据
|
* C2 密文数据
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @param data 被加密的bytes
|
* @param data 被加密的bytes
|
||||||
* @return 加密后的bytes
|
* @return 加密后的bytes
|
||||||
* @throws CryptoException 包括InvalidKeyException和InvalidCipherTextException的包装异常
|
* @throws CryptoException 包括InvalidKeyException和InvalidCipherTextException的包装异常
|
||||||
* @since 5.7.10
|
* @since 5.7.10
|
||||||
@ -270,7 +270,7 @@ public class SM2 extends AbstractAsymmetricCrypto<SM2> {
|
|||||||
/**
|
/**
|
||||||
* 使用私钥解密
|
* 使用私钥解密
|
||||||
*
|
*
|
||||||
* @param data SM2密文,实际包含三部分:ECC公钥、真正的密文、公钥和原文的SM3-HASH值
|
* @param data SM2密文,实际包含三部分:ECC公钥、真正的密文、公钥和原文的SM3-HASH值
|
||||||
* @return 加密后的bytes
|
* @return 加密后的bytes
|
||||||
* @throws CryptoException 包括InvalidKeyException和InvalidCipherTextException的包装异常
|
* @throws CryptoException 包括InvalidKeyException和InvalidCipherTextException的包装异常
|
||||||
* @since 5.7.10
|
* @since 5.7.10
|
||||||
@ -441,7 +441,7 @@ public class SM2 extends AbstractAsymmetricCrypto<SM2> {
|
|||||||
super.setPrivateKey(privateKey);
|
super.setPrivateKey(privateKey);
|
||||||
|
|
||||||
// 重新初始化密钥参数,防止重新设置密钥时导致密钥无法更新
|
// 重新初始化密钥参数,防止重新设置密钥时导致密钥无法更新
|
||||||
this.privateKeyParams = BCUtil.toParams(privateKey);
|
this.privateKeyParams = ECKeyUtil.toPrivateParams(privateKey);
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@ -463,7 +463,7 @@ public class SM2 extends AbstractAsymmetricCrypto<SM2> {
|
|||||||
super.setPublicKey(publicKey);
|
super.setPublicKey(publicKey);
|
||||||
|
|
||||||
// 重新初始化密钥参数,防止重新设置密钥时导致密钥无法更新
|
// 重新初始化密钥参数,防止重新设置密钥时导致密钥无法更新
|
||||||
this.publicKeyParams = BCUtil.toParams(publicKey);
|
this.publicKeyParams = ECKeyUtil.toPublicParams(publicKey);
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@ -535,7 +535,7 @@ public class SM2 extends AbstractAsymmetricCrypto<SM2> {
|
|||||||
* @since 5.5.9
|
* @since 5.5.9
|
||||||
*/
|
*/
|
||||||
public byte[] getD() {
|
public byte[] getD() {
|
||||||
return BigIntegers.asUnsignedByteArray(32,getDBigInteger());
|
return BigIntegers.asUnsignedByteArray(32, getDBigInteger());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -12,14 +12,10 @@
|
|||||||
|
|
||||||
package org.dromara.hutool.crypto.bc;
|
package org.dromara.hutool.crypto.bc;
|
||||||
|
|
||||||
import org.dromara.hutool.core.io.IORuntimeException;
|
|
||||||
import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
|
import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
|
||||||
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
|
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
|
||||||
import org.bouncycastle.asn1.x9.X9ECParameters;
|
import org.bouncycastle.asn1.x9.X9ECParameters;
|
||||||
import org.bouncycastle.crypto.params.AsymmetricKeyParameter;
|
|
||||||
import org.bouncycastle.crypto.params.ECDomainParameters;
|
import org.bouncycastle.crypto.params.ECDomainParameters;
|
||||||
import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
|
|
||||||
import org.bouncycastle.crypto.params.ECPublicKeyParameters;
|
|
||||||
import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPrivateKey;
|
import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPrivateKey;
|
||||||
import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKey;
|
import org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKey;
|
||||||
import org.bouncycastle.jcajce.provider.asymmetric.util.EC5Util;
|
import org.bouncycastle.jcajce.provider.asymmetric.util.EC5Util;
|
||||||
@ -27,12 +23,11 @@ import org.bouncycastle.jcajce.provider.asymmetric.util.ECUtil;
|
|||||||
import org.bouncycastle.jce.spec.ECNamedCurveSpec;
|
import org.bouncycastle.jce.spec.ECNamedCurveSpec;
|
||||||
import org.bouncycastle.jce.spec.ECParameterSpec;
|
import org.bouncycastle.jce.spec.ECParameterSpec;
|
||||||
import org.bouncycastle.math.ec.ECCurve;
|
import org.bouncycastle.math.ec.ECCurve;
|
||||||
import org.dromara.hutool.crypto.*;
|
import org.dromara.hutool.core.io.IORuntimeException;
|
||||||
|
import org.dromara.hutool.crypto.KeyUtil;
|
||||||
|
import org.dromara.hutool.crypto.SecureUtil;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
|
||||||
import java.math.BigInteger;
|
|
||||||
import java.security.Key;
|
|
||||||
import java.security.PrivateKey;
|
import java.security.PrivateKey;
|
||||||
import java.security.PublicKey;
|
import java.security.PublicKey;
|
||||||
import java.security.spec.ECPoint;
|
import java.security.spec.ECPoint;
|
||||||
@ -155,182 +150,6 @@ public class BCUtil {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 密钥转换为AsymmetricKeyParameter
|
|
||||||
*
|
|
||||||
* @param key PrivateKey或者PublicKey
|
|
||||||
* @return ECPrivateKeyParameters或者ECPublicKeyParameters
|
|
||||||
* @since 5.2.0
|
|
||||||
*/
|
|
||||||
public static AsymmetricKeyParameter toParams(final Key key) {
|
|
||||||
return ECKeyUtil.toParams(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 转换为 ECPrivateKeyParameters
|
|
||||||
*
|
|
||||||
* @param d 私钥d值
|
|
||||||
* @return ECPrivateKeyParameters
|
|
||||||
*/
|
|
||||||
public static ECPrivateKeyParameters toSm2Params(final String d) {
|
|
||||||
return ECKeyUtil.toSm2PrivateParams(d);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 转换为 ECPrivateKeyParameters
|
|
||||||
*
|
|
||||||
* @param dHex 私钥d值16进制字符串
|
|
||||||
* @param domainParameters ECDomainParameters
|
|
||||||
* @return ECPrivateKeyParameters
|
|
||||||
*/
|
|
||||||
public static ECPrivateKeyParameters toParams(final String dHex, final ECDomainParameters domainParameters) {
|
|
||||||
return ECKeyUtil.toPrivateParams(dHex, domainParameters);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 转换为 ECPrivateKeyParameters
|
|
||||||
*
|
|
||||||
* @param d 私钥d值
|
|
||||||
* @return ECPrivateKeyParameters
|
|
||||||
*/
|
|
||||||
public static ECPrivateKeyParameters toSm2Params(final byte[] d) {
|
|
||||||
return ECKeyUtil.toSm2PrivateParams(d);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 转换为 ECPrivateKeyParameters
|
|
||||||
*
|
|
||||||
* @param d 私钥d值
|
|
||||||
* @param domainParameters ECDomainParameters
|
|
||||||
* @return ECPrivateKeyParameters
|
|
||||||
*/
|
|
||||||
public static ECPrivateKeyParameters toParams(final byte[] d, final ECDomainParameters domainParameters) {
|
|
||||||
return ECKeyUtil.toPrivateParams(d, domainParameters);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 转换为 ECPrivateKeyParameters
|
|
||||||
*
|
|
||||||
* @param d 私钥d值
|
|
||||||
* @return ECPrivateKeyParameters
|
|
||||||
*/
|
|
||||||
public static ECPrivateKeyParameters toSm2Params(final BigInteger d) {
|
|
||||||
return ECKeyUtil.toSm2PrivateParams(d);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 转换为 ECPrivateKeyParameters
|
|
||||||
*
|
|
||||||
* @param d 私钥d值
|
|
||||||
* @param domainParameters ECDomainParameters
|
|
||||||
* @return ECPrivateKeyParameters
|
|
||||||
*/
|
|
||||||
public static ECPrivateKeyParameters toParams(final BigInteger d, final ECDomainParameters domainParameters) {
|
|
||||||
return ECKeyUtil.toPrivateParams(d, domainParameters);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 转换为ECPublicKeyParameters
|
|
||||||
*
|
|
||||||
* @param x 公钥X
|
|
||||||
* @param y 公钥Y
|
|
||||||
* @param domainParameters ECDomainParameters
|
|
||||||
* @return ECPublicKeyParameters
|
|
||||||
*/
|
|
||||||
public static ECPublicKeyParameters toParams(final BigInteger x, final BigInteger y, final ECDomainParameters domainParameters) {
|
|
||||||
return ECKeyUtil.toPublicParams(x, y, domainParameters);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 转换为SM2的ECPublicKeyParameters
|
|
||||||
*
|
|
||||||
* @param xHex 公钥X
|
|
||||||
* @param yHex 公钥Y
|
|
||||||
* @return ECPublicKeyParameters
|
|
||||||
*/
|
|
||||||
public static ECPublicKeyParameters toSm2Params(final String xHex, final String yHex) {
|
|
||||||
return ECKeyUtil.toSm2PublicParams(xHex, yHex);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 转换为ECPublicKeyParameters
|
|
||||||
*
|
|
||||||
* @param xHex 公钥X
|
|
||||||
* @param yHex 公钥Y
|
|
||||||
* @param domainParameters ECDomainParameters
|
|
||||||
* @return ECPublicKeyParameters
|
|
||||||
*/
|
|
||||||
public static ECPublicKeyParameters toParams(final String xHex, final String yHex, final ECDomainParameters domainParameters) {
|
|
||||||
return ECKeyUtil.toPublicParams(xHex, yHex, domainParameters);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 转换为SM2的ECPublicKeyParameters
|
|
||||||
*
|
|
||||||
* @param xBytes 公钥X
|
|
||||||
* @param yBytes 公钥Y
|
|
||||||
* @return ECPublicKeyParameters
|
|
||||||
*/
|
|
||||||
public static ECPublicKeyParameters toSm2Params(final byte[] xBytes, final byte[] yBytes) {
|
|
||||||
return ECKeyUtil.toSm2PublicParams(xBytes, yBytes);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 转换为ECPublicKeyParameters
|
|
||||||
*
|
|
||||||
* @param xBytes 公钥X
|
|
||||||
* @param yBytes 公钥Y
|
|
||||||
* @param domainParameters ECDomainParameters
|
|
||||||
* @return ECPublicKeyParameters
|
|
||||||
*/
|
|
||||||
public static ECPublicKeyParameters toParams(final byte[] xBytes, final byte[] yBytes, final ECDomainParameters domainParameters) {
|
|
||||||
return ECKeyUtil.toPublicParams(xBytes, yBytes, domainParameters);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 公钥转换为 {@link ECPublicKeyParameters}
|
|
||||||
*
|
|
||||||
* @param publicKey 公钥,传入null返回null
|
|
||||||
* @return {@link ECPublicKeyParameters}或null
|
|
||||||
*/
|
|
||||||
public static ECPublicKeyParameters toParams(final PublicKey publicKey) {
|
|
||||||
return ECKeyUtil.toPublicParams(publicKey);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 私钥转换为 {@link ECPrivateKeyParameters}
|
|
||||||
*
|
|
||||||
* @param privateKey 私钥,传入null返回null
|
|
||||||
* @return {@link ECPrivateKeyParameters}或null
|
|
||||||
*/
|
|
||||||
public static ECPrivateKeyParameters toParams(final PrivateKey privateKey) {
|
|
||||||
return ECKeyUtil.toPrivateParams(privateKey);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 读取PEM格式的私钥
|
|
||||||
*
|
|
||||||
* @param pemStream pem流
|
|
||||||
* @return {@link PrivateKey}
|
|
||||||
* @since 5.2.5
|
|
||||||
* @see PemUtil#readPemPrivateKey(InputStream)
|
|
||||||
*/
|
|
||||||
public static PrivateKey readPemPrivateKey(final InputStream pemStream) {
|
|
||||||
return PemUtil.readPemPrivateKey(pemStream);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 读取PEM格式的公钥
|
|
||||||
*
|
|
||||||
* @param pemStream pem流
|
|
||||||
* @return {@link PublicKey}
|
|
||||||
* @since 5.2.5
|
|
||||||
* @see PemUtil#readPemPublicKey(InputStream)
|
|
||||||
*/
|
|
||||||
public static PublicKey readPemPublicKey(final InputStream pemStream) {
|
|
||||||
return PemUtil.readPemPublicKey(pemStream);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Java中的PKCS#8格式私钥转换为OpenSSL支持的PKCS#1格式
|
* Java中的PKCS#8格式私钥转换为OpenSSL支持的PKCS#1格式
|
||||||
*
|
*
|
||||||
|
@ -12,30 +12,6 @@
|
|||||||
|
|
||||||
package org.dromara.hutool.crypto.bc;
|
package org.dromara.hutool.crypto.bc;
|
||||||
|
|
||||||
import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
|
|
||||||
import org.bouncycastle.crypto.params.ECPublicKeyParameters;
|
|
||||||
import org.junit.jupiter.api.Assertions;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
|
|
||||||
public class BCUtilTest {
|
public class BCUtilTest {
|
||||||
|
|
||||||
/**
|
|
||||||
* 密钥生成来自:<a href="https://i.goto327.top/CryptTools/SM2.aspx?tdsourcetag=s_pctim_aiomsg">...</a>
|
|
||||||
*/
|
|
||||||
@Test
|
|
||||||
public void createECPublicKeyParametersTest() {
|
|
||||||
final String x = "706AD9DAA3E5CEAC3DA59F583429E8043BAFC576BE10092C4EA4D8E19846CA62";
|
|
||||||
final String y = "F7E938B02EED7280277493B8556E5B01CB436E018A562DFDC53342BF41FDF728";
|
|
||||||
|
|
||||||
final ECPublicKeyParameters keyParameters = BCUtil.toSm2Params(x, y);
|
|
||||||
Assertions.assertNotNull(keyParameters);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void createECPrivateKeyParametersTest() {
|
|
||||||
final String privateKeyHex = "5F6CA5BB044C40ED2355F0372BF72A5B3AE6943712F9FDB7C1FFBAECC06F3829";
|
|
||||||
|
|
||||||
final ECPrivateKeyParameters keyParameters = BCUtil.toSm2Params(privateKeyHex);
|
|
||||||
Assertions.assertNotNull(keyParameters);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,41 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2023. looly(loolly@aliyun.com)
|
||||||
|
* Hutool is licensed under Mulan PSL v2.
|
||||||
|
* You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||||
|
* You may obtain a copy of Mulan PSL v2 at:
|
||||||
|
* https://license.coscl.org.cn/MulanPSL2
|
||||||
|
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||||
|
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||||
|
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||||
|
* See the Mulan PSL v2 for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.dromara.hutool.crypto.bc;
|
||||||
|
|
||||||
|
import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
|
||||||
|
import org.bouncycastle.crypto.params.ECPublicKeyParameters;
|
||||||
|
import org.junit.jupiter.api.Assertions;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
public class ECKeyUtilTest {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 密钥生成来自:<a href="https://i.goto327.top/CryptTools/SM2.aspx?tdsourcetag=s_pctim_aiomsg">...</a>
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void createECPublicKeyParametersTest() {
|
||||||
|
final String x = "706AD9DAA3E5CEAC3DA59F583429E8043BAFC576BE10092C4EA4D8E19846CA62";
|
||||||
|
final String y = "F7E938B02EED7280277493B8556E5B01CB436E018A562DFDC53342BF41FDF728";
|
||||||
|
|
||||||
|
final ECPublicKeyParameters keyParameters = ECKeyUtil.toSm2PublicParams(x, y);
|
||||||
|
Assertions.assertNotNull(keyParameters);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void createECPrivateKeyParametersTest() {
|
||||||
|
final String privateKeyHex = "5F6CA5BB044C40ED2355F0372BF72A5B3AE6943712F9FDB7C1FFBAECC06F3829";
|
||||||
|
|
||||||
|
final ECPrivateKeyParameters keyParameters = ECKeyUtil.toSm2PrivateParams(privateKeyHex);
|
||||||
|
Assertions.assertNotNull(keyParameters);
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user