比 md5 更短的 php 密码?

2022-08-30 15:33:13

出于各种愚蠢的原因,我们发布到外部服务器的给定表单变量的最大长度为12个字符。

我想用md5来掩盖这个值,但显然用12个字符来掩盖这个值是行不通的。有没有一个密码,一个已经制作的PHP函数,将导致12个字符或更少的字符?

密码的安全性和完整性在这里并不是非常重要。我的最后一种方法是编写一个函数,该函数将每个字母向上或向下移动一个ascii值x。因此,目标不是要从密码学专家那里掩盖它,而只是不要以纯文本形式发布它,这样非技术工作者就不会知道它是什么。

感谢您的任何建议。


答案 1

也许这将帮助您生成一个12个字符的字符串,您可以在URL中传递,而不会增加冲突的风险

substr(base_convert(md5($string), 16,32), 0, 12);

答案 2

这是对这个答案的补充。

答案建议从 md5 的 32 个字符表示形式中获取前 12 个字符。因此,20个字符的信息将丢失 - 这将导致更多可能的冲突。

您可以通过采用 16 个字符表示形式的前 12 个字符(原始形式)来减少信息丢失:

substr(md5($string, true), 0, 12);

这将保留 75% 的数据,而使用 32 个字符的形式仅保留 37.5% 的数据。


推荐