经过彻底的搜索,我在整个网络上都没有找到这个非常常见的问题的完整解释和解决方案。所有需要使用 hashlib 进行编码的脚本都会给我错误:
Python 3.10
import hashlib
h = hashlib.new('ripemd160')
Run Code Online (Sandbox Code Playgroud)
返回:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.10/hashlib.py", line 166, in __hash_new
return __get_builtin_constructor(name)(data)
File "/usr/lib/python3.10/hashlib.py", line 123, in __get_builtin_constructor
raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type ripemd160
Run Code Online (Sandbox Code Playgroud)
我已经尝试检查该哈希值是否存在于库中,以及是否有:
print(hashlib.algorithms_available):{'md5','sm3','sha3_512','sha384','sha256','sha1','shake_128','sha224','sha512_224','sha512_256','blake2b','ripemd160 ', 'md5-sha1'、'sha512'、'sha3_256'、'shake_256'、'sha3_384'、'漩涡'、'md4'、'blake2s'、'sha3_224'}
我在 Linux 的 vps 中遇到这个问题,但在我的电脑上使用 Windows,没有这个问题。
我真诚地感谢任何帮助或建议。
我正在考虑开发一个自定义目录/文件夹合并工具,作为学习函数式编程的一部分,以及划分非常个人化的痒.
我通常在三台不同的计算机上工作,我倾向于在本地积累大量文件(文本,视频,音频),然后精心合并它们以备份.我很确定我有浪费空间的欺骗和不需要的文件.我正在转向云备份解决方案作为辅助备份源,我希望通过消除冗余文件来节省尽可能多的空间.
我有一个复杂的深层嵌套目录结构,我想要一个自动向下遍历文件夹树并执行合并的自动化工具.另一个问题是我使用Linux和Windows的混合,我的许多文件名称中都有空格...
我最初的想法是,我需要为每个文件生成哈希值,并使用哈希值而不是文件名进行比较(文件夹名称中的空格以及源和目标之间的文件内容可能不同).RIPEMD-160在性能和避免碰撞之间取得了很好的平衡吗?还是SHA-1够了吗?SHA-256/512是否过度杀伤?
哪个函数式编程环境带有一组用于生成这些哈希的现成库?我倾向于OCaml ......
我尝试的一切都给了我错误的输出值.我甚至复制了C代码并更改了它们,以便它们可以在python中工作,我仍然得到错误的输出.怎么了?
import os, math
def makehex(value,size=8):
value = hex(value)[2:]
if value[-1] == 'L':
value = value[0:-1]
while len(value)<size:
value = '0' + value
return value
def makebin(value,size=32):
value = bin(value)[2:]
while len(value)<size:
value = '0' + value
return value
def ROL(value,n):
return (value << n) | (value >> 32-n)
def little_end(string,base = 16):
t = ''
if base == 2:
s= 8
if base == 16:
s = 2
for x in range(len(string)/s):
t = string[s*x:s*(x+1)] + t
return t …Run Code Online (Sandbox Code Playgroud)