为了账号安全,请及时绑定邮箱和手机立即绑定

sha1加密 python 可逆么?

/ 猿问

sha1加密 python 可逆么?

缥缈止盈 2019-04-03 07:03:38

sha1加密 python 可逆么


查看完整描述

4 回答

?
达令说

首先,它不可逆,没有系统的方法可以知道MD5码原来的文字是什么
其次,这个码具有高度的离散性,没有规律可循。哪怕原信息的一点点变化就会导致MD5的巨大变化,也可以说产生的MD5 码是不可预测的。
最后,由于这个码有128位那么长,所以任意信息之间具有相同MD5码的可能性非常之低,通常被认为是不可能的。

查看完整回答
反对 回复 2019-04-12
?
德玛西亚99

MD5输出128bit SHA1输出160bit SHA256输出256bit 另外还有SHA244,SHA512 分别输出244bit,512bit

查看完整回答
反对 回复 2019-04-12
?
慕斯卡3215842

其次,如果这里的$_GET可以理解为字典,对于$nonce = $_GET["nonce"],[]中的nonce是属性,而$nonce是属性的值的话,那么我下面写的应该问题不大。
第三,private function,这个应该是写在类里的吧,python里除非你通过对方法和属性的名字进行处理,否则是没有私有的概念的。

代码:
import hashlib
def checkSignature(_GET): #如果不传参的话,也可以用全局变量,但不推荐
signature = _GET["signature"]
timestamp = _GET["timestamp"]
nonce = _GET["nonce"]
token = TOKEN # 这个不清楚是什么
tmpArr = [token, timestamp, nonce]
tmpArr.sort()
tmpStr = hashlib.sha1(''.join(tmpArr)) # ''.join ,前面是个空字符,不是空白字符,"",引号中间没有任何字符。
# 这里有个问题,我对你原来的php下sha1后的字符串什么样不了解。python的sha1处理后会返回一个sha1对象,如何从这个对象获得字符串,可以用两个方法:digest(),hexdigest()。digest我不太了解,hexdigest返回一个每一个字符都是16进制字符的字符串。
if tmpStr.hexdigest() == signature:
return ture
else:
return false
最后,注意统一缩紧方式,only space or only tab.



查看完整回答
反对 回复 2019-04-12
?
慕前端131612

1、冒号不是python的语法,“x: ”双引号中的是待会你输入一个数前所打印的文字,即你这里可以输成"请输入x的值:"
2、input()是python3中的输入函数
3、空格部分就是输入空格,比如"请输入x的值:",冒号后面键入三个空格,回车后显示的就是:请输入x的值: 34(这个34是你输入的,书上是已经输好的。。。都不告诉你,这不是一本好书)

查看完整回答
反对 回复 2019-04-12

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信