我以前用Python编写了一个函数,使用PBKDF2对目标字符串进行混淆:
from hashlib import pbkdf2_hmac
from binascii import hexlify
def garbleString(string, salt, iterations, hash_algorithm):
target = str.encode(string)
dk = pbkdf2_hmac(hash_algorithm, target, salt, iterations)
hash = hexlify(dk)
return (hash, salt, iterations)
>>> garbleString("1000000000","salt",100000,'sha256')
('d973f4855206bd777b25355782f1b14bf06fb395bf49a26086035b3b8820a74b', 'salt', 100000)
基于这个页面,这个函数是正确的——它为相同的输入生成相同的哈希。http://www.neurotechnics.com/tools/pbkdf2
我现在正在尝试在Java中实现相同的功能,我现在的工作是:
^{pr2}$这将生成散列“D973F48555206BD777B25355782F1B14BF06FB395BF49A26086035B3B8820A74B”,这是相同的,只是字母大小写不同。外壳有问题吗?在
不,外壳不重要。
如果你检查散列,你会发现只有从A到F的字母。这不是一个真正的字符串,而是一个hexadecimal (base 16) number相当于983567631754382247384455306401383784335874788493262068788065753180381513935691。
数字是大写还是小写并不重要。意思是一样的。
您可以在Python解释器中看到这一点,其中前导的
0x
表示十六进制数:相关问题 更多 >
编程相关推荐