什麼你正在努力實現在CryptoJS已經實現。從documentation:
您可以通過顯式調用toString方法並傳遞編碼器來將WordArray對象轉換爲其他格式。
var hash = CryptoJS.SHA256("Message");
alert(hash.toString(CryptoJS.enc.Base64));
alert(hash.toString(CryptoJS.enc.Hex));
老實說,我不知道爲什麼你需要實現自己...但是,如果你確實需要做「手動」在你所提到的2個步驟,你可以嘗試這樣的事情:
function wordToByteArray(wordArray) {
var byteArray = [], word, i, j;
for (i = 0; i < wordArray.length; ++i) {
word = wordArray[i];
for (j = 3; j >= 0; --j) {
byteArray.push((word >> 8 * j) & 0xFF);
}
}
return byteArray;
}
function byteArrayToString(byteArray) {
var str = "", i;
for (i = 0; i < byteArray.length; ++i) {
str += escape(String.fromCharCode(byteArray[i]));
}
return str;
}
var hash = CryptoJS.SHA256("Message");
var byteArray = wordToByteArray(hash.words);
alert(byteArrayToString(byteArray));
的wordToByteArray
函數應該很好地工作,但要注意,byteArrayToString
將產生在幾乎所有情況下,奇怪的結果。我對編碼知之甚少,但ASCII僅使用7位,所以在嘗試對整個字節進行編碼時不會得到ASCII字符。所以我加了escape
函數,至少可以顯示所有你可能得到的奇怪字符。 ;)
我建議你使用CryptoJS已經實現的函數,或者只是使用字節數組(不轉換爲字符串)來進行分析。
你是什麼意思的字節數組? – 2012-08-09 18:05:32
第一個問題:你爲什麼需要這個?幾乎肯定有更好的方法來實現你想要完成的任何事情。 – Blazemonger 2012-08-09 18:06:10
@Blazemonger想要檢查CryptoJS,它會給出一個Word數組中的哈希/密碼。 – jacktrades 2012-08-09 18:07:23