Это 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 объясняет используемые криптографические методы, хотя, по общему признанию, документация для каждой функции не объясняет это вообще.