加密到短字符串

时间:2012-06-19 06:18:24

标签: php encryption

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

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

谢谢

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

这是一个简单的用例:

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

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

希望这有帮助, 干杯

答案 4 :(得分:0)

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

无论如何,你以前做过的事情已经完成了。通过将带有电子邮件的uuid存储在数据库中。 quid将邮寄给用户,他们可以在您的表单中输入。然后它只是一个简单的数据库查询来查找相应的记录。