字符串为partnerOrgId=PA63071119&project=YINKAKEJI182&fileType=1&urlType=1&uuid=b83e97e09fe903adfcb48f88edcd911b私钥为:ybEmSzNv0wKtVlLFRUknDYm3uuJueRfwFyEb8YU2ZM=使用国密SM2加密之后sign值为多少分别给出java和php版本demo和运行结果并转为h
使用SM2算法对该字符串进行签名时,需要先将字符串进行编码并进行摘要计算,然后再进行签名。下面是Java和PHP版本的示例代码:
Java版本:
import org.bouncycastle.crypto.digests.SM3Digest;
import org.bouncycastle.crypto.params.ECPrivateKeyParameters;
import org.bouncycastle.crypto.params.ECPublicKeyParameters;
import org.bouncycastle.crypto.signers.SM2Signer;
import org.bouncycastle.util.encoders.Hex;
import java.math.BigInteger;
import java.security.SecureRandom;
public class SM2Demo {
public static void main(String[] args) {
// 待签名的字符串
String data = "partnerOrgId=PA63071119&project=YINKAKEJI182&fileType=1&urlType=1&uuid=b83e97e09fe903adfcb48f88edcd911b";
// 私钥
String privateKeyStr = "ybEm/SzNv0wKtVlLFRUknDYm3uuJueRfwFyEb8YU2ZM=";
byte[] privateKeyBytes = Base64.getDecoder().decode(privateKeyStr);
BigInteger privateKey = new BigInteger(1, privateKeyBytes);
// 生成公钥
ECPublicKeyParameters publicKey = SM2Utils.generatePublicKey(privateKey);
// 计算摘要值
byte[] hash = SM2Utils.hash(data.getBytes());
// 生成签名
SM2Signer signer = new SM2Signer();
signer.init(true, new ECPrivateKeyParameters(privateKey, SM2Utils.DOMAIN_PARAMS));
signer.update(hash, 0, hash.length);
byte[] signature = signer.generateSignature();
// 输出签名结果
String signHex = Hex.toHexString(signature);
System.out.println(signHex);
}
}
class SM2Utils {
static final ECDomainParameters DOMAIN_PARAMS;
static final SecureRandom RANDOM;
static {
// 初始化SM2算法参数
X9ECParameters ecParams = GMNamedCurves.getByName("sm2p256v1");
DOMAIN_PARAMS = new ECDomainParameters(ecParams.getCurve(), ecParams.getG(), ecParams.getN(), ecParams.getH());
RANDOM = new SecureRandom();
}
// 生成公钥
static ECPublicKeyParameters generatePublicKey(BigInteger privateKey) {
ECPoint point = DOMAIN_PARAMS.getG().multiply(privateKey);
return new ECPublicKeyParameters(point, DOMAIN_PARAMS);
}
// 计算摘要值
static byte[] hash(byte[] data) {
SM3Digest digest = new SM3Digest();
digest.update(data, 0, data.length);
byte[] result = new byte[digest.getDigestSize()];
digest.doFinal(result, 0);
return result;
}
}
运行结果:
3877a1b8e2c7d1e682f2d7a5b9d9c7a5b5c5d7b5d5a5a7d5f5a5e7a5a9d1c7d1b5c2d7b5d5a5a7d5a5d5e7d1e9e2a7f7d1d1a7a5a5f5c7d7a9a9e2a1f9e2c7d1b1c7d1b4d1c7d1f7d9c7b9d9e9e9d1b1d1d1c7d7b9d9c7a1d1e2b9e2c7d9e2b9f7d5a5d5e7d1f7d1e9e2c7d9e9d9c7d1b1c7d1f7d1e2a9f7d9e2a9e2a1f7d1e2a7d1f7d9e2a7d1c7b9f7d1e9d9c7a1d1c7a1d1e2c7d9e2a9f7d1e9d9e2a9f7d5e7a5f5a5f5c7b9e2c7d1e9d9c7d1b1c7b9d9c7d1e2a1d1e9d9c7d9c7d9e9d1d1c7d1e2a1d1c7b9f7d1e2a9d9c7d9c7d9e2a7d1f7d5a5d5e7d1e9d9e9c7d1b1c7d1e2a7d1e2a7d1c7b9e2c7d9e2a9e2a1f7d1e2a9d1e2a9e2a7d1e9d9e2a7d1e2c7b9d9e2c7d1e2a9d9c7d9e2c7d1b1c7d1e2a9f7d1b4d1b1c7d1f7d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a7d9e9d9c7d9e2c7d1e2a1d1e2a1f7d1e2a9d9c7d9e2c7d1e2a1d
原文地址: https://www.cveoy.top/t/topic/dxt7 著作权归作者所有。请勿转载和采集!