java中的256位Blowfish加密

时间:2014-03-17 07:43:31

标签: java encryption blowfish

我正在尝试加密数据并使用256位blowfish将它们发送到服务器再见,但我不知道密钥大小的正确提供商是什么。我试图改变CFB32和CFB8但是不起作用我试过用8 16和32但是它不起作用。我试过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);

2 个答案:

答案 0 :(得分:2)

如果你得到" java.security.InvalidKeyException:非法密钥大小"当尝试使用256的密钥大小时,您需要为JDK / JRE下载JCE Unlimited Strength Jurisdiction Policy Files。无限制策略允许您使用大于predefined limits的密钥大小(128位用于河豚)。 可以下载Oracle JDK 7无限制JCE策略here,确保阅读存档中包含的readme.txt并按照说明进行操作。

如果你得到" java.security.InvalidAlgorithmParameterException:错误的IV长度:必须是???字节长"然后,实际的IV数组长度与Cipher.getInstance()参数中指定的模式和填充所期望的IV长度不匹配。对于" Blowfish / CFB8 / NoPadding" IV应该是8个字节长,但在你的代码中你创建一个16字节长的IV阵列。

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

答案 1 :(得分:0)

对于256位Keysize,需要在项目中添加JCE jar,并且引用的代码将适用于此。

JCE Jar:http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

BlowfishUtility:https://github.com/NikhilPareek88/BlowfishUtility