SM4加密结果和Android里面使用的java版本结果不一致
Closed this issue · 7 comments
Melody1234 commented
您好,想请问一下,我测试发现SM4加密结果和Android里面使用的java版本结果不一致,java里面使用的是pkcs#5模式补位的,我在dart里面也进行了设置,但是结果还是不一致,请问还有哪里有差异性么
期待SM2,SM3~
Melody1234 commented
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,
);
调用是直接修改了这里的代码
greenking19 commented
默认走PK#7填充 填PK#5也是走PK#7的填充. sm2跟sm3大概这周末生产 下周一发布
Melody1234 commented
请问一下,dart的int类型和java或者js的数据长度是不一样的,在做移位运算的时候怎么处理?
dart版本
tmp[0]<<24 //tmp[0] =144
结果是:2415919104
js版本
tmp[0]<<24 //tmp[0] =144
结果是:-1879048192
greenking19 commented
这个是js的缺陷或者特征吧. 要 & 0xff
之前我测试的时候我也遇到了这个问题, 搞了好久
greenking19 commented
sm3已发布 sm2还在测试
hanxiaofeng commented
@Melody1234 请教下,最终是怎么解决的这个问题?
greenking19 commented
@Melody1234 请教下,最终是怎么解决的这个问题?
参考这个网址 sm4在线加解密
我的加解密跟这个是一样的, 一开始我也是跟java的加解密不一样 python跟java也不一样,最后我参考了js的sm加解密方法