Вы можете использовать OpenSSL непосредственно в C # с оберткой OpenSSL.NET !
Кто-нибудь мог использовать SSCrypto Framework для Cocoa для шифрования текста, а затем расшифровать его в C # /. NET? Или может кто-нибудь предложить некоторые рекомендации?
Я почти уверен, что моя проблема связана с правильной настройкой криптографических настроек, но я не уверен в использовании Cocoa, поэтому я не могу сказать, какие настройки используются в библиотеке. Однако моя попытка расшифровать его выглядит как хеширование md5, режим CBC, заполнение нулями, и я понятия не имею, установлен ли IV или нет ...
Мой код C # выглядит так:
public static string Decrypt( string toDecrypt, string key, bool useHashing )
{
byte[] keyArray;
byte[] toEncryptArray = Convert.FromBase64String( toDecrypt );
if( useHashing )
{
MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
keyArray = hashmd5.ComputeHash( UTF8Encoding.UTF8.GetBytes( key ) );
hashmd5.Clear();
}
else
keyArray = UTF8Encoding.UTF8.GetBytes( key );
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
tdes.Key = keyArray;
tdes.Mode = CipherMode.CBC;
tdes.Padding = PaddingMode.Zeros;
ICryptoTransform cTransform = tdes.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock( toEncryptArray, 0, toEncryptArray.Length );
tdes.Clear();
return UTF8Encoding.UTF8.GetString( resultArray );
}
Когда я запускаю шифрование на стороне Cocoa, я получаю зашифрованный текст:
UMldOZh8sBnHAbfN6E / 9KfS1VyWAa7RN
но это не будет расшифровывать на стороне C # с тем же ключом.
Любая помощь приветствуется, спасибо.
c#,.net,cocoa,encryption,openssl,
Несколько вещей, на которые следует обратить внимание:
1- Убедитесь, что вы правильно интерпретируете строку ключа и данных. Например, это ключ, закодированный в ASCII вместо UTF8? Возможно ли это в формате binhex?
2- Вы не инициализируете IV (вектор инициализации) перед расшифровкой. Он должен соответствовать IV, который вы используете, для шифрования на стороне Cocoa.