我正在加密和解密。我对密码学非常陌生,当使用弹性城堡时,我面临垫块腐败异常错误的填充异常:调用dofinal时填充块损坏
这是我的加密/解密代码。
私有AESFastEngine引擎;
private BufferedBlockCipher cipher;
private final KeyParameter key=setEncryptionKey("testinggtestingg");
public KeyParameter setEncryptionKey(String keyText) {
// adding in spaces to force a proper key
keyText += " ";
// cutting off at 128 bits (16 characters)
keyText = keyText.substring(0, 16);
byte[] keyBytes = keyText.getBytes();
//key = new KeyParameter(keyBytes);
engine = new AESFastEngine();
cipher = new PaddedBufferedBlockCipher(engine);
return new KeyParameter(keyBytes);
}
public String encryptString(String plainText) {
try {
byte[] plainArray = plainText.getBytes();
cipher.init(true, key);
byte[] cipherBytes = new byte[cipher
.getOutputSize(plainArray.length)];
int cipherLength = cipher.processBytes(plainArray, 0,
plainArray.length, cipherBytes, 0);
cipher.doFinal(cipherBytes, cipherLength);
return (new String(cipherBytes));
} catch (DataLengthException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (InvalidCipherTextException e) {
e.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
// else
return null;
}
public String decryptString(String encryptedText) {
try {
byte[] cipherBytes = encryptedText.getBytes();
cipher.init(false, key);
byte[] decryptedBytes = new byte[cipher
.getOutputSize(cipherBytes.length)];
int decryptedLength = cipher.processBytes(cipherBytes, 0,
cipherBytes.length, decryptedBytes, 0);
cipher.doFinal(decryptedBytes,decryptedLength);
String decryptedString = new String(decryptedBytes);
// crop accordingly
int index = decryptedString.indexOf("\u0000");
if (index >= 0) {
decryptedString = decryptedString.substring(0, index);
}
return decryptedString;
} catch (DataLengthException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (InvalidCipherTextException e) {
e.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
// else
return null;
}
感谢您的replay.Now我的代码工作正常.......谢谢.. – pradeepds