关于密码学:密码学-14-CryptoJS

3次阅读

共计 2385 个字符,预计需要花费 6 分钟才能阅读完成。

1. 为什么抉择应用 JavaScript 来复现算法

JS 实现的算法,能够很不便地被任何语言调用

2. CryptoJS 中音讯摘要算法的应用

CryptoJS.MD5(message);
CryptoJS.HmacMD5(message, key);
CryptoJS.SHA1(message);
CryptoJS.HmacSHA1(message, key);
CryptoJS.SHA256(message);
CryptoJS.HmacSHA256(message, key);
CryptoJS.SHA512(message);
CryptoJS.HmacSHA512(message, key);
CryptoJS.SHA3('xiaojianbang', {outputLength: 256})

3. 音讯摘要算法的其余调用模式

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);

4. CryptoJS(字符串解析)

// -------------------------------------- string 转 wordArray
 
console.log("-----------------------------------------------");
var md5_str= "hengdin.com";

var utf8_str= md5_str;
var hex_str = "68656e6764696e2e636f6d";
var base64_str = "aGVuZ2Rpbi5jb20==";

var utf8_wordarray = CryptoJS.enc.Utf8.parse(utf8_str);
var hex_wordarray= CryptoJS.enc.Hex.parse(hex_str);
var base64_wordarray = CryptoJS.enc.Base64.parse(base64_str);

console.log(utf8_wordarray);
console.log(hex_wordarray);
console.log(base64_wordarray);
// {words: [ 1751477863, 1684631086, 1668246784], sigBytes: 11 }

// 解析 -------------------------------------- wordArray 转 string
console.log("-----------------------1111------------------------");
// 形式一:// 默认应用 hex 编码 
console.log(utf8_wordarray+'');
console.log(hex_wordarray+'');
console.log(base64_wordarray+'');
// 形式二:console.log(utf8_wordarray.toString(CryptoJS.enc.Utf8));
console.log(hex_wordarray.toString(CryptoJS.enc.Hex));
console.log(base64_wordarray.toString(CryptoJS.enc.Base64));
// 形式三:console.log(CryptoJS.enc.Utf8.stringify(utf8_wordarray));
console.log(CryptoJS.enc.Hex.stringify(hex_wordarray));
console.log(CryptoJS.enc.Base64.stringify(base64_wordarray));

// Hex 编码转 Base64 编码:先转成 wordarray  再转成 base64 str
var hex_str = "68656e6764696e2e636f6d"; 
var wordArray__ = CryptoJS.enc.Hex.parse(hex_str);
var base_str__= CryptoJS.enc.Base64.stringify(wordArray__);
console.log(base_str__);



// 加密的参数  能够是 String 类型,也能够是 wordarray 类型 string 类型的数据,将应用默认的 Utf8.parse 来解析

var str = "hendi";
var str_wordarray  = CryptoJS.enc.Utf8.parse(str);
console.log(CryptoJS.MD5(str).toString());
console.log(CryptoJS.MD5(str_wordarray).toString());
正文完
 0