greenking19/sm_crypto

SM4加密结果和Android里面使用的java版本结果不一致

Closed this issue · 7 comments

您好,想请问一下,我测试发现SM4加密结果和Android里面使用的java版本结果不一致,java里面使用的是pkcs#5模式补位的,我在dart里面也进行了设置,但是结果还是不一致,请问还有哪里有差异性么

期待SM2,SM3~

static List<int> encryptOutArray({
    required String data,
    required String key,
    String mode = SM4CryptoMode.ECB,
    String padding = SM4PaddingMode.PKCS5,
    String? iv,
  }) {
    // Check out the parameters
    _typeProsecutor(
      key: key,
      mode: mode,
      padding: padding,
      iv: iv,
    );

调用是直接修改了这里的代码

默认走PK#7填充 填PK#5也是走PK#7的填充. sm2跟sm3大概这周末生产 下周一发布

请问一下,dart的int类型和java或者js的数据长度是不一样的,在做移位运算的时候怎么处理?

dart版本
tmp[0]<<24         //tmp[0] =144
结果是:2415919104


js版本
tmp[0]<<24         //tmp[0] =144
结果是:-1879048192

这个是js的缺陷或者特征吧. 要 & 0xff 之前我测试的时候我也遇到了这个问题, 搞了好久

sm3已发布 sm2还在测试

@Melody1234 请教下,最终是怎么解决的这个问题?

@Melody1234 请教下,最终是怎么解决的这个问题?

参考这个网址 sm4在线加解密
我的加解密跟这个是一样的, 一开始我也是跟java的加解密不一样 python跟java也不一样,最后我参考了js的sm加解密方法