2016-12-20 3 views
-1

Мне нужно зашифровать строку, но я почти получаю желаемый результат, я читаю в Интернете, что он имеет что-то делать с дополнением и iv_vector в конце, чтобы завершить, чтобы оставшиеся 8 байтов были одинаковыми длина как txtToEncrypt.Шифровать строку с Blowfish в NodeJS

Я использую эту библиотеку https://github.com/agorlov/javascript-blowfish

// function in Java that I need 
// javax.crypto.Cipher.getInstance("Blowfish/CBC/NoPadding").doFinal("spamshog") 


var iv_vector = "2278dc9wf_178703"; 
var txtToEncrypt = "spamshog"; 
var bf = new Blowfish("spamshog", "cbc"); 

var encrypted = bf.encrypt(txtToEncrypt, iv_vector); 

console.log(bf.base64Encode(encrypted)); 

Actual output: /z9/n0FzBJQ= 
What I need: /z9/n0FzBJRGS6nPXso5TQ== 

Если у кого есть какие-либо подсказки, пожалуйста, дайте мне знать. Весь день я искал весь Google.

+0

Что такое странное выход вы получаете? – Jason

+0

Это:/z9/n0FzBJQ = –

+0

Gotcha. Это явно связано с результатами, которые вы ищете, так что, похоже, это может быть какая-то деталь в модуле, который вы используете. Если вы все еще застряли позже, когда у меня есть время, я посмотрю на внутренний код и посмотрю, есть ли какие-либо подсказки. – Jason

ответ

0

Наконец, вот как зашифровать строку в NodeJS с Blowfish

// Module crypto already included in NodeJS 
var crypto = require('crypto'); 

var iv = "spamshog"; 
var key = "spamshog"; 
var text = "2278dc9wf_178703"; 
var decipher = crypto.createCipheriv('bf-cbc', key, iv); 
decipher.setAutoPadding(false); 
var encrypted = decipher.update(text, 'utf-8', "base64"); 
encrypted += decipher.final('base64'); 

console.log(encrypted); 

Returns: /z9/n0FzBJRGS6nPXso5TQ== 
Смежные вопросы