MySQL 哈希数据库

发布于 2024-10-15 18:48:47 字数 152 浏览 3 评论 0原文

我目前正在尝试创建一个保存哈希值(例如 MD5 哈希值)的 mySQL 数据库。我正在使用 PHPmyAdmin 版本 3.3.9 和 MySQL 客户端版本:4.1.22

我已经创建了一个名为 hashes 的数据库。我是 mySQL 新手,那么如何添加包含哈希数据的表?

I'm currently trying to create a mySQL database that holds hashes such as MD5 hashes. I'm using PHPmyAdmin version 3.3.9, and MySQL client version: 4.1.22

I already created a database named hashes. I'm new to mySQL so how can I add a table with data for a hash?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

只为一人 2024-10-22 18:48:48

哈希列应该是 CHAR(32),因为这是哈希的长度:

CREATE TABLE `hashes` (
    `id` INT NOT NULL AUTO_INCREMENT, 
    `hash` CHAR(32), 
    PRIMARY KEY (`id`)
);

mysql> describe hashes;
+-------+----------+------+-----+---------+----------------+
| Field | Type     | Null | Key | Default | Extra          |
+-------+----------+------+-----+---------+----------------+
| id    | int(11)  | NO   | PRI | NULL    | auto_increment |
| hash  | char(32) | YES  |     | NULL    |                |
+-------+----------+------+-----+---------+----------------+

如果您想从给定用户输入的表中进行选择:

-- Insert sample data:
mysql> INSERT INTO `hashes` VALUES (null, MD5('hello'));
Query OK, 1 row affected (0.00 sec)

-- Test retrieval:
mysql> SELECT * FROM `hashes` WHERE `hash` = MD5('hello');
+----+----------------------------------+
| id | hash                             |
+----+----------------------------------+
|  1 | 5d41402abc4b2a76b9719d911017c592 |
+----+----------------------------------+
1 row in set (0.00 sec)

您可以在 hash 上添加一个键> 以获得更好的性能。

Hash column should be a CHAR(32) as that is the length of the hash:

CREATE TABLE `hashes` (
    `id` INT NOT NULL AUTO_INCREMENT, 
    `hash` CHAR(32), 
    PRIMARY KEY (`id`)
);

mysql> describe hashes;
+-------+----------+------+-----+---------+----------------+
| Field | Type     | Null | Key | Default | Extra          |
+-------+----------+------+-----+---------+----------------+
| id    | int(11)  | NO   | PRI | NULL    | auto_increment |
| hash  | char(32) | YES  |     | NULL    |                |
+-------+----------+------+-----+---------+----------------+

If you want to select from the table given user input:

-- Insert sample data:
mysql> INSERT INTO `hashes` VALUES (null, MD5('hello'));
Query OK, 1 row affected (0.00 sec)

-- Test retrieval:
mysql> SELECT * FROM `hashes` WHERE `hash` = MD5('hello');
+----+----------------------------------+
| id | hash                             |
+----+----------------------------------+
|  1 | 5d41402abc4b2a76b9719d911017c592 |
+----+----------------------------------+
1 row in set (0.00 sec)

You can add a key on hash for better performance.

揽清风入怀 2024-10-22 18:48:48

哈希可以存储为二进制数据或(更方便)存储为文本。 PHP MD5 函数默认输出 32 个字符的字符串,因此您需要一个具有可容纳 32 个字符的字符串的字段的表。就这样。 :)

A hash can be stored as binary data or (more convenient) as text. The PHP MD5 function by default outputs a string of 32 characters, so you will need a table with a field that can hold a string of 32 character. That's all. :)

硪扪都還晓 2024-10-22 18:48:48

看看这里:
http://dev.mysql.com/doc/refman/5.1 /en/create-table.html

当然,您可以使用 phpMyAdmin 来完成此操作,但最好了解实际的 SQL。

Take a look here:
http://dev.mysql.com/doc/refman/5.1/en/create-table.html

You can do it using phpMyAdmin of course but it is better to understand the actual SQL.

无悔心 2024-10-22 18:48:48

如果打开数据库(单击左侧栏中的名称),将会出现“在数据库 dbname 上创建新表”部分。输入您想要的表的名称(例如哈希)以及您想要的字段数。

这是我们需要更多信息的地方:如果您只想存储哈希值和单独的哈希值,那么您将需要两个字段:一个唯一的哈希 ID(整数类型,auto_increment 设置为 true)和一个 32 个字符的文本字段。我有点不确定这个的实用性,所以如果您发布更多信息,我们也许能够帮助您更好地实现目标?

编辑:
在这种情况下,您将需要三个字段:哈希 ID(表中每个条目的唯一引用)、哈希以及与其关联的明文。将 hash id 设置为整数,并将 auto_increment 设置为 true。将哈希字段设置为长度为 32 的 varchar,并将明文字段设置为“text”。

If you open the database (click it's name in the left hand column), there will be a "Create new table on database dbname" section. Enter the name of the table you want (e.g. hashes), and the number of fields you want.

This is where we need a bit more information: if you just want to store hashes and hashes alone then you'll need two fields: a unique hash ID (of type integer, with auto_increment set to true) and a 32 character text field. I'm a little unsure of the utility of this, so if you post a bit more information we might be able to help you out with what you're trying to achieve a little better?

Edit:
In that case, you'll need three fields: a hash id (a unique reference for each entry in the table), the hash, and the plaintext to which it correlates. Set the hash id to be an integer, with auto_increment set to true. Set the field for the hash to be varchar of length 32, and the plaintext field to 'text'.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文