十六进制数字的Vernam密码输出

时间:2018-11-21 20:56:05

标签: javascript encryption

我在服务器端和前端都使用相同的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

0 个答案:

没有答案