我有从头开始的奢侈,所以我想知道在PHP和Python之间使用什么好的哈希.
我只需要能够从每种语言的相同文本生成相同的哈希.
从我读到的,PHP的md5()不会很好地工作.
md5() 总是很好玩 - 它总是做同样的事情,因为它是一种标准的散列格式.
唯一的绊倒危险是MD5散列的某些语言默认返回格式是包含十六进制字符的32字节ascii字符串,有些使用包含散列的文字二进制表示的16字节字符串.
PHP md5()默认返回一个32字节的字符串,但如果传递true给第二个参数,它将返回16字节的形式.因此,只要您知道您的其他语言使用的是哪个版本(在您的情况下是Python),您只需要确保从PHP获得正确的格式.
无论如何,您最好使用32字节的表单,具体取决于应用程序的通信方式.如果你使用基于纯文本(例如HTTP)的通信协议,使用任何东西的纯文本版本通常会更安全 - 在这种情况下,二进制文件更小,但在编写错误的服务器时可能会被传输损坏/客户端.
二进制与ascii问题适用于您能想到的任何哈希算法.