是否将PHP字符串加密和解密为固定长度?

问题描述 投票:-1回答:2

我有一个PHP字符串,可以说:

"This is a simple PHP string"

如何编码,所以我可以获取长度为32个符号的编码(散列)的字符串?

然后,我该如何解码回原始值?

在这种情况下,安全性对我来说并不重要,主要原因是将每个字符串减少到32个元素。

md5()所做的事情与此相似,但不幸的是,不可能从中获得原始值。

更新:我想将此哈希字符串存储在cookie中。并且浏览器每个站点只能存储4KB的Cookie。像hashids.org/php之类的库可以解决此问题,但是有机会对字符串进行编码。

php encryption-symmetric
2个回答
0
投票

我相信您距离所寻求答案的一半。您试图实现的目标称为哈希表。哈希表将您的哈希作为其值的键。

使用md5()散列字符串并将实际值存储在数组中。

$hashTable = [
    "1BB7F6BA4F968570D3D194BE8F3696FA" => "This is a simple PHP string",
    "C1BF639E0C2D39FEB0F96EC091FE5680" => "This is another PHP string"
];

您有主意...

当将散列存储为cookie时,也将其推入数组。

当您检索cookie时,您可以检查使用cookie作为键从表中获取字符串。

$cookieValue = $hashTable["1BB7F6BA4F968570D3D194BE8F3696FA"];

我不知道您尝试执行的全部操作,但是哈希表可以是静态数组,也可以将其设置为数据库表以便更好地访问。


-2
投票

生成随机字符串/哈希/任何内容,然后将其链接到您的原始值。确保没有新密钥的重复项。如果有重复项,请再次掷骰子...

使用这种类型的地图,您可以获得快速索引,而无需任何昂贵的算法来对事物进行编码/加密,并且确保没有重复的密钥,如果要将特定的编码恢复为原始字符串,则可能发生另一面的重复密钥。

© www.soinside.com 2019 - 2024. All rights reserved.