java - java中的256位Blowfish加密

标签 java encryption blowfish

我正在尝试加密数据并使用 256 位 Blowfish 将它们发送到服务器,但我不知道 key 大小的正确提供者是什么。我尝试更改 CFB32 和 CFB8,但不起作用 我尝试使用 8 16 和 32 进行 iv,但不起作用。我尝试过 OAEPWithSHA-256AndMGF1Padding 也不起作用。 当我使用blowfish/ECB/PKCS1Padding时,它给我消息找不到任何提供者支持blowfish/ECB/PKCS1Padding。

   // Create a Blowfish key
    KeyGenerator keyGenerator = KeyGenerator.getInstance("Blowfish");

    // Now set the keysize to 256 bits
    keyGenerator.init(256);

    Key key = keyGenerator.generateKey();

    System.out.println("Done generating the key.");

    // Create a cipher using that key to initialize it
    Cipher cipher = Cipher.getInstance("Blowfish/CFB8/NoPadding");


        //Cipher encrypter = Cipher.getInstance("Blowfish/C/NoPadding");
    System.out.println("good here");
     SecureRandom random = new SecureRandom();
    byte[] iv = new byte[16];
    random.nextBytes(iv);


  IvParameterSpec spec = new IvParameterSpec(iv);

    cipher.init(Cipher.ENCRYPT_MODE, key,spec);

最佳答案

如果您在尝试使用 256 key 大小时收到“java.security.InvalidKeyException:非法 key 大小”,则需要为您的 JDK/JRE 下载 JCE 无限强度管辖策略文件。无限制策略将允许您使用大于 predefined limits 的 key 大小。 (河豚为 128 位)。 Oracle JDK 7无限制JCE策略可以下载here ,请务必阅读存档中包含的 readme.txt 并按照说明进行操作。

如果您收到“java.security.InvalidAlgorithmParameterException:错误的 IV 长度:必须是 ??? 字节长”,则实际 IV 数组长度与模式和填充中指定的所需 IV 长度不匹配Cipher.getInstance() 参数。对于“Blowfish/CFB8/NoPadding”,IV 应为 8 字节长,但在代码中您创建了一个 16 字节长的 IV 数组。

如果您还有其他问题,那么您应该真正更新您的问题并指定实际问题是什么以及实际异常(最好是堆栈跟踪)是什么。

关于java - java中的256位Blowfish加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22449053/

相关文章:

encryption - 在 Java Card 框架中集成自定义分组密码

C# RSACryptoServiceProvider ToXmlString()/FromXmlString() 方法

hash - BCrypt:如何确定两个哈希值是否指向相同的密码

PHP mcrypt 到 openssl BF-CBC : how to get the same encrypted value

java - 从另一个类文件访问方法?

java - 理解代码中的 UML 关联

java - 在 JavaFx 应用程序的不同分辨率下闪烁白屏

java - WebSphere 自定义密码加密

java - 我想使用 org.json.simple.JSONObject 生成以下 JSON 数据对象,如何在 java 中执行此操作?

php - 有没有办法在 PHP 5.2 中使用 bcrypt "hashing"?