VB.net MD5 контрольные суммы в шестнадцатеричный
У меня есть база данных из 700 000 сигнатур вирусов MD5 в следующем формате:
83968:961ed981485cea5ab3936496966ba0d6:Worm.Gaobot-318
86016:4bed8673ab3d695c52c233306ed3f733:Worm.Gaobot-319
Есть ли способ преобразовать контрольные суммы Md5 в действительные подписи Hex?
Если да, то как (используя VB.net) я преобразую контрольную сумму md5 в шестнадцатеричное, сначала удалите ее 83968:
вещь и оставить имя в том же формате?
Таким образом, конечный продукт будет выглядеть так:
{valid hex signature} :Worm.Gaobot-318
4 ответа
Я понимаю, что вы говорите. У вас есть большая коллекция вирусов MD5 из базы данных моллюсков. Но позже вы узнали, что MD5 не являются хорошими сигнатурами, а шестнадцатеричные сигнатуры хороши. А теперь вы хотите конвертировать MD5 в шестнадцатеричные. Это невозможно. Вы можете вычислить MD5 для данной строки, но вы не можете получить обратно строку из данного MD5.
Удачного кодирования!
$string fullStr = "83968:961ed981485cea5ab3936496966ba0d6:Worm.Gaobot-318 ";
$string name = fullStr.Split(":")[2];
$string md5 = fullStr.Split(":")[1];
Это даст вам имя и md5 без "83968" или ":"
Ваша "действительная шестнадцатеричная подпись" не является хешем MD5 - она слишком длинная. MD5 выдает 16 байтов, поэтому 32 шестнадцатеричных символа... ваш пример Eicar составляет 80 символов (40 байтов).
Вы сначала не указали, какой алгоритм используется для создания этой "действительной шестнадцатеричной подписи", но, предполагая, что там нет избыточности, у вас просто не хватает информации для ее создания. Это все равно что спрашивать, как составить конспект пьесы, когда вы знаете только первое слово каждой речи.
Похоже, ваши значения MD5 уже представлены в шестнадцатеричном формате. Так что вы хороши, чтобы пойти в этом направлении. Осталось только разделить строку на символ ":". Предполагая, что это ваш формат:
83968: 961ed981485cea5ab3936496966ba0d6: Worm.Gaobot-318
Вот некоторый код C# псевдо....
string fullStr = "83968:961ed981485cea5ab3936496966ba0d6:Worm.Gaobot-318 ";
string arr[] = fullStr.Split(":");
for(int i=0; i<arr.length; i++)
{
Console.WriteLine(arr[i]);
}