【问题标题】:Java mcrypt_create_ivJava mcrypt_create_iv
【发布时间】:2014-02-11 10:24:26
【问题描述】:

Java 是否有等效的 mcrypt_create_iv 函数?

我正在创建一个论坛,我需要用户不仅可以在网站上注册,还可以在客户端内注册;如果可能,我希望两种注册方法都使用相同的加密。

【问题讨论】:

  • 哈,我完全倒着读了你的问题。开个玩笑,删了我的回答。在 Java 中,您可能只需要生成 X 个随机字节,因为我怀疑这种琐碎任务是否有内置帮助程序。

标签: java php encryption


【解决方案1】:

没有创建随机 IV 的单一调用,如果您将 IV 排除在外,那么 Oracle 实现将默认为零 IV(由 N 个字节组成的 IV 设置为 00 值,其中 N 是块尺寸)。另请注意,在 Java 中,getBlockSize() 方法返回的是字节数,而不是位数。

Cipher enCipher = Cipher.getInstance("AES/CBC/PKCS5Padding");

// create IV array of the correct size
final byte[] ivData = new byte[enCipher.getBlockSize()];
// create (or retrieve) a cryptographic secure random implementation (auto-seeded)
final SecureRandom rng = new SecureRandom();
// fill the IV array with random data
rng.nextBytes(ivData);
// generate the ParameterSpec (to create a general parameter for Cipher.init())
IvParameterSpec iv = new IvParameterSpec(ivData);
// and initialize with the new IV
enCipher.init(Cipher.ENCRYPT_MODE, key, iv);

【讨论】:

    猜你喜欢
    • 2012-03-15
    • 2012-08-27
    • 2014-01-28
    • 1970-01-01
    • 2012-09-14
    • 2016-05-03
    • 2015-10-16
    • 2019-09-27
    • 1970-01-01
    相关资源
    最近更新 更多