1

Javaで実装された次の復号化アルゴリズムがあります。情報「AES128」は、他の人が他の言語で実装するのに十分ですか、それともより正確な定義が必要ですか?

  // input data
  byte[] secretKey = { ... };
  byte[] encryptedData = { ... };

  // decryption
  SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
  random.setSeed(secretKey);
  KeyGenerator keyGen = KeyGenerator.getInstance("AES");
  keyGen.init(128, random);
  SecretKey sk = keyGen.generateKey();
  SecretKeySpec keySpec = new SecretKeySpec(sk.getEncoded(), "AES");
  Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
  IvParameterSpec IV16 = new IvParameterSpec(keySpec.getEncoded());
  cipher.init(Cipher.DECRYPT_MODE, keySpec, IV16);
  byte[] decrypted = cipher.doFinal(encryptedData);
4

3 に答える 3

4

暗号化アルゴリズム自体の名前は AES-128 です。これは、暗号ブロック連鎖モード(これは、複数の順次ブロックの暗号化を接続する方法を説明します) で使用され、 PKCS #5 パディング(これは、完全なブロックのサイズまでメッセージをパディングする方法を説明します) を使用します。他の言語では、モードとパディングを指定する手法が異なる場合があります。

于 2013-11-06T14:52:51.180 に答える
0

AES はアルゴリズムで、128bit はキー サイズです。私はそれがかなり明確であると言うでしょう...

于 2013-11-06T14:55:40.847 に答える