Я пишу программу .Net MVC, которая должна иметь возможность читать строки, которые были зашифрованы приложением Foxpro. Если бы я делал шифрование и дешифрование с самого начала, никаких проблем. Я не знаю, что методы foxpro Encrpyt и Decrypt делают изнутри, чтобы знать, как применять те же методы шифрования и дешифрования в C #.
Вот вызов Encrypt в foxpro.
encyptedString = ENCRYPT(saltString + unencryptedString, secretkey_aes256,2,0)
Вот вызов Decrypt в foxpro (вторая строка удаляет соль)
unencryptedString = DECRYPT(encryptedString, secretkey_aes256,2,0)
unencryptedString = SUBSTR(unencryptedString, LEN(saltString) + 1)
Я, очевидно, знаю значения для saltString и secretkey_aes256, и да, aes256 - подсказка, но я не знаю, что делают параметры 2 и 0.
Думал, что кто-то получит удовольствие от решения этой загадки, и, возможно, для них это даже не загадка. Я работал над этим пару часов, и я просто недостаточно разбираюсь с шифрованием и дешифрованием, чтобы понять это до сих пор.
Любая помощь приветствуется.
EDIT:
если 2 означает AES256, а 0 означает ECB, какие-либо подсказки относительно того, что я делаю неправильно с кодом ниже ??
public string DecryptString(string encrypted)
{
RijndaelManaged myAES = new RijndaelManaged();
myAES.KeySize = 256;
myAES.BlockSize = 256;
myAES.Mode = CipherMode.ECB;
myAES.Padding = PaddingMode.None;
byte[] _key = ASCIIEncoding.UTF8.GetBytes(_secret);
myAES.Key = _key;
byte[] encrypted_bytes = ASCIIEncoding.UTF8.GetBytes(@encrypted.Trim());
ICryptoTransform decrypto = myAES.CreateDecryptor();
string decrypted = "";
decrypted = ASCIIEncoding.UTF8.GetString(decrypto.TransformFinalBlock(encrypted_bytes, 0, encrypted.Trim().Length));
return decrypted;
}