温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何使用python破解有密码问题的例子

发布时间:2021-11-10 10:49:35 阅读:212 作者:柒染 栏目:大数据
Python开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

如何使用python破解有密码问题的例子,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

这是pythonchallenge上的第二关,比较简单。

题目给了下面这个HINT:

如何使用python破解有密码问题的例子

以及一串看起来很乱的字母:

g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypcdmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj.

根据图片里的规律,我们得知其是字母向右移动两位。那么原文也就是ASCII码减二的加密方式。这就是凯撒密码。

你如果有耐心的话,可以一个一个的往右移两个字母,从而得出答案。但我们应该更追求更高效的方法。

Python中有这样的两个函数:

ord():返回一个字符的ASCII码

chr():获取一个ASCII码,将它转换为字符

我们或许可以利用这两个函数解密。

核心代码:

for each in text:    if ord(each) >= ord('a') and ord(each) <= ord('z'):        answer = answer + chr(ord(each) + 2)

代码意思是这样的:检测字符串内的每一个字符,若它是小写字母(介于a和z之间)那么就将它的ASCII码加二并转化为字符。

因为文中只有小写字母,所以我们只需要考虑小学的,若有大写字母,你只需要添加多两个and并列进 if 即可。

我们查看转换的结果:

如何使用python破解有密码问题的例子

并不是很理想,有些字符,如本应该是a的变成了{ , b变成了I. 这是为什么?

我们观察原文发现 'a' 的原文是 'y' , 'b' 的原文是 'z'. 这样我们就明白了,ASCII码后面的那几个小写字符+2后识别成了其他字符。实际上当他们+2超过26的时候,就应该从1的a开始。这个问题怎么解决呢?

你可以单独在if内设置条件,比如

if(ord(each) == 25)

    answer = answer + 'a'

但是这样不利于普遍化,到时候如果它不是向右移动两位,而是十位的时候该怎么办?

解决办法是,先将该字符按照我们先前的办法转换,然后取模26,这样的话低于等于26的不会变,本来是27的会变成1,这样就能成功表示转换后的a和b. 最后再加上a的ASCII(为了得到其他字符的ASCII码,便于转换成字符),最后转换成字符。

完整代码如下:

text = """g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypcdmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."""answer = ""for each in text:    if ord(each) >= ord('a') and ord(each) <= ord('z'):        answer = answer + chr((ord(each) + 2 - ord('a')) % 26 + ord('a'))    else:        answer = answer + eachprint(answer)

关于如何使用python破解有密码问题的例子问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://my.oschina.net/u/4526838/blog/4583987

AI

开发者交流群×