如何在Node.js中加密/解密数字?

如何在Node.js中加密/解密数字?,node.js,encryption,cryptography,Node.js,Encryption,Cryptography,使用Node.js模块可以很容易地加密/解密字符串,因为字符串很容易得到支持。对于数字,您需要使用缓冲区/类型数组或数据视图类型 您将如何以最健壮/高效的方式加密/解密JavaScript数字 使用: createCipheriv(算法,密钥,iv[,选项]) “aes-256-cbc” cipher.update(数据[,输入编码][,输出编码]) 这取决于它需要有多强大/高效 最简单的选择是只使用.toString()任何数字,然后像加密字符串一样对它们进行加密 一种可以说是“更快”的方法

使用Node.js模块可以很容易地加密/解密字符串,因为字符串很容易得到支持。对于数字,您需要使用缓冲区/类型数组或数据视图类型

您将如何以最健壮/高效的方式加密/解密JavaScript数字

使用:

  • createCipheriv(算法,密钥,iv[,选项])
  • “aes-256-cbc”
  • cipher.update(数据[,输入编码][,输出编码])

这取决于它需要有多强大/高效

最简单的选择是只使用
.toString()
任何数字,然后像加密字符串一样对它们进行加密

一种可以说是“更快”的方法是创建一个字节缓冲区来表示数字。假设我们有一个16位整数(为简单起见):

函数单位(n){
常数b1=n>>8;
常数b2=n>8;
返回缓冲区from([b1,b2]);
}
函数编号(buf){

让n=buf[0]谢谢你的回答。有几个问题:。toString()需要一个相应的函数才能返回数字。parseFloat()在任何情况下都能工作吗?缓冲区示例:我不确定JS数字是什么类型(可能是64位,我不确定endianness,可能是平台相关的)。我正在寻找一个在任何情况下都适用于JavaScript数字的示例。似乎这个答案需要考虑一些更大的数字?此外,节点缓冲区有如下函数:-buf.writeBigInt64BE(值[,偏移量])-buf.writeBigInt64LE(值[,偏移量])它们会有帮助吗?@ile“数字”在javascript中,大多数都是64位浮点。如果您想要超过2**16的值,还需要进行更多的位修改
function toBytes(n) {
    const b1 = n >> 8;
    const b2 = n << 8 >> 8;
    return Buffer.from([b1, b2]);
}

function toNumber(buf) {
    let n = buf[0] << 8;
    n += buf[1];
    return n;
}

for (let i = 254; i < 258; i++) {
    const buf = toBytes(i);
    const n = toNumber(buf);
    console.log(n, "=", buf);
}