AES加密--简单使用(CBC)

472 阅读3分钟

AES加密方式是现在比较流行的对称加密方式,它是通过一个加密解密双方持有共同密匙进行加密解密,这个密匙必须保证其安全性,泄露的话就会造成密文内容的暴露。

本着简单使用的原则,就不过多赘述了,如果需要了解的同学可以去百度看看他的介绍。

先声明,本文采用crypto-js这个包结合vue来实现,换到其他技术栈也是差不多的。

步骤一:下载包 crypto-js

npm i crypto-js 或者yarn add crypto-js

步骤二:在使用的页面进行引入

import CryptoJs from "crypto-js"

步骤三: 创建加密函数

encrypt(wordStr, keyStr, ivStr) {
        //将key的utf8转为wordArray数据
        let key = CryptoJs.enc.Utf8.parse(keyStr);
        //将iv的utf8转为wordArray数据
        let iv = CryptoJs.enc.Utf8.parse(ivStr);
        //将word的utf8转为wordArray数据
        let word = CryptoJs.enc.Utf8.parse(wordStr);
        //进行加密处理(第一个参数是要加密的word,第二个是密钥,第三个是配置参数)
        let encrypted = CryptoJs.AES.encrypt(word, key, {
            //配置偏移量,如果mode为ECB模式则不需要这个参数
            iv,
            //模式选择CBC(模式介绍可以到百度查看,这里不讲述)
            mode: CryptoJs.mode.CBC,
            //填充使用Pkcs7(注意大小写)
            padding: CryptoJs.pad.Pkcs7
        });
        //使用toString()处理返回
        return encrypted.toString();
    },
  • word:是要加密的内容
  • key:是对内容进行加密时使用的密钥(注意保证其安全性,用于加密解密)
  • iv:偏移量,是出ECB模式外需要使用到的参数

步骤四:创建解密函数

decrypt(wordStr, keyStr, ivStr) {
        //将key的utf8转为wordArray数据
        let key = CryptoJs.enc.Utf8.parse(keyStr);
        //将iv的utf8转为wordArray数据
        let iv = CryptoJs.enc.Utf8.parse(ivStr);
        //进行解密处理(第一个参数为解密的word,第二个参数是密匙,第三个参数是配置对象(跟加密相同))
        let decrypt = CryptoJs.AES.decrypt(wordStr, key, {
            //配置偏移量(跟加密要对应)
            iv,
            //配置模式为CBC(跟加密要对应)
            mode: CryptoJs.mode.CBC,
            //配置填充模式(跟加密要对应)
            padding: CryptoJs.pad.Pkcs7
        });
        //将解密的结果解析为Utf8进行返回
        return decrypt.toString(CryptoJs.enc.Utf8);
    },
  • word:是要解密的内容(密文)
  • key:是对内容进行加密时使用的密钥(注意保证其安全性,用于加密解密)
  • iv:偏移量,是出ECB模式外需要使用到的参数

步骤五:使用

useCrypt(){
    //定义密匙(这个是自己定义,这里定义16位)
    const key="1234123412ABCDEF";
    //定义偏移量(这个是自己定义,这里定义16位)
    const iv="0123410ABCDEF352"
    //定义一个要加密的内容(自己定义)
    const word="qiaoge"
    
    //使用加密函数(注意这里因为是vue框架,使用了this调用)
    const cryptWord=this.encrypt(word,key,iv)
    console.log(cryptWord) //   2s8MAJj+zUqXU/OdOb9ypw==
    
    //使用解密函数(注意这里因为是vue框架,使用了this调用)
     const deCryptWord=this.decrypt(cryptWord,key,iv)
     console.log(deCryptWord)//  qiaoge
}

完结语 : cryto-js还要很多复杂的配置和使用模式,本文只是介绍简单的使用方法,如果想深入的研究推荐去看下github或者其他资料。---over !