JuneAndGreen / sm-crypto

国密算法js版
MIT License
943 stars 255 forks source link

SM4算法加密原文对emoji的支持 #33

Closed lanemy closed 3 years ago

lanemy commented 3 years ago

发现一个现象, 前端用sm4加密, 原文包含emoji表情,以字符串形式传入, 后端解密发现emoji表情信息为乱码, 其余内容正常 前端自己加密, 自己解密, emoji正常; 后端对相同原文自己加密自己解密, emoji正常; 不进行加解密, emoji正常;

调试了一下发现, 如果原文入参转成数组, 比如 Buffer.from("😃"), 后端可以正常处理, 对后端包含emoji表情的密文, 解密后以数组输出, 再用Buffer.from("解密后的数组").toString(), 也可以正常显示了

感觉 utf8ToArray()以及arrayToUtf8()这两个函数对于emoji的处理需要优化支持一下 非前端开发, 能力有限, 只是找到了一个暂时解决的办法.

JuneAndGreen commented 3 years ago

0.2.4 版本已支持:

https://github.com/JuneAndGreen/sm-crypto/commit/653a32fbc650dc4a60b6518e30415293ed782d74#diff-f66cf4b484d215da68ffdae4cb8cbbc94b25bfde6369bec7605168379326591bR53