@
lotem 一个简单的算法是这样的:
目标词汇:“密码”
我们公开这个词的md5:A8105204604A0B11E916F3879AAE3B0B……数值A
我们再重新另外计算这个词的utf8编码:\u5BC6\u7801
十六进制转化为二进制:0100 1110 1111 0110 0111 1000 0000 0001……数值X
把这个数值和一个随机的二进制数进行与运算:比如1111 1111 1111 1111 0000 0000 0000 0000
这样,我们就获得了0100 1110 1111 0110 0000 0000 0000 0000……数值B
把这个数据也公布出去。
现在,服务器收集所有A值是A8105204604A0B11E916F3879AAE3B0B的B,并且对这些B1、B2、B3进行或运算。当我们收集到足够的B之后,它们进行或运算就能获得最初的数值X,这个X所对应的“密码”一词的md5正好是A。
这样,我们就可以把“密码”这个词公开了。