我在服务器端和前端都使用相同的Vernam Cipher算法来加密/解密密码。但是,当我解密加密的密码时,确实得到了正确的值,因为加密的密码不是ASCII(8位)字符。我只想将密码加密为8位ASCII,然后再发送到服务器或从服务器发送出去,但是由于输出只是一堆我认为不是ASCII的十六进制数字,所以我越来越难以通过网络并保存在数据库中。任何帮助将不胜感激。
const crypto = {
key: 'catchmeifyoucan',
hash: function(string, key) {
const len = string.length
let ASCII = undefined;
let vernomChar = undefined;
let output = '';
if(this.key.length < string.length) {
this.key += this.key
}
for (let i = 0; i < string.length; i++) {
ASCII = (string.charCodeAt(i) ^ key.charCodeAt(i))
vernomChar = String.fromCharCode(ASCII)
output += vernomChar
}
return output
},
encrypt: function(string) {
return this.hash(string, this.key)
},
decrypt: function(string) {
return this.hash(string, this.key)
}
}
let encrypted = crypto.encrypt('text')
let decrypted = crypto.decrypt(encrypted)
console.log('encrypted',encrypted) // output: <0x17><0X04><0x0c><0x17>
console.log('decrypted',decrypted) // output: text