2016-12-28 2 views
0

Ich habe eine App in Visual Studio 2013, mit Passwort-Verschlüsselungsmethoden, und ich muss es auf Xamarin Android migrieren.Xamarin Android-Verschlüsselung GetBytes Methodenunterschied mit C#

Das Problem, das ich hatte, ist, dass die Verschlüsselungsmethode in Xamarin einen anderen Verschlüsselungsstring gibt.

Der Unterschied ist in GetBytes Methode.

Hier ist ein Teil meines Codes.

byte[] keyBytes = password.GetBytes(keySize/8); 

ist, kann ich nicht meine Encryptation ändern in meinem C# Applicaction

public static string Encript(string ptexto, string pClave) 
     { 
    return Encript2(ptexto, pClave + "[email protected]", "[email protected]", "MD5", 1, "@1B2c3D4e5F6g7H8", 128); 
     } 


private static string Encript2(string textoQueEncriptaremos, string passBase, string saltValue, string hashAlgorithm, int passwordIterations, string initVector, int keySize) 
     { 
      byte[] initVectorBytes = Encoding.ASCII.GetBytes(initVector); 
      byte[] saltValueBytes = Encoding.ASCII.GetBytes(saltValue); 
      byte[] plainTextBytes = Encoding.UTF8.GetBytes(textoQueEncriptaremos); 

      PasswordDeriveBytes password = new PasswordDeriveBytes(passBase,saltValueBytes, hashAlgorithm, passwordIterations); 
      byte[] keyBytes = password.GetBytes(keySize/8); 

      RijndaelManaged symmetricKey = new RijndaelManaged() 
      { 
       Mode = CipherMode.CBC 
      }; 

      ICryptoTransform encryptor = symmetricKey.CreateEncryptor(keyBytes,initVectorBytes); 
      MemoryStream memoryStream = new MemoryStream(); 
      CryptoStream cryptoStream = new CryptoStream(memoryStream, encryptor,CryptoStreamMode.Write); 
      cryptoStream.Write(plainTextBytes, 0, plainTextBytes.Length); 
      cryptoStream.FlushFinalBlock(); 
      byte[] cipherTextBytes = memoryStream.ToArray(); 
      memoryStream.Close(); 
      cryptoStream.Close(); 
      string cipherText = Convert.ToBase64String(cipherTextBytes); 
      return cipherText; 
     } 

die Linie, die den Unterschied machen, Gibt es eine Möglichkeit das gleiche Ergebnis in Xamarin zu erhalten?

Antwort

0

Aus der Dokumentation, die Sie überprüfen können, ist es normal, dass Sie verschiedene Byte-Array, GetByte() erhalten immer RANDOM Key-Bytes. more

GetBytes(Int32) : Byte[] 

Gibt pseudo-zufälligen Schlüssel Bytes.