#python3
a=open("flag1.txt",'r')
text=a.read()
b='abcdefghijklmnopqrstuvwxyz'for key inrange(26):
flag=''for i in text:if i in b:
num=b.find(i)
num=num-key
if num<0:
num=num+len(b)
flag=flag+b[num]else:
flag=flag+i
print('key %s : %s'%(key,flag))'''
a=open("flag1.txt",'r')
text=a.read()
b='abcdefghijklmnopqrstuvwxyz'
#97
for key in range(26):
flag=''
for i in text:
if i in b:
num=(int(ord(i))-97+key)%26
flag=flag+b[num]
else:
flag=flag+i
print('key %s : %s' %(key,flag))
'''
变异凯撒解密
#python3str="afZ_r9VYfScOeO_UL^RWUc"
flag=""
x=5for i instr:
s=ord(i)+x
flag+=chr(s)
x=x+1print(flag)
#python3# 常见的栅栏密码
s=input("请输入明文:\n")
n=int(input("请输入栅栏数:\n"))
length=len(s)
s1=""for i inrange(n):
j=i
while j<length:
s1+=s[j]
j+=n
print(s1)
栅栏密码解密
#python3# 栅栏密码加密解密defcrypto():
plain =input('输入明文:')
n =int(input('输入每组字数'))
ans =''for i inrange(n):for j inrange(int(plain.__len__()/n +0.5)):try:
ans += plain[j*n+i]except:passreturn ans
defdecrypto():
plain =input('输入密文:')for n inrange(2, plain.__len__()-1):
ans =''for i inrange(n):for j inrange(int(plain.__len__()/ n +0.5)):try:
ans += plain[j * n + i]except:passprint("栏数:%d"%(n)," "+ans)if __name__ =='__main__':print('栅栏密码加密/解密.py')while(True):
choice =input('功能选择:\n1:加密\n2:解密\n')# 加密if choice =='1':print(crypto())# 解密elif choice =='2':
decrypto()else:print('choice error!')#栅栏密码解密'''
e=input('please input: ')
elen=len(e)
field=[]
for i in range(2,elen):
if (elen%i==0):
field.append(i)
for f in field:
length=len(e)
s=""
for i in range(f):
j=i
while j<length:
s+=e[j]
j+=f
print(s)
print("%d "%f,s)
'''
www型栅栏密码解密
#python3defencode(string, key):#需要加密的字符串以及加密栏数
i =0
enlist =[]for j inrange(0, key):
enlist.append('')#添加分组,列表的一个元素相当于一个分组while i <len(string):#分组重排进行加密for k inrange(0, key):if i >=len(string):break
enlist[k]+= string[i]
i +=1for k inrange(1, key-1):if i >=len(string):break
enlist[key-1-k]+= string[i]
i +=1
enstr =''for i inrange(key):
enstr += enlist[i]return enstr
if __name__=="__main__":
string=input("输入明文:")
key=int(input("输入栏数:"))
code=encode(string,key)print("%s"%code)
#python3import gmpy2
p=258631601377848992211685134376492365269
q=286924040788547268861394901519826758027
n = p *q
#公钥(n,e)
e=65537
fn =(p-1)*(q -1)#私钥(n,d)
d =gmpy2.invert(e, fn)print(d)#c=83208298995174604174773590298203639360540024871256126892889661345742403314929861939100492666605647316646576486526217457006376842280869728581726746401583705899941768214138742259689334840735633553053887641847651173776251820293087212885670180367406807406765923638973161375817392737747832762751690104423869019034#解出明文#print(pow(c, d, n))
未知p,q解RSA
#python3#---------------------------------------------------------------#分解大整数#求解p,q,并返回f(n)import math
defmoder(n):
base=2while base <math.sqrt(n):if(n%base==0):
fbase=base
print(base,int(n/base))
base+=1pass
f=getEuler(fbase,int(n/fbase))print('f(n)欧拉函数值:%d'%f)#return f
#-------------------------------------# 求欧拉函数f(n)defgetEuler(prime1, prime2):return(prime1-1)*(prime2-1)#---------------------------------------------------------------------------------------# 19d - 920071380k= 1# 求私钥ddefgetDkey(e, Eulervalue):#可以辗转相除法
k =1whileTrue:if(((Eulervalue * k)+1)% e)==0:(d,m)=divmod(Eulervalue * k +1,e)return d#避免科学计数法最后转int失去精度
k +=1#------------------------------------------------------#求明文defMing(c,d,n):returnpow(c,d,n)#---------------------------------------------------------------------------------------if __name__=='__main__':# 输入n
n=int(input('请输入要分解的质数: '))#920139713# 求私钥
d =getDkey(19, moder(n))print('私钥为: %d'% d)# 密文c
c=[704796792,752211152,274704164,18414022,368270835,483295235,263072905,459788476,483295235,459788476,663551792,475206804,459788476,428313374,475206804,459788476,425392137,704796792,458265677,341524652,483295235,534149509,425392137,428313374,425392137,341524652,458265677,263072905,483295235,828509797,341524652,425392137,475206804,428313374,483295235,475206804,459788476,306220148]
L=[]# 计算明文for x in c:
L.append(Ming(x,d,n))print(L)#明文ascii表# 打印明文for x in L:print(chr(x),end='')