text = 'killshadow' key = 'adsfkndcls' key_ = '' v3=0 for i in range(len(key)): flag = ord(key[v3%len(key)]) if flag > 64and flag <=90: key_ += chr(ord(key[v3%len(key)])+32) v3=v3+1#这一段for循环是大小写变换,可以不要 ans = '' for i in range(len(key)): for j in range(0,15): #算是爆破? tmp=chr(ord(text[i]) - 97 + 26*j - 97 + ord(key [v3%len(key)]) + 39) if ord(tmp)>64and ord(tmp) <91: #试对了的正确结果输出 ans+=tmp break v3=v3+1 print (ans)
网上扒来的
疑惑:为什么是key [v3%len(key)],大概是顺应伪代码的原意。
自我缩减版
1 2 3 4 5 6 7 8 9 10
text = 'killshadow' key = 'adsfkndcls' ans = '' for i in range(len(key)): for j in range(0,15): tmp=chr(ord(text[i]) - 97 + 26*j - 97 + ord(key[i]) + 39) if ord(tmp)>64and ord(tmp) <91: ans+=tmp break print (ans)