当前位置: 移动技术网 > IT编程>开发语言>JavaScript > crypto 的使用方法和说明

crypto 的使用方法和说明

2019年08月01日  | 移动技术网IT编程  | 我要评论

crypto 模块提供了加密功能,包含对 openssl 的哈希、hmac、加密、解密、签名、以及验证功能的一整套封装。我们这里讲crypto aes算法加密

一、使用步骤

1.引入crypto

    1.1   使用crypto,有两种形式。一种是是在script便签直接引入,例如:

<script src="lib/cryptojs v3.1.2/rollups/aes.js"></script>

   1.2  还有一种通过npm安装cryptojs,例如:

npm install crypto-js

    1.2.1  如果是通过npm安装,需要引入,代码如下:

import cryptojs from 'crypto-js/crypto-js'

2.开始编写逻辑代码

   安装完成后,你根据自己的需求对需要加密的数据进行加密。

二、如何加密

 第一种,先上代码:

 
//aes加密 encrypt (word) { const key = cryptojs.enc.utf8.parse("1234567890000000"); // 加密秘钥 16位 const iv = cryptojs.enc.utf8.parse("1234567890000000"); // 加密矢量 let encrypted = ''; if (typeof(word) == 'string') { let srcs = cryptojs.enc.utf8.parse(word); encrypted = cryptojs.aes.encrypt(srcs, key, { iv: iv, mode: cryptojs.mode.cbc, padding: cryptojs.pad.pkcs7 }); } else if (typeof(word) == 'object') { //对象格式的转成json字符串 data = json.stringify(word); let srcs = cryptojs.enc.utf8.parse(data); encrypted = cryptojs.aes.encrypt(srcs, key, { iv: iv, mode: cryptojs.mode.cbc, padding: cryptojs.pad.pkcs7 }) } return encrypted.ciphertext.tostring(); } },
 

代码讲解:

    这里的数据可以用两种数据格式,一种是字符串,一种是对象。然后我们对数据进行处理然后再根据自己定义的秘钥和矢量调用aes算法进行加密。

  第二种,先上代码:

 
encryption (data) { let strs=[]; for(let i in data){ strs.push(i+'='+data[i]); } strs.sort(); // 数组排序 strs=strs.join('&'); // 数组变字符串 let enddata=strs+'&sign='+cryptojs.md5(strs+'adfj3kcadc2349akvm1cpffcd84f') .tostring(); // md5加密 let key = cryptojs.enc.utf8.parse("0880076b18d7ee81"); // 加密秘钥 let iv = cryptojs.enc.utf8.parse("cb3ec842d7c69578"); // 矢量 let encryptresult = cryptojs.aes.encrypt(enddata,key, { // aes加密 iv: iv, mode: cryptojs.mode.cbc, padding: cryptojs.pad.pkcs7 // 后台用的是pad.pkcs5,前台对应为pkcs7 }); return encodeuricomponent(cryptojs.enc.base64.stringify(encryptresult.ciphertext)); // base64加密再 encode; }
 

代码讲解:

    首先我们将数据进行排序,然后将排序好的数据进行md5加密作为接口的签名,接着将排好序的数据和接口签名拼接上进行aes加密,倒数第二步,将aes加密后的密文进行base64加密,最后将最终的密文encodeuricomponent。

三、如何解密

   1.后台返回的数据也是密文

    2.后台返回的数据是json格式

代码如下:

 
decryption(data) { let key = cryptojs.enc.utf8.parse("0880076b18d7ee81"); // 加密秘钥 let iv = cryptojs.enc.utf8.parse("cb3ec842d7c69578"); // 矢量 let baseresult=cryptojs.enc.base64.parse(data); // base64解密 let ciphertext=cryptojs.enc.base64.stringify(baseresult); // base64解密 let decryptresult = cryptojs.aes.decrypt(ciphertext,key, { // aes解密 iv: iv, mode: cryptojs.mode.cbc, padding: cryptojs.pad.pkcs7 });
  // 第一种 let resdata=decryptresult.tostring(cryptojs.enc.utf8).tostring(); return json.parse(resdata);
// 第二种
  return cryptojs.enc.utf8.stringify(decryptresult) }

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网