【问题标题】:How to do md5 checksum verification on files after download from ftp server using pysftp [duplicate]使用pysftp从ftp服务器下载后如何对文件进行md5校验和验证[重复]
【发布时间】:2022-11-15 15:23:06
【问题描述】:

我是 pysftp 的新手 我正在尝试执行以下任务

  1. 连接到 ftp 服务器并下载文件
  2. 在文件上生成 md5 校验和并确保它们未被篡改

    有人可以帮我写这个脚本吗?

    我尝试连接到服务器,但不确定如何下载文件并使用 python 为下载的文件生成校验和。

    截至目前,我已使用以下代码连接到服务器: *

    import pysftp
    cnopts = pysftp.CnOpts()
    cnopts.hostkeys = None   
    myHostname = "abc.org"
    myUsername = "username"
    myPassword = "password"
    
    with pysftp.Connection(host=myHostname, username=myUsername, password=myPassword, cnopts=cnopts) as sftp:
        print ("Connection succesfully stablished ... ")
        directory_structure = sftp.listdir_attr()
        for attr in directory_structure:
            print (attr.filename, attr)
    

    **

【问题讨论】:

  • 2 安全考虑: 1 - pysftp 2016 年最后一次更新,似乎没有维护。使用这么长时间未收到安全修复程序的客户端有点冒险。我会推荐另一个库,例如paramiko。 2 - md5 现在被认为是过时和不安全的。建议使用其他哈希加密函数,例如 SHA2。
  • 哦,好的,谢谢你的提醒,有什么方法可以帮助我使用 paramiko 编写脚本。这真的很有帮助。
  • paramiko(以及 pysftp)有很好的文档,您可以找到 sftp 章节here。用法非常相似。

标签: python ftp pysftp ftp-server


【解决方案1】:

psftp get() 方法记录在here 中。

python hashlib 模块记录在here 中。 它提供了多种哈希算法,包括 MD5 和 SHA256。

例子 :

import hashlib

content = "headeroobar
footer
"  # your file content as a string
h = hashlib.sha256(content.encode())

tampered_content = "headeroobar2
footer
"  # your file content (modified) as a string
h2 = hashlib.sha256(tampered_content.encode())

h.digest() == h2.digest()  # False

print(h.hexdigest())  # an hexadecimal human-readable string to provide on the server

# 17f1212df75eac78cd7c01c19ea44823add3f778ebe39b22cb5d7415c94c8395

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多