以下AES-128算法的准确名称是什么?

时间:2013-11-06 14:49:56

标签: java encryption

我在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);

3 个答案:

答案 0 :(得分:4)

加密算法本身的名称是AES-128。它在cipher block chaining mode(这描述了如何连接多个连续块的加密)和PKCS #5 padding中使用(这描述了如何将消息填充到完整块的大小)。其他语言可能有不同的技术来指定模式和填充。

答案 1 :(得分:0)

AES是算法,密钥大小为128位。我会说这很清楚......

答案 2 :(得分:0)

该算法的基本属性是:

  1. AES
  2. 128位密钥
  3. CBC阻止
  4. PKCS-5又名PKCS-7
  5. 还使用了以下自定义策略:

    1. 使用密码短语生成自定义IV(糟糕的风格)
    2. 从密码短语生成自定义密钥
    3. 更改任何点,更改所有内容:生成的字节数和解密代码。