小编Reb*_*cca的帖子

如何解决javax.crypto.IllegalBlockSizeException:数据不是块大小对齐

我正在做一个关于使用blowfish在java中进行加密和解密的任务.

我添加了一个提供程序,并获取实例"Blowfish/ECB/NoPadding",但在进行加密时仍然出现此错误.

Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
Run Code Online (Sandbox Code Playgroud)

例如:

public static byte[] encrypt(byte to_encrypt[], byte strkey[]) {
    try {           
        SecretKeySpec key = new SecretKeySpec(strkey, "Blowfish");
        Cipher cipher = Cipher.getInstance("Blowfish/ECB/NoPadding");
        cipher.init(Cipher.ENCRYPT_MODE, key);  
        return cipher.doFinal(to_encrypt); // <=========== error
    } catch (Exception e) { 
        e.printStackTrace();
        return null; 
    }
}
Run Code Online (Sandbox Code Playgroud)

导致

javax.crypto.IllegalBlockSizeException: data not block size aligned
    at org.bouncycastle2.jce.provider.JCEBlockCipher.engineDoFinal(JCEBlockCipher.java:686)
    at javax.crypto.Cipher.doFinal(Cipher.java:1171)
Run Code Online (Sandbox Code Playgroud)

谢谢.

java

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

java ×1