4

ノードでデータを暗号化し、RNCryptor で復号化するのに問題があります。私の理解では、RNCryptor は特別なデータ形式を使用していますか?

暗号文は次のように生成されます。

var crypto = require('crypto');
var cipher = crypto.createCipher('aes-256-cbc','InmbuvP6Z8');
var text = "123|123123123123123";
var crypted = cipher.update(text,'utf8','base64');
crypted += cipher.final('base64');

そして、私はこのように解読しています:

[RNDecryptor decryptData:plainText withPassword:password error:&error];

どうすればいいですか?現在復号化しようとすると、空の NSData が表示され、エラーは発生しません。

4

2 に答える 2

0

はい、RNCryptor は暗号化されたデータを独自の形式で出力します。独自の暗号化コードでこの形式を構築する (そして同じ暗号化パラメーターを使用する) 場合は、それを JNCryptor に渡して復号化できます。

RNCryptor フォーマット バージョン 3 の場合、最初の 34 バイトは次のとおりです。

  • byte[0] はバージョン (3) です。
  • byte[1] は、パスワードまたはキーのどちらを使用するかを定義します (パスワードの場合は 1、キーの場合は 0)。
  • バイト [2-9] は暗号化ソルトを運びます。
  • バイト [10-17] は HMAC ソルトを運びます。
  • バイト[18-33] は IV を運びます。

次に、暗号化された暗号文が続きます。

次に、最後の 32 バイトは、暗号文の (SHA256) HMAC を保持します。

仕様はこちら: https://github.com/RNCryptor/RNCryptor-Spec/blob/master/RNCryptor-Spec-v3.md

于 2016-02-23T14:25:06.147 に答える