VB.net MD5校验和到十六进制

时间:2011-02-12 16:41:02

标签: database vb.net md5 virus virus-definitions

我有一个包含以下格式的700,000个MD5病毒签名的数据库:

83968:961ed981485cea5ab3936496966ba0d6:Worm.Gaobot-318
86016:4bed8673ab3d695c52c233306ed3f733:Worm.Gaobot-319

有没有办法将Md5校验和转换为有效的十六进制签名?
如果是这样,我将如何(使用VB.net)将md5校验和转换为十六进制,删除第一个83968:并将名称保留为相同的格式?

所以最终产品看起来像:

{valid hex signature} :Worm.Gaobot-318

4 个答案:

答案 0 :(得分:1)

您的“有效十六进制签名”不是MD5哈希 - 它太长了。 MD5产生16个字节,因此32个十六进制字符......您的Eicar示例是80个字符(40个字节)。

您尚未指定首先使用哪种算法来提供“有效十六进制签名”,但假设那里没有冗余,您根本就没有足够的信息来生成它。这就像在你只知道每个演讲的第一个单词时询问如何制作剧本的概要。

答案 1 :(得分:1)

我明白你在说什么。您从clam数据库中收集了大量MD5病毒。但后来你才知道MD5不是好签名,但是十六进制签名很好。现在你想将MD5转换成十六进制。这是不可能的。您可以计算给定字符串的MD5,但不能从给定的MD5中获取字符串。

快乐的编码!

答案 2 :(得分:1)

$string fullStr = "83968:961ed981485cea5ab3936496966ba0d6:Worm.Gaobot-318 ";
$string name = fullStr.Split(":")[2];
$string md5 = fullStr.Split(":")[1];

这将为您提供名称和没有“83968”或“:”

的md5

答案 3 :(得分:0)

看起来您的MD5值已经以十六进制格式表示。所以你在这方面很好。唯一剩下的就是将字符串拆分为“:”字符。假设这是你的格式:

83968:961ed981485cea5ab3936496966ba0d6:Worm.Gaobot-318

这是一些C#psuedo代码......

string fullStr = "83968:961ed981485cea5ab3936496966ba0d6:Worm.Gaobot-318 ";
string arr[] = fullStr.Split(":");
for(int i=0; i<arr.length; i++)
{
    Console.WriteLine(arr[i]);
}