Vigenere Decode

维吉尼亚无密钥解密

  为方便破解,把破解密码分成4个文件进行执行,分别为Vigenère.pykasiski.pykeycrack.pydecipher.py

Vigenère.py

from kasiski import kasiski
from keycrack import keycrack
from decipher import decipher

def main():
    kasiski()
    keycrack()
    decipher()

if __name__ == '__main__':
    main()

  这个文件主要是进行调用其他三个部分的破解环节,便于修改。

kasiski.py

  原本按照卡西斯基的算法思想写了一个脚本,通过查找重复字段

  如下脚本:

# -*- coding: utf-8 -*-
from string import find
'如果重复字段差有公因子,则输出公因子列表。若无,输出一个二维列表,每维第一个元素表示重复字段差的因子,第二个元素表示拥有此因子的字段差总数。'
def GCD(step):
    gcd_list=[]
    buf=[]
    if not len(step):
        return "None has ben found"
    else:#find GCD
        step_min=max(step)/2
        for con in xrange(2,step_min+1):
            flag=True
            for each_step in step:
                if each_step%con:
                    flag=False
                    break
            if flag:
                gcd_list.append(con)
    if len(gcd_list):
        return gcd_list
    else:#find GCD list
        for con in xrange(2,step_min+1):
            gcd_list.append([con,len(step)])
            for each_step in step:
                if each_step%con:
                    gcd_list[con-2][1]-=1
        
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值