Visual Basic 6.0哈希函数

时间:2008-11-28 10:28:37

标签: hash vb6

在我的应用程序中,我需要在将其保存到文本文件之前对字符串进行哈希处理。有谁知道怎么做?

7 个答案:

答案 0 :(得分:2)

您使用哈希的目的是什么?这很重要,因为某些哈希算法(如MD5)适用于某些目的,但不适用于其他目的。

此链接显示VB6 implementation of MD5

答案 1 :(得分:2)

这是一个CRC32哈希函数:

http://www.vbcode.com/asp/showsn.asp?theID=471

答案 2 :(得分:2)

使用CAPICOM获取哈希的示例

将CAPICOM.DLL添加为项目参考

用途   DIM键As String   DIM sValue As String

Dim sEncrypedValue as String

Dim oCAP As CAPICOM.EncryptedData 设置oCAP =新CAPICOM.EncryptedData

使用oCAP。   .Algorithm.KeyLength = CAPICOM_ENCRYPTION_KEY_LENGTH_56_BITS   .Algorithm.Name = CAPICOM_ENCRYPTION_ALGORITHM_RC4
  .SetSecret键   .Content = sValue

结束

sEncrypedValue = objCAP.Encrypt(CAPICOM_ENCODE_BASE64)

解密: oCAP.SetSecret密钥 oCAP.Content = sEncrypedValue sValue = oCAP.Decrypt(CAPICOM_ENCODE_BASE64)

答案 3 :(得分:1)

(评论需要50个代表)

Joel提供的链接很好,但请注意,您需要将种子值更改为标准,以便生成与其他所有人相同的CRC32:

可选的ByVal Seed As Long =& HEDB88320

希望能为其他人节省30分钟的工作时间!

答案 4 :(得分:0)

您可以尝试使用CriptoASP。不要介意名称中的'ASP',它是一个可以从VB6实例化的ActiveX DLL。它提供了生成随机数的方法,使用MD2,MD4,MD5和SHA进行哈希以及某种加密/解密。

您可以从CriptoASP

下载

对不起,网络语言是西班牙语,但我认为你可以通过Doc. for CriptoASP底部的示例轻松使用COM,只需更改 Server.CreateObject 使用VB6中的新对象句子。

告诉我您是否需要翻译示例或文档。

要将其保存到文本文件,您可以使用FSO(文件系统对象)。

答案 5 :(得分:0)

我在这个方面取得了非常好的成绩,但实施方案是c

SDBM

此算法是为sdbm(ndbm的公共域重新实现)数据库库创建的。它被发现在加扰位方面做得很好,导致更好的键分配和更少的分裂。它也恰好是具有良好分布的良好的通用散列函数。实际函数是hash(i)= hash(i - 1)* 65599 + str [i];下面包含的是gawk中使用的更快版本。 [甚至还有一个更快的,duff-device版本]神奇常数65599是在空气中挑选出来的,同时尝试不同的常数,结果证明是一个素数。这是berkeley db(参见sleepycat)和其他地方使用的算法之一。

static unsigned long
sdbm(str)
unsigned char *str;
{
    unsigned long hash = 0;
    int c;

    while (c = *str++)
        hash = c + (hash << 6) + (hash << 16) - hash;

    return hash;
}

要将其移植到vb,计算就是这样的。 基本上它从左到右遍历字符串的字符,计算哈希为

newHash = the character (c) + (previousHashValue * 2^6) + 
                              (previousHashValue * 2^16) - 
                               previousHashValue**
previousHashValue = newHash

答案 6 :(得分:0)

您可以使用SHA128Managed

在C#.net dll中实现它