有玩过phpsm2加密的嘛

用的 “lpilp/guomi”: “^1.0”, 这个包 ,加密解密在php中没问题,但是我加密的数据和java那边对不上,java 不能解密
/**
* 使用公钥加密
*
* @param pubKey 16进制字符串-SM2公钥
* @param dataByte 明文
* @return C1||C3||C2新标准输出格式
*/
private static byte[] encrypt(String pubKey, byte[] dataByte) {
X9ECParameters sm2ECParameters = GMNamedCurves.getByName(SM2_CURVE_NAME);
ECDomainParameters domainParameters =
new ECDomainParameters(sm2ECParameters.getCurve(), sm2ECParameters.getG(), sm2ECParameters.getN());

    ECPoint ecPoint = sm2ECParameters.getCurve().decodePoint(Hex.decode(pubKey));
    ECPublicKeyParameters publicKeyParameters = new ECPublicKeyParameters(ecPoint, domainParameters);

    SM2Engine sm2Engine = new SM2Engine(SM2Engine.Mode.C1C2C3);
    sm2Engine.init(true, new ParametersWithRandom(publicKeyParameters));
    byte[] encryptedData;
    try {
        encryptedData = sm2Engine.processBlock(dataByte, 0, dataByte.length);
    } catch (InvalidCipherTextException e) {
        LOG.error("SM2---encrypt failed " + e.getMessage(), e);
        throw new CipherException("SM2---encrypt failed", e);
    }
    return encryptedData;
}

java 加密代码

路漫漫其修远兮,吾将上下而求索
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
9个月前 评论
pi_phq (楼主) 9个月前
讨论数量: 14

php怎么用的你得给一个代码吧。php加密需要用C1C2C3模式

10个月前 评论
陈先生 10个月前
pi_phq (楼主) 10个月前
deatil (作者) 10个月前
pi_phq (楼主) 10个月前
pi_phq (楼主) 10个月前
deatil (作者) 10个月前

三个安装包: fgrosse/phpasn1 mdanter/ecc lpilp/guomi 这三个组合使用,就可以了

10个月前 评论
pi_phq (楼主) 10个月前
Sparkfly

这个问题我之前也遇到过,看了 Java 加密类代码才发现,它不仅仅只做 SM2 加密 和 解密,还做了 ASN 解码 和 编码。

所以不是对不上,是实现方式不一致。

解密Java的密文时,要先ASN解码,然后得到密文才进行 SM2解密

10个月前 评论
pi_phq (楼主) 10个月前
9个月前 评论
pi_phq (楼主) 9个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!