草庐IT

php - 唯一值哈希 = 唯一哈希?

从理论上讲,对唯一值进行哈希处理会产生唯一值吗?假设我有一个包含2列的数据库表:id和code。id是一个自动递增的int,code是一个varchar。如果我这样做......$code=sha1($id);...然后将$code存储到与$id相同的行中。我的代码列也会是唯一的吗?如果我追加当前时间呢?例如:$code=sha1($id.time());谢谢。 最佳答案 一般来说,答案是否定的。这很容易证明:SHA-1有2^160个不同的输出-160位,但还有更多的输入(例如,有2^320个不同的40字节字符串,它们不能全部映射到

php - URL 的完美哈希函数

有谁知道适用于大多数URL的64位整数URL的完美哈希函数? 最佳答案 如果您事先不知道要查询的键集,就不可能创建完美的哈希函数。如果您知道这一点,那么您可以使用诸如gperf或cmph之类的工具为您生成完美的哈希函数。http://cmph.sourceforge.net/我假设一个完美的散列函数并不是您真正想要的,因此您使用任何合理的散列函数就足够了,例如murmur散列或bobjenkins散列,以及散列表实现,例如__gnu_cxx::hash_map或来自谷歌的dense_hash_map和sparse_hash_map。

php - 如何转换 torrent 信息哈希以进行抓取?

我有一个来自磁力链接的种子哈希。例如:fda164e7af470f83ea699a529845a9353cc26576当我尝试获取有关水蛭和同伴的信息时,我应该请求:http://tracker.publicbt.com/scrape?info_hash=???我应该如何转换此请求的信息哈希?是url编码还是becoding?如何?在PHP中。 最佳答案 这是一个原始的十六进制表示。使用pack()用H来转换它。然后对其进行URL编码。 关于php-如何转换torrent信息哈希以进行抓

php - 对数组进行指纹识别的最快方法(从数据数组计算唯一哈希值)

我在我的WWW框架中使用了大量的API调用缓存和缓冲,我最终使用的其中一件事是“指纹识别”数据,以便匹配缓存文件名以及检测具有已经做好了。很多数据都是在数组中移动的,比如GET、POST等等。因此,API调用的唯一性取决于数据。因此我需要对这些信息进行指纹识别。要做到这一点,还需要从数据数组中生成一个“指纹”,并将其散列为一个我可以存储和比较的字符串。对于数组序列化,PHP中有serialize()和json_encode()。经过各种基准测试后,我认为json_encode()是序列化数组的更快方法,对此我感到非常满意。对于散列,有md5()和sha1()函数,根据我的基准测试,其中

php - 公共(public)页面上的 ID 散列与加密

我已经阅读了很多关于这个主题的SO帖子,但他们似乎认为它不重要而耸了耸肩,所以也许如果我给你我的真实世界的例子会影响答案。管理联系人列表和发送电子邮件的系统,但允许收件人使用唯一的url取消订阅。由于这是一个公共(public)页面,因此仅增加ID并取消订阅其他用户将是微不足道的。我不想为用户/联系人/列表的每个组合添加必须存储在数据库中的唯一哈希。最好的方法是什么?以下一项是否可以接受?a)加密所有ID并在服务器端解密b)根据3个ID和salt在url中包含一个hash,然后在服务器端确认 最佳答案 据我了解你的问题和评论,你的要

php - 散列或映射如何在 PHP 中工作

在Perl语言中,我定义了一个hash作为事物与另一事物之间的映射或元素的基本列表。如文档中所述..散列是一种基本数据类型。它使用key访问其内容。所以从根本上说,散列与数组很接近。它们的初始化甚至看起来非常相似。如果我要在Perl中创建一个映射,我可以做类似下面的事情来进行比较。my%map=(A=>[qw(abcd)],B=>[qw(cdfa)],C=>[qw(bdae)],);my@keys=keys%map;my%matches;formy$k(1..@keys){$matches{$_}|=2**$kfor@{$map{$keys[$k-1]}};}for(sortkeys%

PHP password_hash 检查两个哈希值

如果我有两个使用password_hash创建的密码哈希功能,我如何判断它们是否来自相同的基本密码?我知道它每次都使用不同的盐。我没有纯文本。例如:$2y$10$M6CnjqaxuUKNhg84T8NpLeylkUrvP1pzoZNhBWfpSzP2zJneuS1re和$2y$10$ZSlQNIbsLWfj7JLCSkvFLeS/adH.KnGZTgA1BcvyPXl7BEn7GhREO都来自散列test.如果将这两个散列作为参数,我该如何编写一个返回true的函数?这可能吗?所以:会输出:TRUEFALSE 最佳答案 不可以,除非

php - 更新用户时对 Laravel 空密码进行哈希处理

当我更新我的模型绑定(bind)表单时$user->update(Input::all())我的密码字段被重新哈希处理,即使它是空的。我已将我的User.php类设置为自动散列该字段,但不应跳过它,因为该字段为空吗? 最佳答案 在这种情况下你可以使用:Input::except('password')所以在你的Controller中你可以这样做:if(trim(Input::get('password'))==''){$data=Input::except('password');}else{$data=Input::all();}

php - password_hash 返回 NULL

documentation怎么来的?声明password_hash可以返回字符串或值false,但下面的代码行返回NULL?$password=password_hash($password1,PASSWORD_BDCRYPT,array('cost'=>10)); 最佳答案 尽管没有记录,但当为算法提供不正确的值时,该函数确实会返回NULL。目前支持的常量有:PASSWORD_BCRYPT默认密码本例中的拼写错误(PASSWORD_BDCRYPT而不是PASSWORD_BCRYPT)导致传递NULL值,这反过来导致与返回相同的值。

php - password_hash 中的成本选项是什么?

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭6年前。Improvethisquestion在PHP手册中有许多使用password_hash中的cost选项的例子。下面是一些示例代码,用于计算cost的合理值:$cost]);$end=microtime(true);}while(($end-$start)cost是什么意思?它有什么用?