【发布时间】:2011-06-05 20:40:06
【问题描述】:
我正在为移动平台开发一个 Java 应用程序。该程序使用来自 Windows C# 应用程序的数据,该应用程序对移动应用程序将使用的在线数据库中的密码进行加密。
移动应用程序需要连接到数据库并从数据库中检索加密字符串并对其进行解密。
我使用以下代码可以正常解密
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;
}
感谢您能给我的任何帮助
【问题讨论】:
-
你为什么要加密密码?!请使用加盐密码的哈希值..
标签: c# encryption aes