【问题标题】:Keep change to different hash md5保持更改为不同的哈希 md5
【发布时间】:2016-10-02 23:43:00
【问题描述】:
import ftplib
import hashlib
import httplib
import pytz
import datetime

localtime = datetime.datetime.now(pytz.timezone('Asia/Singapore')).isoformat()
cam = "hi5"
lscam = localtime + cam
ftp = ftplib.FTP('localhost','username','password')
ftp.cwd('Server')
m=hashlib.md5()
file = open('Desktop/frame00000.png','rb')
m.update(lscam)
dd=m.hexdigest()
ftp.storbinary('STOR '+dd, file)
file.close()
ftp.quit()

我如何为“lscam”生成实际的 MD5 哈希,因为上面的代码一直给我“奇怪”的 md5 哈希码,而这甚至不是“lscam”的实际哈希。有人可以帮忙吗?

【问题讨论】:

    标签: python python-2.7 hash md5 ftplib


    【解决方案1】:

    您的lscam 变量是等格式的datetime.datetime.now() 和cam 的串联。

    由于now()显然每次运行脚本都会返回不同的值,所以md5每次都不一样。

    但是,如果您使用相同的 lscam 值计算两次哈希,您将得到相同的结果(如预期的那样)。

    小例子:

    >>> import datetime
    >>> import pytz
    >>> import hashlib
    >>> now = datetime.datetime.now(pytz.timezone('Asia/Singapore')).isoformat()
    >>> later = datetime.datetime.now(pytz.timezone('Asia/Singapore')).isoformat()
    >>> m1 = hashlib.md5()
    >>> m2 = hashlib.md5()
    >>> m1.update(now)
    >>> m2.update(later)
    >>> m1.digest() == m2.digest()
    False
    

    【讨论】:

    • 问题仍然存在,您在字符串中使用now(),因此它总是不同的。 md5 哈希反映了这些差异,并且永远不会相同。
    • @KevinKai 在我的回答中添加了一个小例子。如果还不清楚,请告诉我。
    • 即使它是不同的 MD5 散列,但它们不会为我生成实际的 MD5 散列.. 我用这个网站验证:md5.gromweb.com
    • @KevinKai 您是否在您的网站和程序中添加完全相同的字符串?你应该print(lscam) 来确定。返回错误的 md5 的可能性非常(如果不是不可能的话)
    猜你喜欢
    • 2011-05-17
    • 1970-01-01
    • 2016-12-26
    • 2016-01-03
    • 2013-06-17
    • 2012-08-17
    • 2018-03-23
    • 2014-05-19
    相关资源
    最近更新 更多