이미 CryptoJS에서 구현됩니다. :
명시 적으로 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가 이미 구현 한 기능을 사용하거나 바이트 배열을 문자열로 변환하지 않고 분석에 사용하는 것이 좋습니다.
바이트 배열이란 무엇입니까? –
첫 번째 질문 : 왜 이것을 필요로합니까? 달성하려는 목표를 성취 할 수있는 좋은 방법이 거의 확실합니다. – Blazemonger
@Blazemonger CryptoJS를 검사하기 위해 Word 배열에 해시/사이퍼를 제공합니다. – jacktrades