Я хочу расшифровать мою encrpyted String в Java на Android.Шифрование/дешифрование в C# и Java
С помощью следующего кода я зашифрован мои необработанных строк в C#:
public static string Encrypt(string decryptedString)
{
DESCryptoServiceProvider desProvider = new DESCryptoServiceProvider();
desProvider.Mode = CipherMode.ECB;
desProvider.Padding = PaddingMode.PKCS7;
desProvider.Key = Encoding.ASCII.GetBytes("password");
using (MemoryStream stream = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(stream, desProvider.CreateEncryptor(), CryptoStreamMode.Write))
{
byte[] data = Encoding.Default.GetBytes(decryptedString);
cs.Write(data, 0, data.Length);
cs.FlushFinalBlock();
return Convert.ToBase64String(stream.ToArray());
}
}
}
Я пытался расшифровать его в Java:
public String decrypt(){
String keyStr = "password";
String msg = "KGFL1GG5VLQ=";
String erg = "";
try{
KeySpec ks = new DESKeySpec(keyStr.getBytes("UTF-8"));
SecretKey key = SecretKeyFactory.getInstance("DES").generateSecret(ks);
IvParameterSpec iv = new IvParameterSpec(Hex.decodeHex("1234567890ABCDEF".toCharArray()));
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, key, iv);
byte[] decoded = cipher.doFinal(Base64.decodeBase64(msg));
erg = new String(decoded);
} catch (Exception e){
erg = "error";
}
return erg;
}
Я использую Викисклад кодек-1.8.jar. Он выходит из строя со следующей ошибкой:
W/dalvikvm(17859): VFY: unable to resolve static method 339: Lorg/apache/commons/codec/binary/Base64;.decodeBase64 (Ljava/lang/String;)[B
Пожалуйста, укажите, куда я иду.
Вы должны быть более точными, чем это. Что не работает? Это не дешифрование правильно, возникает исключение и т. Д.? – Msonic
Я думаю, что это похоже на: http://stackoverflow.com/questions/5147789/nosuchmethoderror-using-commonc-codec-in-android-application – Sandokas
Кроме того, в вашем коде есть несколько проблем, например, вы установили ключ шифрования на вашем .NET-коде, но вы не используете код Android, также вы устанавливаете код IV в своем коде Android, который у вас нет в коде C#. – Rafael