escape unescape算法
encodeURIComponent decodeURIComponent安全
二進制數據最經常使用的一種表示方式。用0-9 a-f 16個字符表示。每一個十六進制字符表明4bit。也就是2個十六進制字符表明一個字節。在實際應用中,尤爲在密鑰初始化的時候,必定要分清楚本身傳進去的密鑰是哪一種方式編碼的,採用對應方式解析,才能獲得正確的結果bash
無論明文多長,散列後的密文定長服務器
明文不同,散列後結果必定不同markdown
散列後的密文不可逆函數
通常用於校驗數據完整性、簽名 sign性能
因爲密文不可逆,因此後臺沒法還原,也就是說他要驗證,會在後臺以跟前臺同樣的方式去從新簽名一遍。也就是說他會把源數據和簽名後的值一塊兒提交到後臺。因此咱們要保證在簽名時候的數據和提交上去的源數據一致。這種算法特喜歡在內部加入時間戳,不少粗心的學員,一般會在簽名的時候取一次時間戳,而後在提交源數據的時候,又取一次時間戳,致使後臺驗證失敗。編碼
常見算法 MD5 SHA1 SHA256 SHA512 HmacMD5 HmacSHA1 HmacSHA256加密
加密和解密的過程是可逆的spa
var wordArray = CryptoJS.enc.Utf8.parse(utf8String);
var wordArray = CryptoJS.enc.Hex.parse(hexString);
var wordArray = CryptoJS.enc.Base64.parse(base64String);
var wordArray = CryptoJS.enc.Latin1.parse(latin1String);
var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);
var hexString = CryptoJS.enc.Hex.stringify(wordArray);
var base64String = CryptoJS.enc.Base64.stringify(wordArray);
var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);
CryptoJS.format.OpenSSL.parse
CryptoJS.format.OpenSSL.stringify
複製代碼
var srcs = CryptoJS.enc.Utf8.parse("15968079470"); CryptoJS.enc.Base64.stringify(srcs); //CryptoJS.enc.Hex.stringify(srcs); 複製代碼
var hash = CryptoJS.MD5(message); var hash = CryptoJS.MD5(wordArray); var hmac = CryptoJS.HmacMD5(message, key); var hash = CryptoJS.SHA1(message); var hash = CryptoJS.SHA1(wordArray); var hmac = CryptoJS.HmacSHA1(message, key); var hash = CryptoJS.SHA224(message); var hash = CryptoJS.SHA224(wordArray); var hmac = CryptoJS.HmacSHA224(message, key); var hash = CryptoJS.SHA256(message); var hash = CryptoJS.SHA256(wordArray); var hmac = CryptoJS.HmacSHA256(message, key); var hash = CryptoJS.SHA3(message); var hash = CryptoJS.SHA3(wordArray); var hmac = CryptoJS.HmacSHA3(message, key); var hash = CryptoJS.SHA384(message); var hash = CryptoJS.SHA384(wordArray); var hmac = CryptoJS.HmacSHA384(message, key); var hash = CryptoJS.SHA512(message); var hash = CryptoJS.SHA512(wordArray); var hmac = CryptoJS.HmacSHA512(message, key); 複製代碼
var ciphertext = CryptoJS.AES.encrypt(message, key, cfg); var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg); var ciphertext = CryptoJS.DES.encrypt(message, key, cfg); var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg); var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg); var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg); var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg); var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg); var cfg={ iv: iv, mode:CryptoJS.mode.CBC, padding:CryptoJS.pad.Pkcs7, format:CryptoJS.format.Hex }; var srcs = CryptoJS.enc.Hex.parse("2783726e20d0d334520cbbbb9cd95d9b"); //CryptoJS.enc.Base64.stringify(srcs); var decryptdata = CryptoJS.AES.decrypt( CryptoJS.lib.CipherParams.create({ ciphertext: srcs}), key, cfg ); decryptdata.toString(CryptoJS.enc.Utf8); 複製代碼
CBC ECB CFB OFB CTRGladman CTR
NoPadding ZeroPadding Pkcs7(Pkcs5) Iso10126 Iso97971 AnsiX923
var string = wordArray + ''; var string = wordArray.toString(); var string = wordArray.ciphertext.toString(); //對稱加密算法裏有 var string = wordArray.toString(CryptoJS.enc.Utf8); var string = wordArray.toString(CryptoJS.format.Hex); var string = wordArray.toString(CryptoJS.format.Base64); 複製代碼
SHA256
var hasher = CryptoJS.algo.SHA256.create(); hasher.reset(); hasher.update('message'); hasher.update(wordArray); var hash = hasher.finalize(); var hash = hasher.finalize('message'); var hash = hasher.finalize(wordArray); 複製代碼
HmacSHA256
var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key); hmacHasher.reset(); hmacHasher.update('message'); hmacHasher.update(wordArray); var hmac = hmacHasher.finalize(); var hmac = hmacHasher.finalize('message'); var hmac = hmacHasher.finalize(wordArray); 複製代碼
RIPEMD160 HmacRIPEMD160
PBKDF2 CryptoJS.PBKDF2("22222222222", "str",{keySize: 8,iterations: 10})
EvpKDF CryptoJS.EvpKDF("22222222222", "str",{keySize: 8,iterations: 10})
RC4Drop Rabbit 加密用Rabbit 解密用RabbitLegacy RabbitLegacy 加密解密都用RabbitLegacy