yazhouZhang / js-sm2-sm3-sm4-sm9-zuc

包含sm2加解密 签名验证签名 sm3加密 sm4加解密
124 stars 51 forks source link

关于sm-crypto-master中sm4的js加解密问题 #1

Closed ssmallbirds closed 5 years ago

ssmallbirds commented 5 years ago

sm-crypto-master中的sm4.js的加密key是否必须是数组格式,加密内容是否必须是数组格式而且是16位 const key = [0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10];

let encryptData = sm4.encrypt([0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54]) 解密结果的数据格式是否可以转换

yazhouZhang commented 5 years ago

sm-crypto-master中的sm4.js的加密key是否必须是数组格式,加密内容是否必须是数组格式而且是16位 const key = [0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10];

let encryptData = sm4.encrypt([0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54]) 解密结果的数据格式是否可以转换

可以转换的,具体怎么转换得根据你们前后端要的数据格式来转。

1.你可以改写它的算法。输入,输出改成你要的格式 2.可以在它基础上改写。比如输入 utf8 string类型的key,如何转成16进制。可以解析utf8字符串到16进制,在hexToArray,成它现在输入格式。输出的话,改写它算法从byte数组输出转出你要的格式。比如arrayBufferToBase64。byte数组转base64输出。或者用它现有的输出16进制数组转成你要的格式 可以看下我博客里写的注意事项: https://blog.csdn.net/Asia_ZhangQQ/article/details/100734512 觉得有用的话,给个star吧

ssmallbirds commented 5 years ago

我用sm2.lua生成的公私钥,用你这个sm2.js签名验签出错,我的公私钥格式是pem格式。还是你的这个sm2.js,必须要用你自己生成的公私钥

yazhouZhang commented 5 years ago

我用sm2.lua生成的公私钥,用你这个sm2.js签名验签出错,我的公私钥格式是pem格式。还是你的这个sm2.js,必须要用你自己生成的公私钥 不是必须用这里生成的公私钥,你自己生成的也可以,只要生成证书没问题就行,格式pem,crt,p12都可以,证书输出有16进制,也有base64的。注意证书别错。我用的OpenSSL自己生成加入公司等信息,没用这里生成的。签名出错,有多方面原因,得看下是公私钥,还是输入以及使用不对导致