Tôi đang cố mã hóa một chuỗi bằng C# và giải mã nó bằng Python. Phần mã hóa/giải mã hoạt động như mong đợi (tức là tôi có thể giải mã chuỗi ban đầu được mã hóa). Tuy nhiên, chuỗi trả về bởi Python có 2 byte phụ ở đầu và mỗi ký tự được phân tách bằng dấu cách.Giải mã bằng Python một chuỗi được mã hóa bằng cách sử dụng .NET
**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"
Tại sao tôi nhận được thêm hai byte này ở đầu chuỗi? Tại sao tất cả các khoảng trống đó trong chuỗi được giải mã? Bất kỳ ý tưởng tại sao?
Cảm ơn!
Encryption với 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");
Decryption với 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)
Tôi có thể giải mã bằng cách sử dụng Python để mã hóa thuật toán .NET RSA như thế nào? – Neo