问题标签 [hashalgorithm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 适用于大文件和 512 KB 块的最快和轻量级散列算法 [C、Linux、MAC、Windows]
我正在研究一个涉及文件哈希计算的项目。该项目就像一个文件备份服务,所以当一个文件从客户端上传到服务器时,我需要检查该文件是否已经在服务器中可用。我为文件生成一个 CRC-32 哈希,然后将哈希发送到服务器以检查它是否已经可用。
如果文件不在服务器中,我曾经将文件作为 512 KB 块 [for Dedupe] 发送,我必须为每个 512 KB 块计算哈希。文件大小有时可能只有几 GB,并且多个客户端将连接到服务器。所以我真的需要一个快速和轻量级的文件散列算法。有任何想法吗 ..?
PS:我已经注意到 StackOverflow 中的一些 Hashing Algorithm 问题,但答案并不能完全比较此类任务所需的 Hashing Algorithms。我敢打赌这对一群人来说真的很有用。
hashalgorithm - 这两个哈希的哈希算法是什么?
有人有一个想法,这两个哈希使用了哪种哈希算法:
$S$DjzC6BKx24dNLU4UPyiCGXo6bJ3rDYbQdf/waPOwE9X36592NiFi
$S$DDLj98cyEH3azm0QvZq4E59PuczniTbfXiftWf5ED2qtcZYW5MTm
它看起来有点咸,但我无法确定盐是否是盐$S$
,$S$D
因为我只知道这两个。没有子字符串的这些哈希的长度$S$
将是 52。
php - 需要一种在 vba 中模拟 PHP crypt() 函数的方法
我在 PHP 中有这个功能
它已将密码存储在数据库中。我正在将此数据库转换为使用 Access 作为前端而不是 PHP 和 HTML。我需要 VBA / vbscript 代码来转换输入的密码,如果密码相同,则匹配上述函数的输出。
我已经尝试了所有普通的哈希算法,但它们都不起作用。我不确定 crypt 函数是如何工作的,但它似乎有某种种子值'$2a$07$twfAAA1954npfBBB1982oo'
加上密码。然后它可能使用一些标准的哈希算法。
有人可以给我代码,或者至少告诉我 crypt 函数如何使用该种子值,以便我可以crypt()
在 vba 中重新创建该函数吗?
我找到了 crypt 函数的源代码,但我对 PHP 的了解还不够强,无法理解到底发生了什么。
algorithm - 哈希表的数组大小?
我正在阅读一本关于算法的书,以找到更好的列表替代方案。书中提到哈希表的数组大小必须是需要添加的项目大小的两倍。但是,在讨论单独的链接时没有提及数组大小。数组大小是否仍然必须是要添加的项目的两倍?由于每个索引可以包含多个项目,因此它可以与项目的大小相同吗?这会影响性能吗?
java - Java哈希表或哈希图?
我一直在研究以找到更快的列表替代方案。在算法书中,hashtable
使用单独的链接似乎是最快的。然后我发现java有一个实现,hashtable
从我读到的似乎它使用了单独的链接。但是,存在同步的开销,因此hashmap
建议将 的实现作为hashtable
.
我的问题是:
- java是java
hashmap
中实现插入/删除/搜索的最快数据结构吗? - 在阅读时,一些帖子对
hashmap
. 一篇文章提到一个空hashmap
占用 300 个字节。hashtable
内存效率hasmap
比? - 此外,
hash
每个函数中的函数是否最有效strings
?
c# - How can I calculate a CRC32 as a signed integer in C#?
I'm a PHP developer and a little out of my element in C#. In PHP, there's a crc32() function which returns a signed integer for any string that you pass in.
So this is what I'm used to:
I would like to do the same thing in C#. I came across this C# class library but understand little about it. According to his instructions, I'm supposed to do this:
That gives me an output string of 27d86d6a
. What do I need to do instead to return a signed integer? (Which in this example should equal -662733300
)
c# - Can I just pass null as "output buffer" parameter of HashAlgorithm.TransformBlock()?
HashAlgorithm.TransformBlock()
has outputBuffer
parameter which is documented as A copy of the part of the input array used to compute the hash code. which sounds like my data will be read, used to alter the hash mechanism state and also copied to outputBuffer
.
I don't need that copying. It looks like I can pass null
instead and it looks working.
Should I expect any problems if I pass null
as outputBuffer
?
c# - Hashlib 和 System.Security.Cryptography.HashAlgorithm 之间的区别
我试图了解散列算法的工作原理,特别是 SHA3-512。为了了解它是如何工作的,我在 Google 中搜索了代码并遇到了Hashlib。该代码不起作用,因为我没有 Hashlib 库(不确定应该调用什么)。我怎样才能得到它,它是在 C# 中应用 SHA3-512 的唯一方法吗?
我想知道的一些基本的事情,
是什么
Hashlib
?是图书馆吗?
的输出结果/工作过程/功能是否
Hashlib
相同System.Security.Cryptography.HashAlgorithm
?如果不是,那么它们之间有什么区别?
编辑:很抱歉从中间删除了几个问题。因为我觉得他们不再需要在这里展示了。
sql - AdventureWorks2012 DB - 如何存储密码以及如何验证密码?
我从http://msftdbprodsamples.codeplex.com/releases/view/55330获得 AdventureWorks2012 DB,并尝试从 Person.Password 表中验证密码。“PasswordHash”列描述为“电子邮件帐户的密码”。并且“PasswordSalt”列描述显示“在对密码进行哈希处理之前与密码字符串连接的随机值”。
以下是数据库中的示例数据:
我如何知道使用哪种哈希算法来创建 PasswordHash?以及密码盐是如何生成的?
这是尝试验证密码的代码,但没有一个哈希算法起作用。任何人都可以对此有所了解吗?
c# - 是否可以复制 .NET HashAlgorithm(用于重复增量哈希结果)?
我有以下用例:
- 从文件中读取 n 个字节
- 计算这 n 个字节的 (MD5) 哈希
- 从文件中读取接下来的 m 个字节
- 为文件计算 (MD5) 哈希,最多 n+m 个字节
增量散列文件不是问题,只需调用TransformBlock
andTransformFinalBlock
。
问题是我需要多个共享其开始字节的数据散列,但是在我调用TransformFinalBlock
读取Hash
第一个n
字节后,我无法继续使用同一个对象进行散列并且需要一个新的对象。
搜索问题时,我发现Python和OpenSSL都可以选择复制散列对象来实现此目的:
hash.copy()
返回散列对象的副本(“克隆”)。这可以用来有效地计算共享一个公共初始子串的字符串的摘要。
EVP_MD_CTX_copy_ex() 可用于将消息摘要状态从输入复制到输出。如果要散列仅在最后几个字节中不同的大量数据,这很有用。out 必须在调用此函数之前进行初始化。
尽我所能搜索,我找不到任何可以让我在调用其方法之前有效== 复制这样一个对象的股票 C# HashAlgorithm的东西——然后继续用克隆对其余数据进行哈希处理。Clone()
TransformFinalBlock
我发现了一个MD5 的 C# 参考实现,它可以很容易地适应支持克隆(*),但强烈希望使用现有的东西而不是将这样的东西引入代码库。
(*) 事实上,据我所知,我费心检查的任何散列算法(与加密/解密相反)都是可以复制的,因为这种算法的所有状态都是摘要的一种形式。
那么我在这里遗漏了什么还是标准 C#/.NET 接口实际上没有提供复制哈希对象的方法?
另一个数据点:
微软自己的加密服务本机 API有一个函数CryptDuplicateHash
,其状态的文档引用:
CryptDuplicateHash 函数可用于创建以相同内容开头的两个不同内容的单独哈希。
自 Windows XP 以来一直存在。:-|
请注意。MD5:用例对密码不敏感。只是可靠的文件校验和。