社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python3散列给出不同的结果

Alex • 5 年前 • 1938 次点击  

我尝试使用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
 
1938 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Simba
Reply   •   1 楼
Simba    5 年前

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

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

引用自 wiki page Probabilistic encryption

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