Py学习  »  Python

Python3散列给出不同的结果

Alex • 5 年前 • 1942 次点击  

我尝试使用Python3代码计算加密文件(file.gpg)的sha1。

我测试两个函数。

import hashlib
import gnupg

def sha1sum(filename):
    h  = hashlib.sha1()
    b  = bytearray(128*1024)
    mv = memoryview(b)
    with open(filename, 'rb', buffering=0) as f:
        for n in iter(lambda : f.readinto(mv), 0):
            h.update(mv[:n])
    return h.hexdigest()


def sha1_checksum(filename, block_size=65536):
    sha1 = hashlib.sha1()
    with open(filename, 'rb') as f:
        for block in iter(lambda: f.read(block_size), b''):
            sha1.update(block)
    return sha1.hexdigest()

original = open('file.bin', 'rb')

gpg = gnupg.GPG()
gpg.encoding = 'utf-8'
encrypt = gpg.encrypt_file(original, 
                           recipients=None, 
                           passphrase=password,
                           symmetric='AES256', 
                           output=file)

sum = sha1sum(file)
sum = sha1_checksum(file)

脚本的第一个开头

697cee13eb4c91f41922472d8768fad076c72166
697cee13eb4c91f41922472d8768fad076c72166

a95593f0d8ce274492862b58108a20700ecf9d2b
a95593f0d8ce274492862b58108a20700ecf9d2b

sha1sum()或sha1_checksum()是否错误?

或者文件加密提供不同的file.gpg?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/56010
 
1942 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Simba
Reply   •   1 楼
Simba    5 年前

这不是Python的问题,甚至不是gpg的问题。

gpg 非对称加密是 不确定性 ,或所谓的 .

引用自 wiki page Probabilistic encryption

概率加密是 随机性 产生不同的密文 公钥加密算法 然而,各种对称密钥加密算法实现了类似的特性(例如,在诸如CBC的链式模式中使用时的分组密码)。