OpenSSL EVP和CryptoJS

时间:2014-06-16 10:46:28

标签: openssl cryptojs evp-cipher

据说CryptoJS与OpenSSL兼容,可以注意到running the demo

现在我想使用OpenSSL EVP API实现相同的行为:使用密码短语将字符串填充并与CryptoJS交换结果,CryptoJS必须能够解密它(知道密码)。

我的疑问是关于交换iv的标准方法(我认为这是CryptoJS和OpenSSL兼容性的关键)。

我应该如何发送iv以及加密的消息?

PS:请不要担心客户端加密/解密,因为我对用例感到满意。

更新

使用OpenSSL命令行工具加密

$ echo "Hello World" | openssl enc -aes-256-cbc -pass pass:"Secret Passphrase" -e -base64

U2FsdGVkX18Z8dTy1NR6 /克+ 9IxmbuT8iCblIjvV76E =

解密CryptoJS

var de = CryptoJS.AES.decrypt("U2FsdGVkX18Z8dTy1NR6/gm+9IxmbuT8iCblIjvV76E=","Secret Passphrase",{keySize: 256/32});

de.toString(CryptoJS.enc.Utf8); // output: Hello World

在我的用例中,我想使用EVP API而不是openssl命令行工具来加密。 我错过了如何在一个字符串中“填充”加密文本,iv和salt,就像在“U2FsdGVkX18Z8dTy1NR6 / gm + 9IxmbuT8iCblIjvV76E =”

上一样

更新2

我以the Saju Pillai example作为起点。

更新3

我的问题是关于加密文本的“可互换性”。 我得到以下部分

  • key: 79A38D896D90DBFE5E151A326602BC3A4A9081F3F9BEAC08EF058B96BA51CF19
  • iv: 76614325D3DA73698DDD220431AE298E00000000000000000000000000000000
  • 密文: QfCKTtVPlDcTOhC5ylwKFQ ==

我希望向客户端发送一个字符串,该字符串必须能够解密字符串并获取解密过程所需的部分(这正是我在CryptoJS和OpenSSL之间观察到的)

0 个答案:

没有答案