我有一个PHP字符串,可以说:
"This is a simple PHP string"
如何编码,所以我可以获取长度为32个符号的编码(散列)的字符串?
然后,我该如何解码回原始值?
在这种情况下,安全性对我来说并不重要,主要原因是将每个字符串减少到32个元素。
md5()
所做的事情与此相似,但不幸的是,不可能从中获得原始值。
更新:我想将此哈希字符串存储在cookie中。并且浏览器每个站点只能存储4KB的Cookie。像hashids.org/php之类的库可以解决此问题,但是有机会对字符串进行编码。
我相信您距离所寻求答案的一半。您试图实现的目标称为哈希表。哈希表将您的哈希作为其值的键。
使用md5()
散列字符串并将实际值存储在数组中。
$hashTable = [
"1BB7F6BA4F968570D3D194BE8F3696FA" => "This is a simple PHP string",
"C1BF639E0C2D39FEB0F96EC091FE5680" => "This is another PHP string"
];
您有主意...
当将散列存储为cookie时,也将其推入数组。
当您检索cookie时,您可以检查使用cookie作为键从表中获取字符串。
$cookieValue = $hashTable["1BB7F6BA4F968570D3D194BE8F3696FA"];
我不知道您尝试执行的全部操作,但是哈希表可以是静态数组,也可以将其设置为数据库表以便更好地访问。
生成随机字符串/哈希/任何内容,然后将其链接到您的原始值。确保没有新密钥的重复项。如果有重复项,请再次掷骰子...
使用这种类型的地图,您可以获得快速索引,而无需任何昂贵的算法来对事物进行编码/加密,并且确保没有重复的密钥,如果要将特定的编码恢复为原始字符串,则可能发生另一面的重复密钥。