Может кто-нибудь объяснить, как сделать TDES MA C в командной строке OpenSSL?
Я пытаюсь дублировать некоторые функции работающей C# программы в C для API OpenSSL, и У меня проблемы с копированием. Net MACTripleDES.ComputeHa sh функции в openssl. Вот пример с фиктивными данными и ключом:
using (MACTripleDES hmac = new MACTripleDES(Utilities.HexStringToByteArray("112233445566778899aabbccddeeff00")))
{
// Compute the hash of the input file.
byte[] hashValue = hmac.ComputeHash(Utilities.HexStringToByteArray("001000000000000000000000000000008000000000000000"));
string signature = Utilities.ByteArrayToHexString(hashValue);
PrintToFeedback("Bogus Signature = " + signature);
}
В результате получается «Поддельная подпись = A056D11063084B3E» Моя новая C программа должна предоставить тот же самый ха sh этих данных для взаимодействия с его более широкой средой. Но способ сделать это в openSSL ускользает от меня. Это показывает, что данные openssl начинаются так же, как данные C#:
cmd>od -tx1 bsigin
0000000 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0000020 80 00 00 00 00 00 00 00
stringified, 001000000000000000000000000000008000000000000000 MATCHes строка c#.
cmd>openssl dgst -md5 -mac hmac -macopt hexkey:112233445566778899aabbccddeeff00 bsigin
HMAC-MD5(bsigin)= 7071d693451da3f2608531ee43c1bb8a
Эти данные слишком длинные и мои ожидаемые данные не являются подстрокой. То же самое для -sha1 et c. Я попытался зашифровать и сделать дайджест по отдельности, ничего хорошего. MS не говорит, что это за ha sh, и я не могу найти документацию о том, как настроить MA C с TDES в openssl.
Так что я надеюсь, что кто-то здесь знает Достаточно об обеих платформах, чтобы дать мне хороший совет.