2古典密码

本文介绍了多种古典密码技术,包括移位密码如凯撒密码和ROT13,曲路密码,云影密码,栅栏密码,替代密码如维吉尼亚密码和希尔密码等。这些密码通过不同的加密方法,如字母移位、替换和矩阵运算,实现信息的安全传递。同时,文章提到了针对这些密码的攻击方式,如词频分析和密钥爆破。
摘要由CSDN通过智能技术生成

移位密码

例题 m=flag k=3124
明文 1234
密文 3124
flag
lafg

加密

def shift_encrypt(m,k):
	l=len(k)
	c=""
		for i in range(0,len(m),l):
			tmp_c=[""]*l
			if i+l>len(m):
				tmp_m=m[i:]
			else:
				tmp_m=m[i:i+l]
			for kindex in range(len(tmp_m)):
				tmp_c[int(k[kindex])-1]=tmp_m[kindex]
			c+="".join(tmp_c)
		return c
m="flag{easy_easy_crypto}"
k="3124"
print shift_encrypt(m,k)

解密

def shift_decrypt(c,k):
	l=len(k)
	m=""
	for i in range(0,len(c),l):
		tmp_m=[""]*l
		if i+l>=len(c):
			tmp_c=c[i:]
			use=[]
			for kindex in range(len(tmp_c)):
				use.append(int(k[kindex]) - 1)
			use.sort()
			for kindex in range(len(tmp_c)):
				tmp_m[kindex] = tmp_c[use.index(int(k[kindex])-1)]
		else:
			tmp_c=c[i:i+l]
			for kindex in range(len(tmp_c)):
				tmp_m[kindex] = tmp_c[int(k[kindex]) - 1]
		m+="".join(tmp_m)
	return m

曲路密码

在这里插入图片描述

云影密码

云影密码仅包含01248五个数字,其中0用于分割,其余数字用于做加和操作之后转换为明文

def c01248_decode(c):
	l=c.split("0")
	origin = "abcdefghijklmnopqrstuvwxyz"
	r=""
	for i in l:
		tmp=0
		for num in i:
			tmp+=int(num)
		r+=origin[tmp-1]
	return r

栅栏密码

密钥只有一个数字
将明文分成k组,取每组第一个字符依次连接
m=flagisxxhaha
k=4
flag isxx haha
即 fih lsa axh gxa

加密

def zhalan_encrypt(m,k):
	chip=[]
	for i in range(0,len(m),k):
		if i+k>=len(m):
			tmp_m=m[i:]
		else:
			tmp_m=m[i:i+k]
		chip.append(tmp_m)
	c=""
	for i in range(k):
		for tmp_m in chip:
			if i < len(tmp_m):
				 c+=tmp_m[i]
	return c

解密

def zhalan_decrypt(c,k):
	l=len(c)
	partnum=l/k
	if l%k!=0:
		partnum+=1
	m=[""]*l
	for i in range(0,l,partnum):
		if i+partnum>=len(c):
			tmp_c=c[i:]
		else:
			tmp_c=c[i:i+partnum]
		for j in range(len(tmp_c)):
			m[j*k+i/partnum]=tmp_c[j]
	return "".join(m)

替代密码

密钥就是替代表
有单表和多表

攻击方式 词频分析

1、单表

凯撒

加密

def caesar_encrypt(m,k):
	r=""
	for i in m:
		r+=chr((ord(i)+k)%128
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值