问题标签 [hash]

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.

0 投票
19 回答
8070 浏览

python - 使用正则表达式进行哈希表/字典/地图查找

我试图弄清楚是否有一种相当有效的方法来在字典(或哈希、映射或任何你喜欢的语言调用它)中执行查找,其中键是正则表达式,字符串是针对组键。例如(在 Python 语法中):

(很明显,上面的例子不能像用 Python 写的那样工作,但这是我想做的事情。)

我可以想到一种天真的方法来实现这一点,其中我遍历字典中的所有键并尝试将传入的字符串与它们匹配,但随后我失去了哈希映射的 O(1) 查找时间和取而代之的是 O(n),其中 n 是我的字典中的键数。这可能是一件大事,因为我预计这本字典会变得非常大,我需要一遍又一遍地搜索它(实际上我需要为我在文本文件中读取的每一行迭代它,并且文件的大小可以是数百兆字节)。

有没有办法做到这一点,而不诉诸 O(n) 效率?

或者,如果您知道一种在数据库中完成此类查找的方法,那也很棒。

(任何编程语言都可以——我使用的是 Python,但我对这里的数据结构和算法更感兴趣。)

有人指出,不止一场比赛是可能的,这是绝对正确的。理想情况下,在这种情况下,我想返回一个包含所有匹配项的列表或元组。不过,我会满足于第一场比赛。

在那种情况下,我看不到 O(1) 是可能的;不过,我会满足于小于 O(n) 的任何东西。此外,底层数据结构可以是任何东西,但我想要的基本行为是我上面写的:查找一个字符串,并返回与正则表达式键匹配的值。

0 投票
7 回答
21372 浏览

php - MySQL 哈希函数实现

我知道 php 有 md5()、sha1() 和 hash() 函数,但我想使用 MySQL PASSWORD() 函数创建一个散列。到目前为止,我能想到的唯一方法就是查询服务器,但我想要一个函数(最好在 php 或 Perl 中),它可以在不查询 MySQL 的情况下做同样的事情。

例如:

MySQL 哈希 -> 464bb2cb3cf18b66

MySQL5 哈希 -> *01D01F5CA7CA8BA771E03F4AC55EC73C11EFA229

谢谢!

0 投票
3 回答
2070 浏览

c++ - 将 URL 编码为安全的文件名字符串

我正在编写一个简单的 C++ 类,我想在其中缓存从网络下载的图像的图片缩略图版本。因此,我想使用一个哈希函数,它接收 URL 字符串并输出一个适合作为文件名的唯一字符串。

有没有一种简单的方法可以做到这一点而无需自己重新编写函数?我四处寻找一个简单的图书馆,但找不到任何东西。当然,这是一个普遍的问题。

0 投票
11 回答
6924 浏览

c# - C# 读回加密的密码

我正在使用下面的代码将密码保存到注册表,如何将其转换回来?下面的代码不是我的,但它加密得很好。

谢谢

0 投票
2 回答
4635 浏览

asp.net - 使用 Python 对 ASP.NET 角色/成员身份创建的数据库中的原始用户名、哈希、盐进行身份验证

我们有一个当前应用程序,其中用户登录凭据存储在 SQL Server 数据库中。这些基本上存储为纯文本用户名、密码散列和此散列的关联盐。

这些都是由 ASP.NET 的成员/角色系统中的内置函数创建的。这是名为“joe”的用户和密码“password”的一行:

乔,kDP0Py2QwEdJYtUX9cJABg==,OJF6H4KdxFLgLu+oTDNFodCEfMA=

我已将这些内容转储到 CSV 文件中,并试图将其转换为 Django 的可用格式,该格式以这种格式存储其密码:

[算法]$[盐]$[哈希]

其中盐是纯字符串,散列是 SHA1 散列的十六进制摘要。

到目前为止,我已经能够确定 ASP 正在以 base64 格式存储这些哈希和盐。上面的那些值解码成二进制字符串。

我们使用反射器来收集 ASP 如何根据这些值进行身份验证:

本质上,从数据库中提取盐,然后 b64 将其解码为二进制表示。它对原始密码执行“GetBytes”,然后将它们连接起来,首先是盐。

然后它在这个新字符串上运行 SHA1 算法,base64 对其进行编码,并将其与存储在数据库中的值进行比较。

我试图编写一些代码来尝试在 Python 中重现这些哈希值,但我失败了。在我弄清楚它是如何翻译的之前,我将无法在 Django 中使用它们。这是我的测试方式:

我想知道是否有人可以看到我的方法中的任何缺陷或可以提出替代方法。也许您可以使用上面的算法以及上面的已知密码和盐并在您的系统上生成哈希?

0 投票
5 回答
2044 浏览

perl - 为什么 Perl 中的这个 map 语句不能编译?

这失败了:

出现此错误:

但这有效:

为什么?

0 投票
5 回答
8462 浏览

perl - 如何在 Perl 中将这些字符串转换为哈希?

我希望将具有多个分隔符的单个字符串转换为 key=>value 哈希结构。有没有一种简单的方法可以做到这一点?我目前的实现是:

其中“配置”包含:

最后的数字也需要删除,并保存在一个单独的 key=>value 对中,其名称可以是 'ip'。(如果不使代码过于冗长和复杂,我无法做到这一点)。

0 投票
8 回答
4390 浏览

asp.net - 我需要获取在 ASP.net 中散列的密码

我以散列形式存储我的所有密码。我需要找回这些密码,例如

我的密码是“123456”,我将其保存为散列的“3453474852dfdsfdsfdf”值。

我需要从散列值中检索原始密码。(获取密码)。

我怎样才能做到这一点?。我正在做 SHA1 哈希算法。

0 投票
2 回答
1384 浏览

data-structures - 哈希函数和表格大小为 2^p 的表

在从一个键的​​哈希码计算哈希表桶索引时,为什么当桶数组的大小是 2 的幂时,我们避免使用除法后的余数(模)?

0 投票
6 回答
504 浏览

function - 在设计哈希函数时您会考虑哪些问题?

我不是在寻找有关散列信息的链接。

我不是在寻找世界上最大的哈希函数。

我对描述的小故事很感兴趣

  • 你工作的问题领域
  • 您正在使用的数据的性质
  • 在为数据设计哈希函数时,您的思考过程是什么。
  • 你对你的结果有多满意。
  • 您从可能对其他人有价值的经验中学到的东西。