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(基於哈希的消息驗證代碼)。   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM