新客立减

Crypto

加密解密

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

    });