我有 (3) md5sums,我需要将它们组合成一个散列。新的哈希值应为 32 个字符,但区分大小写,并且可以是任何字母或数字。在 Python 中执行此操作的最佳方法是什么?
删除范围之外的所有字符的好方法是什么:ordinal(128)来自python中的字符串?
我在python 2.7中使用hashlib.sha256.我得到了例外:
UnicodeEncodeError:'ascii'编解码器无法对位置13中的字符u'\ u200e'进行编码:序数不在范围内(128)
我认为这意味着一些时髦的角色进入了我想要散列的字符串.
谢谢!
我想知道在python 2.7中观察到的行为的实际原因是什么:
import hashlib
hashlib.md5('foo') == hashlib.md5('foo')
Run Code Online (Sandbox Code Playgroud)
返回false.但...
import hashlib
hashlib.md5('foo').hexdigest() == hashlib.md5('foo').hexdigest()
Run Code Online (Sandbox Code Playgroud)
返回true.我知道hexdigest/digest返回最后的字符串表示,但由于直接将相同的数据输入到两个哈希对象中,它们不应该评估为彼此相等吗?md5 HASH当__eq__调用魔法时,对象是否不会意识到内部身份?对象本身会以什么理由评估不平等?真的很好奇.
我尝试安装plone,但是当我运行脚本install.sh时遇到问题.以下是错误详情:
raise ValueError('unsupported hash type %s' % name)
ValueError: unsupported hash type sha256
ERROR:root:code for hash sha384 was not found
ValueError: unsupported hash type sha512
Run Code Online (Sandbox Code Playgroud)
我在一个论坛中读到这个错误可能是由一个与操作系统上的python版本不兼容的Plone版本引起的.但是,这是plone官方网站上的内容:
Plone Unified Installer是一个源安装工具包,可以在大多数类Unix平台上从源代码安装Plone及其依赖项.该套件包括Plone,Zope和Python.Python的安装方式不会改变或干扰您的系统Python.
所以我不知道如何解决这个问题.
我有以下版本的 Python 代码:
\n\nimport hashlib\nmsg = \'abc\'\nprint msg\nsha256_hash = hashlib.sha256()\nsha256_hash.update(msg)\nhash_digest = sha256_hash.digest()\nprint hash_digest\nRun Code Online (Sandbox Code Playgroud)\n\n以及对应的 Node js 版本:
\n\nvar crypto= require(\'crypto\');\nvar msg = \'abc\';\nvar shasum = crypto.createHash(\'sha256\').update(msg);\nvar hashDigest = shasum.digest();\nconsole.log(hashDigest);\nRun Code Online (Sandbox Code Playgroud)\n\n然而,两者的二进制输出都略有偏差:
\n\n尽管两个库之间的十六进制表示是正确的。我在这里做错了什么吗?
\n我想比较两个文件的哈希值。但是不管文件是否不同,即使哈希比较结果不同真
这是代码:
import hashlib
hasher1 = hashlib.md5()
afile1 = open('canvas.png', 'rb')
buf1 = afile1.read()
a = hasher1.update(buf1)
print(str(hasher1.hexdigest()))
hasher2 = hashlib.md5()
afile2 = open('img5.png', 'rb')
buf2 = afile2.read()
b = hasher2.update(buf2)
print(str(hasher2.hexdigest()))
print(str(a) == str(b))
Run Code Online (Sandbox Code Playgroud)
输出:
614c9853a7f62c5b60d7d15bde80708f
76dc116b2c1b19b265db5e657846e649
True
Process finished with exit code 0
Run Code Online (Sandbox Code Playgroud) 我正在尝试在 R 中复制以下 Python 代码的输出:
import hashlib
x = hashlib.sha256()
x.update("asdf".encode("utf8"))
print(x.digest())
# b'\xf0\xe4\xc2\xf7lX\x91n\xc2X\xf2F\x85\x1b\xea\t\x1d\x14\xd4$z/\xc3\xe1\x86\x94F\x1b\x18\x16\xe1;'
Run Code Online (Sandbox Code Playgroud)
这是我的 R 代码:
library(digest)
digest("asdf", algo="sha256", serialize=FALSE)
# "f0e4c2f76c58916ec258f246851bea091d14d4247a2fc3e18694461b1816e13b"
Run Code Online (Sandbox Code Playgroud)
我可以通过使用x.hexdigest()而不是x.digest(). 如何x.digest()在我的 R 代码中获取输出?
我需要一个简单的密码哈希函数,并认为我可以使用hashlib. PyCharm 建议通过运行pip install hashLib.
但是现在 PyCharm 抱怨库中的语法错误:
Collecting hashLib
Using cached https://files.pythonhosted.org/packages/74/bb/9003d081345e9f0451884146e9ea2cff6e4cc4deac9ffd4a9ee98b318a49/hashlib-20081119.zip
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/private/var/folders/6_/8g1vyy5n1t1859x2d30ssk480000gn/T/pycharm-packaging/hashLib/setup.py", line 68
print "unknown OS, please update setup.py"
^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("unknown OS, please update setup.py")?
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/6_/8g1vyy5n1t1859x2d30ssk480000gn/T/pycharm-packaging/hashLib/
Run Code Online (Sandbox Code Playgroud)
它表明这可能是与我使用的 Python 版本相关的问题(我尝试过 Python 2.7 和 Python …
我尝试在 python 3 for windows 中使用 pip 安装 hashlib 没有成功。
Collecting hashlib
Using cached https://files.pythonhosted.org/packages/74/bb/9003d081345e9f0451884146e9ea2cff6e4cc4deac9ffd4a9ee98b318a49/hashlib-20081119.zip
ERROR: Command errored out with exit status 1:
command: 'c:\program files\python36\python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\kali\\AppData\\Local\\Temp\\pip-install-i04d5j03\\hashlib\\setup.py'"'"'; __file__='"'"'C:\\Users\\kali\\AppData\\Local\\Temp\\pip-install-i04d5j03\\hashlib\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base 'C:\Users\kali\AppData\Local\Temp\pip-install-i04d5j03\hashlib\pip-egg-info'
cwd: C:\Users\kali\AppData\Local\Temp\pip-install-i04d5j03\hashlib\
Complete output (22 lines):
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "c:\program files\python36\lib\site-packages\setuptools\__init__.py", line 16, in <module>
import setuptools.version
File "c:\program files\python36\lib\site-packages\setuptools\version.py", line 1, in <module>
import pkg_resources
File "c:\program …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个可以散列密码的系统,然后我可以存储散列并将散列与输入的密码进行比较。问题是,每当我运行此代码时,它生成的哈希值对于相同的输入都是不同的。我发现代码在同一运行中每次执行都会产生相同的输出,但运行之间不一致。
代码:
import hashlib
def Sha512Hash(Password):
HashedPassword=hashlib.sha512(Password.encode('utf-8'))
print(HashedPassword)
Sha512Hash('Hi')
Sha512Hash('Hi')
Run Code Online (Sandbox Code Playgroud)