vue中如何使用SM4国密来加密?
最近做一个项目,登录接口的账号密码两个参数后端规定的是用国密SM4来加密,以前从来没用过这个方法,也百度了一下,但文章了了无几,而且基本内容都是一样的,因为这种加密方式大部分都是java用来加密的,百度上关于SM4加密的大部分都是说的java如何实现,但关于javascript如何加密就只看到有一个js代码,是一个大佬根据java的代码改编的,但不知道为啥使用这个代码加密出来的数据后台解密不了,后
·
最近做一个项目,登录接口的账号密码两个参数后端规定的是用国密SM4来加密,以前从来没用过这个方法,也百度了一下,但文章了了无几,而且基本内容都是一样的,因为这种加密方式大部分都是java用来加密的,百度上关于SM4加密的大部分都是说的java如何实现,但关于javascript如何加密就只看到有一个js代码,是一个大佬根据java的代码改编的,但不知道为啥使用这个代码加密出来的数据后台解密不了,后端是用java写的,人家把他加密的结果给我发过来,答案不一样,这就尬住了。这个项目安卓和ios早都写完了,所以让后端来更改加密方式不到万不得已是不可能的,给我卡了一整天,终于和同事大量的翻找文章找到一个包,最后试验了一下可以使用,是在vue中使用的。
这里先给放上这个包:http://npm.taobao.org/package/gm-crypt
1.首先先安装这个包 :$ npm install gm-crypt ;
2.然后在登录的函数中引用:如下
export default {
components: {},
props: {},
data() {
return {
Account: "", //用户账号
Pwd: "", //用户密码
time: ""
};
},
computed: {},
created() {},
watch: {},
methods: {
// 登录
login() {
// 引用sm4包进行加密
const SM4 = require("gm-crypt").sm4;
let sm4Config = {
//配置sm4参数
key: "HENG1AN2WEN3YIN4",//这里这个key值是跟后端要的
mode: "ecb", // 加密的方式有两种,ecb和cbc两种,也是看后端如何定义的,不过要是cbc的话下面还要加一个iv的参数,ecb不用
cipherType: "base64" //
};
let sm4 = new SM4(sm4Config);//这里new一个函数,将上面的sm4Config作为参数传递进去。然后就可以开心的加密了
let Account = sm4.encrypt(this.Account); //账号加密
let Pwd = sm4.encrypt(this.Pwd); //密码加密
// 获取当前时间。
var CurrentTime = new Date().getTime();
// 将code用shal加密
var code = Account + CurrentTime + "697aa419a779a3b9e5e1ba1a2d83f89c";
var VerifyCode = shal.hex_sha1(code).toUpperCase(); //code码
下面的代码就是请求了,就没放上,下面的那个code码是用shal来加密的,账号密码是用SM4来加密的。希望对小伙伴们有所帮助。
更多推荐
已为社区贡献5条内容
所有评论(0)