下面的代码虽然有效,但是当我连续投掷"给定最后一块没有正确填充"时,有些时候也是如此.我觉得我在某处发生了一个小错误.你能帮我解决一下这个问题吗?
异常堆栈:
Exception in thread "main" javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:811)
at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:676)
at com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:313)
at javax.crypto.Cipher.doFinal(Cipher.java:2086)
at MCrypt.decrypt(MCrypt.java:87)
at MCrypt.main(MCrypt.java:21)
Run Code Online (Sandbox Code Playgroud)
我的代码:
import java.security.SecureRandom;
import java.security.spec.KeySpec;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.SecretKeySpec;
public class MCrypt {
private int iterationCount = 10000;
private int saltLength = 8; // bytes; 64 bits
private int keyLength = 128;
public static void main(String[] args) throws Exception {
MCrypt mc = new MCrypt();
String encryptedData …Run Code Online (Sandbox Code Playgroud)