博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
常规密码学加解密脚本(python)
阅读量:2020 次
发布时间:2019-04-28

本文共 6376 字,大约阅读时间需要 21 分钟。

一、凯撒加解密(python3)

def change(c,i):    c = c.lower()    num = ord(c)    if num >= 97 and num <= 122:        num = 97 + ((num - 97) + i) % 26    return chr(num)def kaisa_jiami(string,i):    string_new = ''    for s in string:        string_new += change(s,i)    print(string_new)    return string_newdef kaisa_jiemi(string):    for i in range(25):        print('\n', i, '\n')        i += 1        kaisa_jiami(string,i)def main():    print('请选择需要的操作:')    print('1:凯撒加密')    print('2:凯撒解密')    choice = input()    if choice == '1':        string = input('请输入需要加密的字符串:')        num = int(input('请输入需要偏移的位数:'))        kaisa_jiami(string,num)    elif choice == '2':        string = input('请输入需要解密的字符串:')        kaisa_jiemi(string)    else:        print('输入错误,请重试!')        main()if __name__ == '__main__':    main()

二、base64和base32解密(python2)

import base64readfile = open('base.txt','r')writefile = open('flag.txt','w')txt = readfile.readlines()[0]while True:    try:        txt = base64.b32decode(txt)    except:        txt = base64.b64decode(txt)    finally:        print(txt)        writefile.write(txt)        writefile.write('\n')writefile.close()readfile.close()

三、RC-4加解密(python3)

def get_text():    text=input('输入明文:')    return textdef get_key():    key=''    active=True    while active:        key=input('输入密钥:')        if key == '':            print('密钥不能为空,请重新输入!')        else:            active=False    return keydef init(key):    s=list(range(256))    j=0    for i in range(256):        j=(j+s[i]+ord(key[i%len(key)]))%256        s[i],s[j] =s[j],s[i]    print('s初始置换数组为:')    print(s)    return sdef trans_stream(message,s_box):    result=[]    i=j=0    for s in message:        i=(i+1)%256        j=(j+s_box[i])%256        s_box[i],s_box[j]=s_box[j],s_box[i]        t=(s_box[i]+s_box[j])%256        k=s_box[t]        result.append(chr(ord(s)^k))    print('密文为:')    print(''.join(result))def start():    print('欢迎使用RC-4加密!')text=get_text()    key=get_key()    print('明文为:'+text)    print('密钥为:'+key)    s=init(key)    trans_stream(text,s)    temp=input('回车结束程序。')start()

四、差分曼彻斯特解密(python2)

msg1 = 0x9a9a9a6a9aa9656699a699a566995956996a996aa6a965aa9a6aa596a699665a9aa699655a696569655a9a9a9a595a6965569a59665566955a6965a9596a99aa9a9566a699aa9a969969669aa6969a9559596669s = bin(msg1)[2:]print sr = ""tmp = 0for i in xrange(len(s) / 2):    c = s[i * 2]    if c == s[i * 2 - 1]:        r += '1'    else:        r += '0'print hex(int(r, 2))[2:-1].decode('hex')

五、莫斯电码解密(python3)

from __future__ import print_functionwhile 1:    a = input("input the string:")    s = a.split(" ")    dict = {'01': 'A',            '1000': 'B',            '1010': 'C',            '100':'D',            '0':'E',            '0010':'F',            '110': 'G',            '0000': 'H',            '00': 'I',            '0111':'J',            '101': 'K',            '0100': 'L',            '11': 'M',            '10': 'N',            '111': 'O',            '0110': 'P',            '1101': 'Q',            '010': 'R',            '000': 'S',            '1': 'T',            '001': 'U',            '0001': 'V',            '011': 'W',            '1001': 'X',            '1011': 'Y',            '1100': 'Z',            '01111': '1',            '00111': '2',            '00011': '3',            '00001': '4',            '00000': '5',            '10000': '6',            '11000': '7',            '11100': '8',            '11110': '9',            '11111': '0',            '001100': '?',            '10010': '/',            '101101': '()',            '100001': '-',            '010101': '.',            '110011':',',            '011010':'@',            '111000':':',            '101010':':',            '10001':'=',            '011110':"'",            '101011':'!',            '001101':'_',            '010010':'"',            '10110':'(',            '1111011':'{',            '1111101':'}'            };    for item in s:        print (dict[item],end='')    print("\n")

六、栅栏密码解密(python3)

def zhalan(e):    elen = len(e)    field = []    for i in range(2, elen):        if (elen % i == 0):            field.append(i)    for f in field:        b = elen // 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 = d + result[i]        print(d)        d.lower()if __name__ == '__main__':    e = 'qddpqwnp-cplen%prqwn_{_zz*d@gq}'    zhalan(e)

七、转轮机密码解密(python3)

# 五、栅栏密码解密```cdef zhalan(e):    elen = len(e)    field = []    for i in range(2, elen):        if (elen % i == 0):            field.append(i)    for f in field:        b = elen // 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 = d + result[i]        print(d)        d.lower()if __name__ == '__main__':    e = 'qddpqwnp-cplen%prqwn_{_zz*d@gq}'    zhalan(e)

九、递推算法(python3)

n=['33DB76A7C594BFC3','CD36C2E32A371480','8CEE9FF3933365BC','57373FE3C783A78F','59B322834BB73B59','423719DD973C6AD3','C858FBEABF480DA3','3CC8C789BA7B8135']#func1a=1;b=2f1={}for i in range(3,100):    t=a+b    f1[hex(t)[-16:]]=str(str(i))    a,b=b,t#func2a=1;b=2;c=3f2={}for i in range(4,100):    t=a+b+c    f2[hex(t)[-16:]]=str(str(i))    a,b,c=b,c,t#func3a=1;b=2;c=3;d=4f3={}for i in range(5,100):    t=a+b+c+d    f3[hex(t)[-16:]]=str(str(i))    a,b,c,d=b,c,d,t#func-4a=1;b=2;c=3;d=4;e=5f4={}for i in range(6,100):    t=a+b+c+d+e    f4[hex(t)[-16:]]=str(str(i))    a,b,c,d,e=b,c,d,e,tflag='flag{'for i in range(0,8):    n[i]=n[i].lower()    if n[i] in f1.keys():        flag=flag+f1[n[i]]+"_"    elif n[i] in f2.keys():        flag=flag+f2[n[i]]+"_"    elif n[i] in f3.keys():        flag=flag+f3[n[i]]+"_"    elif n[i] in f4.keys():        flag=flag+f4[n[i]]+"_"flag=flag[:-1]+'}'print(flag)

十、二进制幂数(python2)

#! /usr/bin/env python#coding=utf-8a="8842101220480224404014224202480122"a=a.split("0")flag=''for i in range(0,len(a)):     str = a[i]     list=[]     sum=0     for j in str:        list.append(j)        length = len(list)     for k in range(0,length):        sum+=int(list[k])     flag+=chr(sum+64)print flag

在这里还是要推荐下我自己建的Python学习Q群:705933274,群里都是学Python的,如果你想学或者正在学习Python ,欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2021最新的Python进阶资料和零基础教学,欢迎进阶中和对Python感兴趣的小伙伴加入!

 

转载地址:http://eshxf.baihongyu.com/

你可能感兴趣的文章
(六) JavaScript 对象
查看>>
开源项目(3-1)行为提取和动作识别
查看>>
[hbase] hbase 基础使用
查看>>
Android入门笔记10: AutoCompleteTextView 自动补全文本
查看>>
Android入门笔记16: EditText 和 返回键
查看>>
909422229_Jeesite多表联合列表分页实现
查看>>
909422229_阻塞与非阻塞的区别
查看>>
Node.js学习 - GET/POST
查看>>
CentOS7安装Nginx并部署
查看>>
Zookeeper安装使用及JavaAPI使用
查看>>
SQL Server中的数据类型
查看>>
SpringMVC学习系列(4) 之 数据绑定-1
查看>>
秒杀的基本知识点,了解一下
查看>>
Linux如何在系统启动时自动加载模块
查看>>
链路层到网络层的数据传递
查看>>
vxworks
查看>>
软件测试用例的基本要素
查看>>
关于sprintf的一些东西(在stdio.h里)
查看>>
八皇后的思考(DFS)
查看>>
机器学习:SVM(基础理解)
查看>>