2

Sjclを使用して、javascript アプリケーションから暗号化されたデータを送受信する小さなサービスを作成しようとしています。

残念なことに、sjcl のドキュメントAESには、暗号化されたデータの処理方法に関する情報が欠けています。彼らの暗号化メソッドは、何が何であるかを推測することしかできないサーバー属性を含むオブジェクトを返します。

{"iv":"i0t5BttfXwtY6hxuFSZxJg==",
"v":1,
"iter":1000,
"ks":128,
"ts":64,
"mode":"ccm",
"cipher":"aes",
"salt":"MZ8hpbz+5hU=",
"ct":"n5mR5jwawYwsaUV0xbcYXrcCXPWjR5qMG23qU5Spguz4jpjG5QdFMWSf"}

iterkstsmodecipherおよびを識別できますsalt。私の推測でctは、暗号化されたデータを表す暗号文です。しかし、とは何vですかiv

パラメータとして与えられた暗号文を解読しようctとしましたが、結果全体をパラメータとして与えようとしましたが、常にエラーが発生します:

var result = sjcl.json.encrypt(
  'pw123', 
  '{text: "this should be decrypted"}', 
  parameters, 
  rp
);

var originalText = sjcl.json.decrypt(
  'pw123', 
  result.ct,
  parameters,
  rp);

// Results in:
// Uncaught TypeError: Cannot read property 'replace' of undefined

ct復号化方法を使用して復号化するにはどうすればよいですか? 誰でもこれを経験し、簡単な例を挙げることができますか?

4

2 に答える 2

1

暗号化/復号化はデフォルトのパラメータで動作します:

var result = sjcl.json.encrypt(
  'pw123', 
  '{text: "this should be decrypted"}'
);

var originalText = sjcl.json.decrypt(
  'pw123', 
  result);

しかし、とは何vですかiv

vはおそらく暗号文のバージョン情報であり、SJCL の新しいバージョンで暗号化を解除できるようになっています。これは単純に 1 に設定され、コードでは使用されません。

これivは、CCM などのほとんどのブロック暗号モードに必要な初期化ベクトルです。AES の場合、長さは 16 バイト、または単純にブロック サイズです。

于 2015-02-06T12:14:57.047 に答える