У меня есть эта функция на oracle db:
BEGIN
key_raw := utl_i18n.string_to_raw(key,'AL32UTF8');
plaintext := dbms_crypto.decrypt(
src => chipertext,
typ => dbms_crypto.DES_CBC_PKCS5,
key => key_raw
);
return utl_i18n.raw_to_nchar(plaintext,'AL32UTF8');
END
и мне нужно реализовать в c#. Net
это то, что я сделал:
public static string DecryptDES(string strData,string skey)
{
byte[] clearData = Encoding.UTF8.GetBytes(strData);
byte[] key = Encoding.UTF8.GetBytes(skey);
DES desDecrypt = new DESCryptoServiceProvider();
desDecrypt.Mode = CipherMode.CBC;
desDecrypt.Padding = PaddingMode.PKCS7;
desDecrypt.Key = key;
ICryptoTransform transForm = desDecrypt.CreateDecryptor();
MemoryStream decryptedStream = new MemoryStream();
CryptoStream cryptoStream = new CryptoStream(decryptedStream, transForm, CryptoStreamMode.Write);
cryptoStream.Write(clearData, 0, clearData.Length);
cryptoStream.FlushFinalBlock();
byte[] plain = decryptedStream.ToArray();
return Encoding.UTF8.GetString(plain);
}
в oracle эта функция вызывается так:
select decrypt('BEB9B507432B91E116EC3F07364E38C5', 'testtesttest') from dual;
, когда этот метод вызывает в c#:
DecryptDES("BEB9B507432B91E116EC3F07364E38C5", "testtesttest")
, это ошибка возврата:
System.ArgumentException: 'Specified key is not a valid size for this algorithm.'
также я пробовал другой ключ и чип-текст, и он возвращает неверные данные.
Я считаю, что это как-то связано с форматом данных, так как это ошибка возврата на c#, есть предложения?