2015-11-24 16 views
1

Я шифрованияаудио файла, используя модуль crypto НПМ в Node.js и пытается расшифровать его в сторону андроид, используя тот же алгоритм и ключ.AES-256-CBC шифрование и дешифрование

Код шифрования является:

параметры Encyption

var crypto = require('crypto'), 
    algorithm = 'aes-256-cbc', 
    password = 'somepassword'; //encyption parameters 

функция шифрования

function encrypt(buffer) { 
    var cipher = crypto.createCipher(algorithm, password); 
    var crypted = Buffer.concat([cipher.update(buffer), cipher.final()]); 
    return crypted; 
} 

Теперь для Расшифровка, мы должны использовать некоторые IV (Вектор инициализации) и как исследование говорит not to use same IV for any two files.

Итак, я просто хочу знать сейчас , как специальный IV может быть установлен и случайные или отдельные капельницы могут быть созданы для каждого файла в Node.js, используя криптографию или любой другой модуль во время шифрования.

Будет здорово, если кто-то может помочь мне в этом.

+0

Если вы используете настоящие пароли (несколько символов, ограниченный набор символов), то вы не должны использовать этот код node.js. Это вызывает MD5, чтобы сгенерировать ключ из недостаточно надежного пароля. Вы должны использовать PBKDF2 для получения ключа от пароля со случайной солью и много итераций (более 9.000). Тогда вам также потребуется создать случайный IV. –

+0

Спасибо @ArtjomB. Это будет гораздо более полезно, если вы сможете объяснить больше для лучшего и гораздо более четкого понимания этого. –

ответ

0

создать IV, используйте следующую команду, чтобы получить 16 случайных байт:

var iv = crypto.randomBytes(16) 

затем, при создании шифра, измените

var cipher = crypto.createCipher(algorithm, password); 

в

var cipher = crypto.createCipheriv(algorithm, password, iv); 

IV не будет привязан к полученному зашифрованному тексту, поэтому вам нужно будет отправить его отдельно на сторону android (i t может быть отправлено открытым текстом).

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