gpt4 book ai didi

javascript - 将数字转换为 ArrayBuffer

转载 作者:行者123 更新时间:2023-11-30 06:16:54 27 4
gpt4 key购买 nike

我正在尝试使用 AES-CTR 算法在浏览器上解密数据。 WebCrypto API需要将计数器作为 BufferSource 传递.如何将计数器(数字)转换为预期的输入(字节数组)?

我使用的是全零 IV,因此计数器从 0 开始。假设我正在尝试解密计数器 = 445566 的数据。如何将 445566 转换为 ArrayBuffer?

const key = // retrieve decryption key
const encrypted = // retrieve encrypted data

const iv = new ArrayBuffer(16)
// iv is all zeros. I need it to represent 445566, how?

const algo = {
name: 'AES-CTR',
counter: iv,
length: 128
}
const decrypted = await crypto.subtle.decrypt(algo, key, encrypted)

编辑:在研究了一些加密库之后,我最终使用了它。它似乎在做我想做的事,但对正确性、性能等一无所知。

function numberToArrayBuffer(value) {
const view = new DataView(new ArrayBuffer(16))
for (var index = 15; index >= 0; --index) {
view.setUint8(index, value % 256)
value = value >> 8;
}
return view.buffer
}

最佳答案

IE10+ 有一个单行解决方案:)

new Int32Array([n]).buffer

关于javascript - 将数字转换为 ArrayBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55583037/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com