2013-09-09 3 views
0

Я хочу расшифровать мою 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 

Пожалуйста, укажите, куда я иду.

+1

Вы должны быть более точными, чем это. Что не работает? Это не дешифрование правильно, возникает исключение и т. Д.? – Msonic

+0

Я думаю, что это похоже на: http://stackoverflow.com/questions/5147789/nosuchmethoderror-using-commonc-codec-in-android-application – Sandokas

+0

Кроме того, в вашем коде есть несколько проблем, например, вы установили ключ шифрования на вашем .NET-коде, но вы не используете код Android, также вы устанавливаете код IV в своем коде Android, который у вас нет в коде C#. – Rafael

ответ