美文网首页
Crypto加密解密

Crypto加密解密

作者: 小碗吃不了 | 来源:发表于2019-11-11 16:19 被阅读0次

    包含算法种类:MD5算法/sha1算法、base64加密和解密、Hmac、AES、Diffie-Hellman

    • AES:常用的对称加密算法,加密解密都用一个秘钥,需要自己封装函数

    • MD5算法:常用的哈希算法,用于给任意数据一个"签名"

    • sha1算法:哈希加密,对强行攻击的强度更大,但是循环步骤比MD5多,处理的缓存大,所以相同硬件下,运行速度比MD5慢

    • Hmac:哈希算法,可以利用MD5和sha1等哈希算法,但是额外需要一个秘钥,可以理解为用随机数'增强’的哈希算法

    • Diffie-Hellman:一种密钥交换协议,在双方不泄露密钥的情况下协商出一个密钥

    主要总结AES算法

    • 引入到crypto.js

      npm install crypto-js
      
      import CryptoJS from 'crypto-js/crypto-js'
      
    • 加密

      import CryptoJS from 'crypto-js'
      export const encrypt = (word,key) => {
        var key = CryptoJS.enc.Utf8.parse(key);
        var srcs = CryptoJS.enc.Utf8.parse(word);
        var encrypted = CryptoJS.AES.encrypt(srcs, key, {
            mode: CryptoJS.mode.ECB,
            padding: CryptoJS.pad.Pkcs7 // 后台用的是pad.Pkcs5,前台对应为Pkcs7
        });
       return encrypted.toString();
      

      }

    • 解密

       export const decrypt = (word,key) => {
       var key = CryptoJS.enc.Utf8.parse(key);
       var decrypt = CryptoJS.AES.decrypt(word, key, {
         mode: CryptoJS.mode.ECB,
         padding: CryptoJS.pad.Pkcs7
       });
       return CryptoJS.enc.Utf8.stringify(decrypt).toString();
       }
      

    例如

    • 请求头使用加密,需与后台商量

      import Crypto from './crypto';
      headersConfig = {
        'sign': escape(Crypto.encryptByDES("jU7dDd0+68" + new Date().getTime(), "k8!MZms@")),
        'ver': '1.0.6',
        'os': 'web',
        'Content-Type': 'application/json'
      }  
      
    • Tip

      escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。
      unescape() 函数可对通过 escape() 编码的字符串进行解码。
      JS内置全局函数

    相关文章

      网友评论

          本文标题:Crypto加密解密

          本文链接:https://www.haomeiwen.com/subject/gwstictx.html