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