一、什么是国密加密
![](https://img-blog.csdnimg.cn/img_convert/023f2b589d5144ddd253a1c2d687a1cc.png)
二、国密实现
本系统实现了国密SM2和SM4加解密,可以在SimpleAdmin.Core下的Utils->Cryptogram文件夹下找到。
![](https://img-blog.csdnimg.cn/img_convert/0cf93287f847ba6a26ace73eb6fdf60e.png)
2.1 SM2
Sm2加解密需要配置公钥和私钥,在配置文件中配置即可
![](https://img-blog.csdnimg.cn/img_convert/19c5676735ca80136fd003594f62860e.png)
前端通过公钥加密数据,详情可看utils下的smCrypto.js,具体实现在用户登录功能中。
![](https://img-blog.csdnimg.cn/img_convert/20e2c3a84eefca0301c62b66d7797244.png)
后端直接通过 CryptogramUtil.Sm2Decrypt方法解密前端传过来的加密字符串
var password = CryptogramUtil.Sm2Decrypt(input.Password);//SM2解密
2.2 SM4
Sm4也有key和value但是我没有存在配置文件,而知直接写死在了构造函数中。
![](https://img-blog.csdnimg.cn/img_convert/c9c65471941fe8cd1df1f61fcadc8e66.png)
本系统用户手机号是采用SM4加解密存储的,通过CryptogramUtil.Sm4Encrypt方法加密手机号
sysUser.Phone = CryptogramUtil.Sm4Encrypt(sysUser.Phone);
通过sqlsugar的aop配置可以实现自动解密
![](https://img-blog.csdnimg.cn/img_convert/d299c0103284fdbfb9c1fc8b64a2b7ad.png)