如何使用相同的密钥对数字进行加密和解密



我需要一种使用密钥加密数字(比如3423234234(的方法,该密钥也可以使用相同的密钥解密。

const encrypted = encrypt(number, key)
const decrypted = decrypt(encrypted, key)

我尝试过使用AES、DES、Rabbit和RC4算法的CryptoJS,但它给了我一个带有特殊字符的长加密值。

我想要一些加密的值,比如MongoDB的ObjectId(它只包含像1575866cab3f22f0c8510451f293f405这样的字母数字字符,并且不应该超过2040字符(。

我找到了一个方法。

const  decrypt = function (num) {
const base = "tGVwFAPiJqh3maNHdZfby9eIQXcr2zvgD57YMn8KWCxkSUujpB10sL6oRTl4OE"
num = num.toString()
let lastChar, baseConverted = 0, index=0;
while(num !== ''){
lastChar = num.slice(-1);
baseConverted += base.indexOf(lastChar) * Math.pow(62,index);
index++;
num = num.slice(0, num.length-1);
}
return baseConverted;
};
const  encrypt = function (num) {
const base = "tGVwFAPiJqh3maNHdZfby9eIQXcr2zvgD57YMn8KWCxkSUujpB10sL6oRTl4OE"
// console.log(base.length)
let mod, baseConverted = '';
while(num){
mod = num%62;
baseConverted = base.slice(mod, mod+1)+baseConverted;
num = Math.floor(num/62);
}
return baseConverted;
};
module.exports = {
encrypt,
decrypt
}

我之所以想要它,是因为我想在与客户端共享资源之前加密资源的所有id
当收到请求时,它将解密密钥。

最新更新