在我的应用程序中,我需要在将其保存到文本文件之前对字符串进行哈希处理。有谁知道怎么做?
答案 0 :(得分:2)
您使用哈希的目的是什么?这很重要,因为某些哈希算法(如MD5)适用于某些目的,但不适用于其他目的。
答案 1 :(得分:2)
这是一个CRC32哈希函数:
答案 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中实现它