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