暴力破解栅栏密码(Python)

芦花丛中一扁舟,

俊杰俄从此地游。

义士若能知此理,

反躬难逃可无忧。

——《水浒传》



穷举法暴力破解(通用)

#!/usr/bin/env python3

e = input('清输入要解密的字符串\n')
elen = len(e)  # 计算字符串长度
field = []
for i in range(2, elen):  # 做一个循环,从2开始到数字elen(字符串长度)
    if elen % i == 0:  # 计算那些数字能整除字符串长度
        field.append(i)  # 将能整出的数字加入到field里面

for f in field:
    b = elen // f  # 用字符串实际长度除以上面计算出能整出的数字f
    result = {x: '' for x in range(b)}
    for i in range(elen):  # 字符串有多少位,就循环多少次
        a = i % b
        result.update({a: result[a] + e[i]})  # 字符串截断,并更新数据
    d = ''
    for i in range(b):
        d += result[i]
    print('分为'+str(f)+'栏时,解密结果为:'+d+'\n')  # 输出结果,并开始下一个循环

你可能感兴趣的:(密码学)