wechat-miniprogram / sm-crypto

miniprogram sm crypto library
MIT License
438 stars 88 forks source link

sm4下的encrypt会发生位数丢失 #7

Closed johnzhu12 closed 4 years ago

johnzhu12 commented 5 years ago

sm4/index.js下的sm4方法用来加密,看到第148行判断

while(inLen >= BLOCK) //BLOCK = 16

当文件的ArrayBuffer对16取余如果有余数的话,最后几位会被丢弃。(比如加密pdf最后的EOF一行会丢失) 在业务里补了几位0解决,比如余数为11,我就补了5位0,然后解密之后再把5位0去除。 希望作者能在sm4的代码里把padding情况加上

l1t1 commented 4 years ago

谢谢,我这么处理的 //长度填充为16的倍数 len=ss.length n=16-len%16 ss+=new Array(n+1).join("\0")

JuneAndGreen commented 4 years ago

0.2.0 版本已默认支持 pkcs#5 填充,可参考 readme 或者 sm4.test.js 测试用例。