私は、モバイルプラットフォーム用の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;
}
を使用して私は、暗号化するための復号から同じコードを使用しますが暗号化するために復号化から暗号モードを変更しました。しかし、暗号化されたパスワードをコンソールに出力すると、データベースに格納される文字列と類似していないゴミが印刷されます。あなたがそう
byte[] encoded = cipher.doFinal(Base64.decodeBase64(encryptedPassword.getBytes()));
を呼び出している
私は、暗号化を行うために、次のコードを使用している
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