Это sjcl.encrypt с использованием AES или SHA256

Я использую библиотеку SJCL для шифрования / дешифрования сообщений. У меня вопрос в том, что я не знаю, какой используется AES или SHA256

Вот мой код:

var h = sjcl.codec.hex, count = 2048 ;
salt = h.fromBits(sjcl.random.randomWords('10','0'));
var key = h.fromBits( sjcl.misc.pbkdf2(somePassword, h.toBits(salt), count) ) ;

Далее я могу зашифровать / расшифровать как

var encMessage = sjcl.encrypt(key, message) ;
sjcl.decrypt(key, encMessage) ;

AES или SHA256 или что-то еще?

3 ответа

Решение

pbkdf2 для генерации ключей используется HMAC с SHA256, Но по умолчанию размер ключа шифрования с sjcl для AES-CCM только 128 биты. Если ты хочешь AES-CCM-256Я думаю, вам нужно сделать следующее, вам также не нужно звонить pbkdf2 непосредственно.

var encMessage =sjcl.encrypt(somePassword,message,{count:2048,salt:salt,ks:256});

SHA256 и AES - это два разных типа алгоритмов.

SHA256 - это хеш-функция криптографии: http://en.wikipedia.org/wiki/SHA-2

AES - это алгоритм шифрования: http://en.wikipedia.org/wiki/Advanced_Encryption_Standard

Так что в вашем случае при использовании шифрования вы на самом деле используете AES.

Исходя из беглого осмотра источника, я бы предположил, что он использует AES в режиме CCM.

Домашняя страница SJCL объясняет используемые криптографические методы, хотя, по общему признанию, документация для каждой функции не объясняет это вообще.

Другие вопросы по тегам