• crypto-js RC4和hash_hmac运用


    遇到一个问题,前端需要加密,可能用到一些算法,推荐这个库:crypto-js,

    RC4是一个可逆的加密,看下用法:

    import CryptoJS from 'crypto-js';
    const RC4KEY = 'secretKey';
    let name = 'abc'
    let name_encrypted = CryptoJS.RC4.encrypt(name, RC4KEY); //加密
    console.log(name_encrypted.toString());//类似于'U2FsdGVkX1+n5T4ZSSIH7Cq5uQ=='是个变化的数值
    let name_decrypted = CryptoJS.RC4.decrypt(name_encrypted,RC4KEY);//解密
    let name_decrypted_utf8 = CryptoJS.enc.Utf8.stringify(name_decrypted);
    console.log(name_decrypted_utf8);//abc

      以上代码实测通过:'abc’'通过RC4加密,最后解密出来了。只是,与理解的相比,最后多了个

    CryptoJS.enc.Utf8.stringify()

      好答案都在googel,百度上的答案乱七八糟,就算了。  

     RC4加密应用场景:

     比如你做了活动页面,页面url中有查询参数:id=10;

    拿到你的这个url,再修改id,可以遍历你的所有活动,这就是安全性的问题。

    如果对id这个参数进行加密,那就不一样了。

    也就是说,客户看到你的id = U2FsdGVkX1+n5T4ZSSIH7Cq5uQ==;他就不好遍历了。

    当然,这需要在链接url生成时就加密,然后再页面中获取这个加密的参数。

    后端再去解密这个参数。还是很安全的。

    RC4这种加密是可逆的,hash_hmac是一个不可逆的加密,比MD5更安全,号称最安全的加密。

    crypto-js的,hash_hmac用法:(详细请看:https://stackoverflow.com/questions/12099092/javascript-equivalent-of-phps-hash-hmac-with-raw-binary-output)

    import CryptoJS from 'crypto-js';
    var hash = CryptoJS.HmacSHA256("Message", "Secret Passphrase");
    var base64 = hash.toString(CryptoJS.enc.Base64);

    注意:上面的代码,对hash_hmac加密后的结果进行了base64编码。

    另外,有一点比较迷惑:

    • crypto-js/hmac-sha1
    • crypto-js/sha1

    这2个模块对应的方法为:

    • CryptoJS.SHA1("Message"
    • CryptoJS.HmacSHA1("Message", "Key")

    这2个的区别是多了个参数,关系:HMACSHA1 是从 SHA1 哈希函数构造的一种键控哈希算法,被用作 HMAC(基于哈希的消息验证代码)。   

  • 相关阅读:
    汉语-成语:鳏寡孤惸
    汉语-汉字:谶
    汉语-汉字:彘
    汉语-汉字:齑、齏
    mac下配置adb
    常见的开发语言(或IT技术)一览
    SurfaceView的经典写法
    HDU4499 Cannon DFS 回溯的应用
    什么是Pro*C/C++,嵌入式SQL,第一个pro*c程序,pro*c++,Makefile,Proc增删改查
    Cocos开发中性能优化工具介绍之使用Windows任务管理器
  • 原文地址:https://www.cnblogs.com/xiaochongchong/p/7766718.html
Copyright © 2020-2023  润新知