(叁)前端实现加密的方式:AES 加密(实现的两种方式)

打印 上一主题 下一主题

主题 1652|帖子 1652|积分 4956

Ⅰ、AES 加密:

1、使用 AES 加密前的准备工作:

其一、安装 crypto-js :

A、安装命令:

npm install crypto-js
B、乐成安装后的截图:

// 在 package.json 文件内有安装后的依靠(但版本不一定是 ^4.2.0);

2、实现 AES 加密的方式一:

其一、在项目中创建 crypto.js 文件:

A、crypto.js 文件位置截图为:


B、代码为:

  1. import CryptoJS from "crypto-js";
  2. export default {
  3.   //随机生成指定数量的16进制key
  4.   generatekey(num) {
  5.     let library =
  6.       "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  7.     let key = "";
  8.     for (var i = 0; i < num; i++) {
  9.       let randomPoz = Math.floor(Math.random() * library.length);
  10.       key += library.substring(randomPoz, randomPoz + 1);
  11.     }
  12.     return key;
  13.   },
  14.   //加密
  15.   encrypt(word, keyStr) {
  16.     keyStr = keyStr ? keyStr : "ylvector12345678"; //判断是否存在key,不存在就用定义好的key
  17.     var key = CryptoJS.enc.Utf8.parse(keyStr);
  18.     var srcs = CryptoJS.enc.Utf8.parse(word);
  19.     var encrypted = CryptoJS.AES.encrypt(srcs, key, {
  20.       mode: CryptoJS.mode.ECB,
  21.       padding: CryptoJS.pad.Pkcs7
  22.     });
  23.     return encrypted.toString();
  24.   },
  25.   
  26.   //解密
  27.   decrypt(word, keyStr) {
  28.     keyStr = keyStr ? keyStr : "ylvector12345678";
  29.     var key = CryptoJS.enc.Utf8.parse(keyStr);
  30.     var decrypt = CryptoJS.AES.decrypt(word, key, {
  31.       mode: CryptoJS.mode.ECB,
  32.       padding: CryptoJS.pad.Pkcs7
  33.     });
  34.     return CryptoJS.enc.Utf8.stringify(decrypt).toString();
  35.   }
  36. };
复制代码
其二、在页面中引入并使用:

A、在页面引入 crypto-js 文件:

// 注意:以实际引入的 crypto-js 文件地点为主;

B、使用的加密解密的过程:

a、随机十六位密匙的加密解密操作:

  1.     // 用AES给密码加密
  2.     const keys = Crypto.generatekey(16);//ylvector
  3.     //如果是对象/数组的话,需要先JSON.stringify转换成字符串,第二个值是加密的方式key
  4.     // const encrypts = Crypto.encrypt(username.value,'ylvector12345678');
  5.     const encrypts = Crypto.encrypt(username.value,keys);
  6.     // const decrypt = Crypto.decrypt(encrypts, 'ylvector12345678');
  7.     const decrypt = Crypto.decrypt(encrypts, keys);
  8.     console.log(username.value,1111111)
  9.     console.log(encrypts,222222)
  10.     console.log(decrypt,333333333);
复制代码
b、随机十六位密匙的加密解密截图:

// 截图一:此时随机产生的生成值,不是固定值为:rKAq5sr4UrRdmDAr+8epHA==

// 截图二:此时随机产生的生成值,不是固定值为:3BVfDdolhXyB1E79iBQUzA==

c、固定十六位密匙的加密解密操作:

  1.      // 用AES给密码加密
  2.      // const keys = Crypto.generatekey(16);//ylvector
  3.      //如果是对象/数组的话,需要先JSON.stringify转换成字符串,第二个值是加密的方式key
  4.      const encrypts = Crypto.encrypt(username.value,'ylvector12345678');
  5.      // const encrypts = Crypto.encrypt(username.value,keys);
  6.      const decrypt = Crypto.decrypt(encrypts, 'ylvector12345678');
  7.      // const decrypt = Crypto.decrypt(encrypts, keys);
  8.      console.log(username.value,1111111)
  9.      console.log(encrypts,222222)
  10.      console.log(decrypt,333333333);
复制代码
d、固定十六位密匙的加密解密截图:

// 此时无论怎么生成,固定的生成值为:zweKZ45kJyI6HASVc8DQSQ==

3、实现 AES 加密的方式二:

其一、在项目中创建 crypto.js 文件:

A、crypto.js 文件位置截图为:


B、代码为:

  1. import CryptoJS from "crypto-js";
  2. export default {
  3.   //加密
  4.   encode(str = ''){
  5.     // utf-8 转换
  6.     let message = CryptoJS.enc.Utf8.parse(str);
  7.     let secret_key = CryptoJS.enc.Utf8.parse("12345678ABCDEFGH");
  8.     let iv = CryptoJS.enc.Utf8.parse("ABCDEFGH12345678");
  9.     // Encrypt
  10.     var ciphertext = CryptoJS.AES.encrypt(message, secret_key, {
  11.         iv: iv,
  12.         mode: CryptoJS.mode.CBC,
  13.         padding: CryptoJS.pad.Pkcs7
  14.     });
  15.     return ciphertext.toString();
  16.   },
  17.   
  18.   //解密
  19.   decode(str = ''){
  20.     // utf-8 转换
  21.     let message = str;
  22.     let secret_key = CryptoJS.enc.Utf8.parse("12345678ABCDEFGH");
  23.     let iv = CryptoJS.enc.Utf8.parse("ABCDEFGH12345678");
  24.    
  25.     // Decrypt
  26.     var ciphertext  = CryptoJS.AES.decrypt(message.toString(), secret_key,{
  27.         iv: iv,
  28.         mode: CryptoJS.mode.CBC,
  29.         padding: CryptoJS.pad.Pkcs7
  30.     });
  31.     return ciphertext.toString(CryptoJS.enc.Utf8);
  32.   }
  33. };
复制代码
其二、在页面中引入并使用:

A、在页面引入 crypto-js 文件:

// 注意:以实际引入的 crypto-js 文件地点为主;

B、使用的加密解密的过程:

a、固定十六位密匙的加密解密操作:

  1.      // 用AES给密码加密
  2.      const encrypts = Crypto.encode(username.value);
  3.      // 用AES给密码解密
  4.      const decrypt = Crypto.decode(encrypts);
  5.      console.log(username.value,1111111)
  6.      console.log(encrypts,222222)
  7.      console.log(decrypt,333333333);
复制代码
b、固定十六位密匙的加密解密截图:

// 此时无论怎么生成,固定的生成值为:SeaNt1TTsdmvw7u24Q99Ng==

Ⅱ、寄语:

非常荣幸能作为该文章专栏的博主,关于上述问题不懂的可以随时滴滴,一定会及时回复;

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

滴水恩情

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表