是使用AES或SHA256的sjcl.encrypt

时间:2012-12-04 15:04:31

标签: javascript encryption aes sha256 sjcl

我正在使用SJCL library 加密/解密邮件。我的问题是我不知道哪个使用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 个答案:

答案 0 :(得分:6)

SHA256和AES是两种不同类型的算法。

SHA256是加密哈希函数:http://en.wikipedia.org/wiki/SHA-2

AES是一种加密算法:http://en.wikipedia.org/wiki/Advanced_Encryption_Standard

因此,在您使用加密的情况下,您实际上正在使用AES。

答案 1 :(得分:5)

用于密钥生成的

pbkdf2使用HMACSHA256。但是AES-CCM的sjcl的默认加密密钥大小仅为128位。如果您需要AES-CCM-256,我认为您需要执行以下操作,您也无需直接致电pbkdf2

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

答案 2 :(得分:1)

根据对the source的粗略检查,我建议在CCM mode中使用AES。

SJCL homepage解释了所使用的加密技术,尽管可以肯定的是,每个功能文档根本没有解释它。