2015-08-07 4 views
3

Я пытаюсь зашифровать и, соответственно, расшифровать строку.

Когда я с указанием схемы кодирования, как 'UTF-8', я получаю результаты, как и ожидалось:Шифрование и дешифрование в Node.js

function encrypt(text) { 
     var cipher = crypto.createCipher(algorithm, password) 
     var crypted = cipher.update(text, 'utf8', 'hex') 
     crypted += cipher.final('hex'); 
     return crypted; 
    } 

    function decrypt(text) { 
     var decipher = crypto.createDecipher(algorithm, password) 
     var dec = decipher.update(text, 'hex', 'utf8') 
     dec += decipher.final('utf8'); 
     return dec; 
    } 

//text = 'The big brown fox jumps over the lazy dog.' 

Выход: (UTF-8 кодирование)

enter image description here

Но когда я пытаюсь сделать это с 'base-64», его дает мне неожиданные результаты:

function encrypt(text) { 
    var cipher = crypto.createCipher(algorithm, password) 
    var crypted = cipher.update(text, 'base64', 'hex') 
    crypted += cipher.final('hex'); 
    return crypted; 
} 

function decrypt(text) { 
    var decipher = crypto.createDecipher(algorithm, password) 
    var dec = decipher.update(text, 'hex', 'base64') 
    dec += decipher.final('base64'); 
    return dec; 
} 

Выход: (база-64 кодирования)


Я не могу понять, почему схема базового 64 кодирования не принимает пробелы и '.' в правильном формате.
Если кто-то знает это, пожалуйста, помогите мне в получении лучшего понимания для этого. Любая помощь приветствуется.

ответ

1

Если вы правильно поняли, вы вызываете оба метода шифрования с той же строкой: The big brown fox jumps over the lazy dog.. Дело в том, cipher.update «s подпись выглядит следующим образом:

cipher.update(data[, input_encoding][, output_encoding])

Так во втором методе зашифровать, вы используете 'base64' в качестве входного кодирования. И ваша строка не кодируется base64. Base64 не может иметь пробелы, периоды и т. Д.

Возможно, вы захотите сначала закодировать его в base64. Вы можете увидеть ответы здесь, чтобы посмотреть, как это сделать: How to do Base64 encoding in node.js?

Затем вы можете использовать свой второй метод шифрования. После того, как вы расшифруете его, вы снова получите строку с кодировкой base64, и вам придется ее декодировать. В приведенном выше вопросе также показано, как декодировать из base64.

+0

Thankx много @ralh Это помогло мне лучше понять кодировку base64 и все такое. :) –

Смежные вопросы