我是编程语言的新手,我使用的是PHP和mysql.我得到了一个在PHP中做哈希表的任务.我需要做的是,存储用户收集的项目然后显示它.在通过互联网进行一些研究后,我将在实施哈希表时执行以下步骤,如果我错了请纠正我:
>设置表格:
– >用户表:uid(int [5]),用户名(varchar [128]),item_id(int [8],items_id_hash(int [50])
– >项目表:item_id(int [5]),item_name(varchar [128]),items_id_hash(int [50])
>创建一个哈希函数(如何创建哈希函数?自己创建或从互联网上获取?)将密钥转换为哈希值然后插入数据库.例如:hash item_id = 001到哈希值=(例如)12345.然后插入到users表中.
>显示/搜索.从用户检索哈希值,然后将其与items表进行比较并显示它.
问题:
>我的步骤是否正确?
>我在哪里可以找到一个好的PHP哈希函数?我可以使用md5或sha1或盐吗?
解决方法:
我认为你的哈希表的想法有点[废弃]. Hashtables将密钥分解为相似的列表.例如:基于名字的第一个字母的哈希表,因此将有26个列表.您的哈希是名称的第一个字母,然后可以更快地搜索.
md5,sha1用于派生用于验证数据未被篡改的哈希值.它们通常有128位或160位版本.因此,它需要X数据并通过散列发送它以得到一个128位的字母数字字符串,无论它在哪里都应该是相同的.这通常是安全的事情.
编辑:扩展关于如何派生密钥的问题.
您可以利用数据模数来创建用于行的键.在示例数据%X中,其中X是您希望拥有的键的总数.这个问题是X很难找到;如果您有20个项目,那么将X设置为20是可行的,并且可以快速搜索,因为每个项目都有自己的行.但如果您有1000个项目,则执行%1000是不可行的.做一些像X = 75这样的事情会更好.
标签:php,mysql,hashtable
来源: https://codeday.me/bug/20190611/1215121.html