Hash Visual basic 6.0哈希函数

Hash Visual basic 6.0哈希函数,hash,vb6,Hash,Vb6,在我的应用程序中,我需要先散列一个字符串,然后再将其保存到文本文件中。有人知道怎么做吗?您可以尝试使用ScriptOASP。不要介意名称中的“ASP”,它是一个可以从VB6实例化的ActiveX DLL。它提供了生成随机数、使用MD2、MD4、MD5和SHA进行散列以及某种加密/解密的方法 你可以从 很抱歉,web的语言是西班牙语,但我认为您可以通过下面的示例理解COM的非常简单的使用,只需使用VB6中的新对象语句更改Server.CreateObject即可 请告诉我您是否需要示例或文档的翻译

在我的应用程序中,我需要先散列一个字符串,然后再将其保存到文本文件中。有人知道怎么做吗?

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

你可以从

很抱歉,web的语言是西班牙语,但我认为您可以通过下面的示例理解COM的非常简单的使用,只需使用VB6中的新对象语句更改Server.CreateObject即可

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


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

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


此链接显示了一个。

我使用此链接获得了非常好的结果,但实现是c

sdbm

该算法是为sdbm(ndbm的公共域重新实现)数据库库创建的。人们发现它在置乱位方面做得很好,导致更好的密钥分布和更少的分裂。它也是一个很好的通用哈希函数,具有良好的分布。实际函数为hash(i)=hash(i-1)*65599+str[i];下面包含的是gawk中使用的更快版本。[还有一个更快、更差的设备版本]神奇常数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;
}

使用CAPICOM获取哈希的示例

添加
CAPICOM.DLL
作为项目参考

使用
将键变暗为字符串
作为字符串的DIM sValue
Dim sEncrypedValue作为字符串
将oCAP设置为CAPICOM.EncryptedData
设置oCAP=New CAPICOM.EncryptedData
与oCAP合作。
.Algorithm.KeyLength=CAPICOM\u加密\u密钥\u长度\u 56\u位
.Algorithm.Name=CAPICOM\u ENCRYPTION\u Algorithm\u RC4
.SetSecret键
.Content=s值
以
sEncrypedValue=objCAP.Encrypt(CAPICOM\u ENCODE\u BASE64)
要解密:
oCAP.SetSecret键
oCAP.Content=sEncrypedValue
sValue=oCAP.Decrypt(CAPICOM\u ENCODE\u BASE64)
(评论需要50次重复)

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

Optional ByVal Seed As Long = &HEDB88320

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

您应该指出散列的目的,比如隐藏密码、允许搜索等。shl的整个要点(链接不再有效。已断开)@RoadWarrior@Ahmad,我已经修复了链接。
Optional ByVal Seed As Long = &HEDB88320