0

什么加密方案返回一个短字符串?我想要一个少于 32 个字符的小结果。我还希望能够将其解密回原始明文。目的是电子邮件验证,代码通过电子邮件发送。收到代码后,用户登录网站并输入代码(或单击链接)。

编辑:解密很重要,因为在验证后我需要关联两个不相关的记录

谢谢

4

5 回答 5

1

类似的验证系统使用随机生成的字符串(在创建帐户时存储在数据库中),而不是加密数据。

于 2012-06-19T06:20:31.567 回答
0

需要解密回来吗!您可以生成不重复的随机字符串并将该代码分配给该用户。然后搜索代码并从数据库中获取用户。您可以添加附加功能来存储它的创建时间并在 24 小时内过期

于 2012-06-19T06:21:02.130 回答
0

如果您不需要安全性,单向哈希函数就足够了。CRC32 是一个不错的选择。您可以发送一条消息,然后等待用户输入相同的响应。

于 2012-06-19T06:21:55.433 回答
0

您在谈论加密,但显然需要散列函数。然后,您可以将哈希与数据库中您想要的任何数据模型(在这种情况下您想要“加密”的任何数据模型)相关联。散列就像键值存储的键一样使用,可以是完全随机的。加密字符串的最终大小始终与原始字符串的大小直接相关。否则,您可能会混淆哈希和加密。

所以一个简单的用例:

  • 用户注册到网站。
  • 注册控制器在“pending_users”表中创建一条新记录,该表只有 2 列:user_id 和 random_key。
  • 并且电子邮件被发送给用户,其中包含 random_key 的值,该值作为指向 verify.php?key=$random_key 的链接公开

当用户执行verification.php 控制器时,控制器会检查pending_users 表中是否存在$random_key。如果找到,它会删除记录并更改用户表中的标志(例如,active_account = true)。如果未找到,则将错误发送回用户。

希望这会有所帮助,干杯

于 2012-06-19T11:03:37.373 回答
0

你所要求的是不可能的。这是编写 pkzip 和 rar 等程序的公司愿意为之而牺牲的圣杯。想象一下,任何文件(少量数据)都可以压缩成 32 个字节。;)

不管怎样,你想做的事情以前已经做过了。通过在数据库中存储带有电子邮件的 uuid。quid 将邮寄给用户,他们可以在您的表单中输入。那么就只是简单的查询数据库找到对应的记录。

于 2012-06-19T11:03:44.333 回答