IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 常规密码学加解密脚本(python) -> 正文阅读

[Python知识库]常规密码学加解密脚本(python)

一、凯撒加解密(python3)
def change(c,i):
c = c.lower()
num = ord?
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_new

def 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 base64
readfile = 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 text

def get_key():
key=’’
active=True
while active:
key=input(‘输入密钥:’)
if key == ‘’:
print(‘密钥不能为空,请重新输入!’)
else:
active=False
return key

def 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 s

def 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 = 0x9a9a9a6a9aa9656699a699a566995956996a996aa6a965aa9a6aa596a699665a9aa699655a696569655a9a9a9a595a6965569a59665566955a6965a9596a99aa9a9566a699aa9a969969669aa6969a9559596669
s = bin(msg1)[2:]
print s
r = “”
tmp = 0
for 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_function
while 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)

五、栅栏密码解密

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)
n=['33DB76A7C594BFC3','CD36C2E32A371480',
'8CEE9FF3933365BC','57373FE3C783A78F',
'59B322834BB73B59','423719DD973C6AD3',
'C858FBEABF480DA3','3CC8C789BA7B8135']
#func1
a=1;b=2
f1={}
for i in range(3,100):
    t=a+b
    f1[hex(t)[-16:]]=str(str(i))
    a,b=b,t
#func2
a=1;b=2;c=3
f2={}
for i in range(4,100):
    t=a+b+c
    f2[hex(t)[-16:]]=str(str(i))
    a,b,c=b,c,t
#func3
a=1;b=2;c=3;d=4
f3={}
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-4
a=1;b=2;c=3;d=4;e=5
f4={}
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,t
flag='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-8
a="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知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-18 15:55:49  更:2021-12-18 15:56:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 5:55:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码