使用 WebCryptography API 获取 CryptoJS 单词
Use WebCryptography API to get CryptoJS words
我正在使用 Google 的 CryptoJS 将函数迁移到浏览器原生 WebCryptography API。
使用 CryptoJS,我使用以下代码获取 SHA1 哈希的单词数组
CryptoJS.SHA1('1w0g6Ixf2VHvOc+6pGBqDHItFYQ=:9590467').words
它returns[888149035, -1762573935, 1178769020, -1914057363, 481296384]
使用 WebCrypto API,我使用
const msgBuffer = new TextEncoder().encode('1w0g6Ixf2VHvOc+6pGBqDHItFYQ=:9590467')
const hashBuffer = await crypto.subtle.digest('SHA-1', msgBuffer);
const hashArray = Array.from(new Uint8Array(hashBuffer));
和hashArray
是[52, 240, 20, 43, 150, 241, 65, 145, 70, 66, 150, 124, 141, 233, 205, 109, 28, 176, 0, 0]
如何将此结果转换为与 CyptoJS 相同的数组?
如果像
一样简单就好了
const msgBuffer = new TextEncoder().encode('1w0g6Ixf2VHvOc+6pGBqDHItFYQ=:9590467')
const hashBuffer = await crypto.subtle.digest('SHA-1', msgBuffer);
const hashArray = Array.from(new Int32Array(hashBuffer));
字节顺序除外 - 所以,它稍微复杂一些
async function test() {
const msgBuffer = new TextEncoder().encode('1w0g6Ixf2VHvOc+6pGBqDHItFYQ=:9590467')
const hashBuffer = await crypto.subtle.digest('SHA-1', msgBuffer);
const dv = new DataView(hashBuffer);
const hashArray = [];
for(let i = 0; i < dv.byteLength; i+=4) {
hashArray.push(dv.getInt32(i, false));
}
return hashArray;
};
test().then(console.log);
我正在使用 Google 的 CryptoJS 将函数迁移到浏览器原生 WebCryptography API。
使用 CryptoJS,我使用以下代码获取 SHA1 哈希的单词数组
CryptoJS.SHA1('1w0g6Ixf2VHvOc+6pGBqDHItFYQ=:9590467').words
它returns[888149035, -1762573935, 1178769020, -1914057363, 481296384]
使用 WebCrypto API,我使用
const msgBuffer = new TextEncoder().encode('1w0g6Ixf2VHvOc+6pGBqDHItFYQ=:9590467')
const hashBuffer = await crypto.subtle.digest('SHA-1', msgBuffer);
const hashArray = Array.from(new Uint8Array(hashBuffer));
和hashArray
是[52, 240, 20, 43, 150, 241, 65, 145, 70, 66, 150, 124, 141, 233, 205, 109, 28, 176, 0, 0]
如何将此结果转换为与 CyptoJS 相同的数组?
如果像
一样简单就好了const msgBuffer = new TextEncoder().encode('1w0g6Ixf2VHvOc+6pGBqDHItFYQ=:9590467')
const hashBuffer = await crypto.subtle.digest('SHA-1', msgBuffer);
const hashArray = Array.from(new Int32Array(hashBuffer));
字节顺序除外 - 所以,它稍微复杂一些
async function test() {
const msgBuffer = new TextEncoder().encode('1w0g6Ixf2VHvOc+6pGBqDHItFYQ=:9590467')
const hashBuffer = await crypto.subtle.digest('SHA-1', msgBuffer);
const dv = new DataView(hashBuffer);
const hashArray = [];
for(let i = 0; i < dv.byteLength; i+=4) {
hashArray.push(dv.getInt32(i, false));
}
return hashArray;
};
test().then(console.log);