小编Pha*_*ala的帖子

IllegalBlockSizeException:使用填充密码解密时,输入长度必须是 8 的倍数

我有以下方法:

public String decrypt(String strToBeDecrypted) {
    try {
        strToBeDecrypted = URLDecoder.decode(strToBeDecrypted, "UTF-8");
        DESKeySpec desKeySpec = new DESKeySpec(key);
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
        SecretKey skey = keyFactory.generateSecret(desKeySpec);

        IvParameterSpec ivSpec = new IvParameterSpec(iv);

        cipher.init(Cipher.DECRYPT_MODE, skey, ivSpec);

        byte[] keyByteArray = new BASE64Decoder().decodeBuffer(strToBeDecrypted);

        byte[] original = cipher.doFinal(keyByteArray);

        return new String(original, "UTF-8");
    } catch (Exception e) {
        logger.error(ExceptionUtil.getDetailedMessage(e));
    }
    return "";
}
Run Code Online (Sandbox Code Playgroud)

这是扔

"name=javax.crypto.IllegalBlockSizeException;message=Input length must be multiple of 8 when decrypting with padded cipher;"
Run Code Online (Sandbox Code Playgroud)

在下面一行:

 byte[] original = cipher.doFinal(keyByteArray);
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我这里有什么问题吗?

java encryption des

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

标签 统计

des ×1

encryption ×1

java ×1