我正在開發一個用於移動平臺的java應用程序。該程序使用來自Windows C#應用程序的數據,該應用程序將加密移動應用程序將使用的在線數據庫中的密碼。AES Java加密
移動應用程序需要連接到數據庫並從數據庫中檢索加密的字符串並對其進行解密。
我有解密工作正常使用下面的代碼
public String decrypt(String encryptedPassword)
{
String plainPassword = "";
try
{
SecretKeySpec key = new SecretKeySpec("hcxilkqbbhczfeultgbskdmaunivmfuo".getBytes("US-ASCII"), "AES");
IvParameterSpec iv = new IvParameterSpec("ryojvlzmdalyglrj".getBytes("US_ASCII"));
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
cipher.init(Cipher.DECRYPT_MODE, key, iv);
byte[] encoded = cipher.doFinal(Base64.decodeBase64(encryptedPassword.getBytes()));
plainPassword = new String(encoded);
}
catch (Exception ex)
{
Log.d("Decryption Error", ex.toString());
}
return plainPassword;
}
解密工作絕對沒問題,所以我已經使用了相同的代碼從解密的加密但從解密更改加密模式來加密。但是,當我向控制檯輸出加密的密碼時,它會打印出一堆垃圾,它顯示應該存儲在數據庫中的字符串不相似。
我用下面的代碼,以便做加密
public String encrypt(String plainPasword)
{
String password = "";
try
{
SecretKeySpec key = new SecretKeySpec("hcxilkqbbhczfeultgbskdmaunivmfuo".getBytes("US-ASCII"), "AES");
IvParameterSpec iv = new IvParameterSpec("ryojvlzmdalyglrj".getBytes("US_ASCII"));
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
cipher.init(Cipher.ENCRYPT_MODE, key, iv);
byte[] encoded = cipher.doFinal(plainPasword.getBytes());
password = new String(encoded);
}
catch (Exception ex)
{
Log.d("Encryption Error", ex.toString());
}
return password;
}
感謝您的幫助,您可以給我
你爲什麼要加密密碼?請使用鹹味密碼哈希.. – Axarydax 2011-01-08 19:30:39