相关疑难解决方法(0)

非法块大小异常当使用填充密码解密时,输入长度必须是16的倍数

在我的应用程序中,我使用secretKey加密和解密数据.为此,我使用AES算法.但我在解密时遇到异常,使用密钥在三个已经加密的值中有一个值.

例外情况是:

Illegal Block Size Exception Input length must be multiple of 16 when decrypting with padded cipher.
Run Code Online (Sandbox Code Playgroud)

以下是我的代码:

功能来加强价值

public static String symmetricEncrypt(String text, String secretKey) {
    BASE64Decoder decoder = new BASE64Decoder();
    byte[] raw;
    String encryptedString;
    SecretKeySpec skeySpec;
    BASE64Encoder bASE64Encoder = new BASE64Encoder();
    byte[] encryptText = text.getBytes();
    Cipher cipher;
    try {
        raw = decoder.decodeBuffer(secretKey);
        skeySpec = new SecretKeySpec(raw, "AES");
        cipher = Cipher.getInstance("AES");
        cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
        encryptedString = bASE64Encoder.encode(cipher.doFinal(encryptText));
    } 
    catch (Exception e) {
        e.printStackTrace();
        return "Error";
    }
    return encryptedString;
} …
Run Code Online (Sandbox Code Playgroud)

java security encryption-symmetric

7
推荐指数
1
解决办法
4万
查看次数

如何解决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中的加密消息

我是一个关于使用java的bouncycastle进行加密的项目.

但是,当我加密消息时,它会为我抛出异常.

javax.crypto.IllegalBlockSizeException:数据不是块大小对齐

我正在使用Blowfish/ECB/NoPadding,消息是一个xml.

public static void main(String args[]){ 
     String message = "<abc>ABCDEFG</abc>"; 
     String key = "key"; 
     byte[] b = encrypt(message.getBytes(), key.getBytes());
}

public byte[] encrypt(byte encrypt[], byte en_key[]) { 
     try { 
           SecretKeySpec key = new SecretKeySpec(en_key, "Blowfish"); 
           Cipher cipher = Cipher.getInstance("Blowfish/ECB/NoPadding"); 
           cipher.init(Cipher.ENCRYPT_MODE, en_key); 
           return cipher.doFinal(encrypt); 
     } catch (Exception e) { 
           e.printStackTrace();
           return null; 
         }

} 
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我吗?

谢谢

java

0
推荐指数
1
解决办法
4817
查看次数

标签 统计

java ×3

encryption-symmetric ×1

security ×1