怎么破解牡丹彩票?

陶静姝陶静姝最佳答案最佳答案

我要说明一点,我并不是程序员,我对python和js这种脚本语言非常感兴趣,但我对程序的编写一窍不通(可以认为我是瞎子)。以下的所有代码都是我照着别人的源码写的,我自己根本没有参与任何的代码编写,所以我也不知道哪里错了(虽然照抄应该没错吧...) 然后我们来看题目,这个题目的要求是在不破坏加密算法的前提下,找出密码。这里所谓的“破译”其实就是找到密码,所谓“不破坏加密算法”就是不要像MD5一样直接输出结果即可。(虽然这样输出的结果肯定是对应的明文,但这样算破译的话也太容易了) 我看了许多网上的解法都使用了暴力破解的方法,事实上这个方法是可行的,因为本题要求的密码长度很短而且排列组合数也不是很多。但是我试了一下用Python的hashlib模块来暴破需要30min左右才能解出答案,太慢了!于是我想到了另一方面的破译方法——逆加密。

逆加密就是根据密文的散列值(也就是md5、sha1等哈希函数的结果)来反推密码。因为明文是已经知道的,所以只需要求解一个方程式就可以获得需要的密码。如果求出来的结果刚好是一个字的加密(比如我测试的密文是64298febc7aedd2e39b4de8c12c9f613)那么恭喜你,你破解了这个密码。 上面说了一堆理论,接下来上源码,由于我实在不知道哪里写了错误,所有代码全是复制的别人(要是能看出来哪个地方错了,那我真是谢天谢地)。

import hashlib md5 = hashlib.md5() sha1 = hashlib.sha1() # 下面三行是为了演示使用不同的加密而设置的值,实际测试时可以不用设置 s = 'test' pw = 'qwerty' c = md5.update(s) sha1.update(pw) print('md5: ', hex(md5.digest())) print('sha1: ', sha1.hexdigest()) class Decrypt(object): def__init__(self, encrypted_str): self.encrypted_str = encoded_str def decrypt(self): pass

我来回答
请发表正能量的言论,文明评论!