我想为给定的文件列表生成并存储CRC(或类似)值,这些值可以在以后用作比较.编写一个函数来做到这一点很简单,但是在Python库中有更标准的方法吗?
生成的值不需要具有任何特定标准.
我试图了解散列算法的工作原理,特别是SHA3-512.为了了解它是如何工作的,我在Google中搜索了代码并遇到了Hashlib.代码不起作用,因为我没有Hashlib库(不确定应该调用它).我怎样才能得到它,这是在C#中应用SHA3-512的唯一方法吗?
我想知道一些基本的东西,
什么是Hashlib?
它是图书馆吗?
是的输出结果/工作流程/功能Hashlib和System.Security.Cryptography.HashAlgorithm一样吗?如果没有,那么它们之间有什么区别?
编辑:很抱歉从中间删除几个问题.因为我觉得他们不再需要在这里展示了.
我有一些代码可以在 Python 3 中散列字符串
import hashlib
hobj = hashlib.md5()
Run Code Online (Sandbox Code Playgroud)
当我使用命令时:
hobj.update('test')
Run Code Online (Sandbox Code Playgroud)
我收到错误:
TypeError: Unicode-objects must be encoded before hashing
Run Code Online (Sandbox Code Playgroud) Php的md5函数接受一个可选的第二个参数,如果为true,则返回一个较小的长度为16的散列,而不是正常的32个字符的长散列.
我们怎样才能使用python做同样的事情hashlib.md5.
我认为这将是一个相当普遍和直接的问题,但我搜索并无法找到它.
我是一名新手Python用户,大多是自学成才.我正在尝试我认为相当简单的练习:从输入短语生成哈希值.这是我的代码:
import hashlib
target = input("Give me a phrase: ").encode('utf-8')
hashed_target = hashlib.sha256(target)
print(hashed_target)
Run Code Online (Sandbox Code Playgroud)
我执行此操作并获得提示:给我一个短语:
我输入了"给我自由或给我死亡!"这句话.并得到哈希输出0x7f8ed43d6a80.
为了测试,我用同样的短语再次尝试,但得到了不同的输出:0x7f1cc23bca80.
我觉得这很奇怪,所以我复制了原始输入并将其粘贴进去,得到了第三个不同的哈希输出:0x7f358aabea80.
我敢肯定必须有一个简单的解释.我没有收到任何错误,代码看起来很简单,但是哈希值虽然相似但肯定是不同的.
有人可以帮忙吗?
我正在使用python hashlib使用以下命令获取压缩的md5值,有人可以帮助我使用兼容的功能吗?
hashlib.md5('my string').hexdigest()
Run Code Online (Sandbox Code Playgroud) 所以我有一个python脚本,它使用pyserial库通过串口将文件发送到另一台计算机.我写了一些脚本来计算文件的md5校验和,通过串口发送之前和之后我遇到了一些问题.
示例:我发送了一个名为third.txt的简单文件,其中包含数字1到10的列表.简单文件,没有任何花哨或大.发送前文件的校验和与在另一台计算机上发送后的文件校验和完全不同,即使文件明显相同.
我通过简单地通过USB移动文件并以这种方式进行校验和计算来检查我的代码是否有问题.这次它奏效了.
任何想法为什么会发生这种情况以及如何解决这个问题?
这是发送前的校验和代码.这不是确切的代码,但基本上就是我所做的.
<<Code that waits for command from client>>
with open(file_loc) as file_to_read:
data = file_to_read.read()
md5a = hashlib.md5(data).hexdigest()
ser.write('\n' + md5a + '\n')
Run Code Online (Sandbox Code Playgroud)
这是我发送后的校验和代码.
with open(file_loc) as file_to_read:
data = file_to_read.read()
md5b = hashlib.md5(data).hexdigest()
print('Sending Checksum Command')
ser.write("\n<<SENDCHECKSUM>>\n")
md5a = ser.readline()
print(md5a)
print(md5b)
if md5a == md5b:
print("Correct File Transmission")
else:
print("The checksum indicated incorrect file transmission, please check.")
ser.flush()
Run Code Online (Sandbox Code Playgroud) 我使用以下代码来计算MD5哈希码的二进制表示.
MD5 始终为 128个字节,并bin返回以"0b"开头的字符串.因此,长度md5_bin必须始终为130,但是当我运行程序时,它在128到130之间变化,在不同的值上random_str.
md5_bin = bin(int(hashlib.md5(random_str).hexdigest(),16))`
print len(md5_bin)
Run Code Online (Sandbox Code Playgroud) 我有一个带有字符串数据的类,我应该使用hashlib.sha256(). 例如,我无法直接使用块 c 获取哈希
Hash = hashlib.sha256(c.encode()).digest()
Run Code Online (Sandbox Code Playgroud)
我想计算整个对象的散列,有人建议我在类中有一个函数,以便它返回其中的数据散列。它与整个块的相同吗?什么是更好的实施?
我有一个相对简单的文本处理算法,可以从文本文件中导入一些单词并生成一个短语。如果启用了设置标志(一个简单的常量),则该算法可以采用第二条路径。第二条路径基本上是过滤掉一些单词的附加列表理解。
在这两种情况下,算法产生相同的短语(str1及str2以下),但每个短语的 md5 哈希值不同。我使用 Python shell 确认了这一点:
(注意:短语和哈希值不是正在使用的实际值)
>>> import hashlib
>>>
>>> str1 = "some phrase"
>>> str2 = "some phrase"
>>> str1 == str2
True
>>>
>>> md5 = hashlib.md5()
>>>
>>> md5.update(str1.encode('utf-8'))
>>> hash_1 = md5.hexdigest()
>>>
>>> md5.update(str2.encode('utf-8'))
>>> hash_2 = md5.hexdigest()
>>>
>>> print(hash_1)
34281bdd108d35dec09dd6599bc144gf
>>> print(hash_2)
0670d0df2506c7gf0d5ee27190g2d919
Run Code Online (Sandbox Code Playgroud)
这怎么可能?