Tag: 哈希

PHP的password_verify()是否可以安全地防止超长密码(DoS攻击)?

一般攻击情形: 在2013年,Django有一个普遍的漏洞,因为攻击者可以通过非常大的密码创建极其强大的CPU计算[ 请参阅此处的安全声明 ]。 我不确定在使用PHP的password_verify()和其他密码散列方法时是否仍然可以进行此操作而无需进一步检查。 PHP文档说: 对algo参数使用PASSWORD_BCRYPT将导致密码参数被截断为最大长度为72个字符。 但是,PHP的代码MAYBE说了一些不同的东西: 然而,PHP 5.5.0的password_verify()函数背后的C代码并不直接限制传递的参数(可能在bcrypt算法的更深层次上?)。 此外, PHP实现不限制参数。 问题是: password_verify() (以及相同function集的其他function)是否通过最大化POST参数容易受到DoS的攻击? 还请考虑POST上载大小远大于4MB的站点范围配置情况。

如何从hsearch中删除元素

我正在使用GNU C库提供的hsearch_r函数。 我看到虽然我可以使用hsearch_r将元素添加到HASH表中并将操作作为ENTER传递,但我看不到从HASH表中删除元素或条目。 有人知道为什么会这样吗? 我可以执行以下操作来实现删除function。 我首先使用hsearch_r搜索它,其操作为FIND。 然后,一旦我得到一个指向hash_element的指针,然后我释放它。 那会有用吗? 如果我只能添加元素并搜索它们,那么哈希库有什么用处。 为什么不提供删除例程? 我试着用谷歌搜索hsearch库的源代码而无法找到它。 有人也能指出我的意思吗? http://linux.die.net/man/3/hcreate_r 编辑: 我也看到,如果我用动作ADD调用hsearch_r两次,那么它既不会抛出错误,也不会使用新值更新散列。 这很奇怪。 这意味着内部hsearch不实现替换function,我们必须自己完成,即首先进行搜索,然后如果存在,则删除第一个条目,然后添加一个新条目。 但是要做到这一点,我们需要从哈希中删除一个元素,我无法做到。

轻量级8字节散列函数算法

我需要从一个可变长度的字符串中提取一个8字节的摘要,所以我正在寻找一种我将在c / c ++中实现的算法。 这将是微控制器上数字签名程序的一部分,因此它必须是: 只需几行代码即可写入,因为固件必须尽可能少地保存; 资源消耗低,特别是ram(最好小于100字节); 足够强大,在字符串的任何一点更改单个字符都会改变整体摘要。 我看了一下现有的算法,比如crc64,但它们对我的平台来说似乎太重了。

如何将64位哈希值缩短到48位值?

我已经在库中有64位散列函数(C编码),但我只需要48位。 我需要将64位散列值减少到48位值,但它必须以安全的方式才能最小化冲突。 散列函数是一个非常好的64位散列函数。 它已经通过SMHasher(“DieHarder”哈希测试)进行了测试,并且certificate比Murmur2更好。 据我的同事们说,在lib中实现64位散列的算法是xxHash,用SMHasher测试并得到Q.Score为10! 对于那些想要查看它的人,xxHash的源代码可以在github.com上找到: github.com/Cyan4973/xxHash/releases/latest 。 基本思想是使64位散列值(或其中一部分)中的所有位对产生的48位散列值产生影响。 有没有办法做到这一点? [编辑后期]: 所以我实现了自己的48位(准)-UUID生成器。 请在此处查看完整的工作解决方案(包括源代码): https : //stackoverflow.com/a/47895889/4731718 。

src dest ip + port的哈希函数

所以,我正在研究用于散列4元组ip和端口以识别流的不同散列函数。 我遇到的一个是 ((size_t)(key.src.s_addr) * 59) ^ ((size_t)(key.dst.s_addr)) ^ ((size_t)(key.sport) << 16) ^ ((size_t)(key.dport)) ^ ((size_t)(key.proto)); 现在对于我的生活,我无法解释所使用的素数(59)。 为什么不是31,然后为什么要通过将运动乘以2的幂来弄乱它。是否有更好的哈希函数用于IP地址?

快速跨平台C / C ++哈希库

什么是高性能哈希库,它也是C / C ++的跨平台。 适用于MD5,SHA1,CRC32和Adler32等算法。 我最初的印象是Boost有这些,但显然不是(还)。 到目前为止我发现的最有希望的是Crypto ++,还有其他任何建议吗? http://www.cryptopp.com/这似乎相当全面。

你会如何设计一个完美哈希的函数?

感兴趣的领域是字符串匹配。 假设我有这样的结构。 typedef struct { char *name, int (*function)(); } StringArray StringArray s[] = { {“George”, func1}, {“Paul”, func2}, {“Ringo”, func3}, {“John”, func4}, {“”, NULL} /* End of list */ } 数组中有固定数量的字符串。 它们是硬编码的,如示例中所示。 如果表发生变化,则需要重新评估散列函数的质量。 我想将哈希函数应用于字符串,如果字符串与数组中的字符串匹配,则调用该函数。 这需要一个完美的哈希函数。 不允许冲突。要求散列的目的是在查找上获得O(1)性能。 您在设计function时有什么想法?

如何在C编程中使用SHA1散列

我正在尝试编写一个certificateSHA1几乎无冲突的C程序,但我无法弄清楚如何为我的输入值实际创建哈希。 我只需要创建哈希值,并将hex值存储到一个数组中。 经过一些Google搜索,我发现OpenSSL文档指示我使用它: #include unsigned char *SHA1(const unsigned char *d, unsigned long n, unsigned char *md); int SHA1_Init(SHA_CTX *c); int SHA1_Update(SHA_CTX *c, const void *data, unsigned long len); int SHA1_Final(unsigned char *md, SHA_CTX *c); 我相信我应该使用unsigned char * SHA1或SHA1_Init,但我不确定参数是什么,因为x是我要输入的输入。 有人请为我清楚这个吗? 谢谢。

什么是英语单词的好哈希函数?

我有很多英文单词,我想哈希。 什么是良好的散列函数? 到目前为止,我的散列函数将字母的ASCII值相加,然后以表格大小为模。 我正在寻找一些高效而简单的东西。