Ich versuche, eine Zeichenfolge mit C# zu verschlüsseln und entschlüsseln sie mit Python. Der Verschlüsselungs-/Entschlüsselungsteil funktioniert wie erwartet (d. H. Ich bin in der Lage, die ursprünglich verschlüsselte Zeichenfolge zu entschlüsseln). Die von Python zurückgegebene Zeichenfolge hat jedoch am Anfang zwei zusätzliche Bytes und jedes Zeichen ist durch ein Leerzeichen getrennt.Entschlüsseln in Python eine Zeichenfolge, die mit .NET verschlüsselt
**Original string** (before encryption -- encrypted using C#) = "Something you want to keep private with AES"
**Decrypted string** (using Python) = "��S o m e t h i n g y o u w a n t t o k e e p p r i v a t e w i t h A E S"
Warum bekomme ich diese zwei zusätzlichen Bytes am Anfang der Zeichenfolge? Warum all diese Leerzeichen in der entschlüsselten Zeichenkette? Irgendeine Idee warum?
Danke!
Verschlüsselung mit C#
public static string Encrypt<T>(string value, string password, string salt)
where T : SymmetricAlgorithm, new()
{
DeriveBytes rgb = new Rfc2898DeriveBytes(password, Encoding.Unicode.GetBytes(salt));
SymmetricAlgorithm algorithm = new T();
byte[] rgbKey = rgb.GetBytes(algorithm.KeySize >> 3);
byte[] rgbIV = rgb.GetBytes(algorithm.BlockSize >> 3);
ICryptoTransform transform = algorithm.CreateEncryptor(rgbKey, rgbIV);
using (MemoryStream buffer = new MemoryStream())
{
using (CryptoStream stream = new CryptoStream(buffer, transform, CryptoStreamMode.Write))
{
using (StreamWriter writer = new StreamWriter(stream, Encoding.Unicode))
{
writer.Write(value);
}
}
return Convert.ToBase64String(buffer.ToArray());
}
}
string plain = "Something you want to keep private with AES";
string encrypted = CipherUtility.Encrypt<AesManaged>(plain, "password", "salt");
Entschlüsselungs mit Python + PyCrypto
import base64, sys
import Crypto.Cipher.AES
password = base64.b64decode('PSCIQGfoZidjEuWtJAdn1JGYzKDonk9YblI0uv96O8s=') # See rgbKey
salt = base64.b64decode('ehjtnMiGhNhoxRuUzfBOXw==') # See rgbIV
aes = Crypto.Cipher.AES.new(password, Crypto.Cipher.AES.MODE_CBC, salt)
text = base64.b64decode('QpHn/fnraLswwI2Znt1xTaBzRtDqO4V5QI78jLOlVsbvaIs0yXMUlqJhQtK+su2hYn28G2vNyLkj0zLOs+RIjElCSqJv1aK/Yu8uY07oAeStqRt4u/DVUzoWlxdrlF0u')
print aes.decrypt(text)
Wie kann ich mit Python für .NET RSA Algorithmus Verschlüsselung entschlüsseln? – Neo