編寫python程式實現移位密碼 移位密碼

2021-10-13 14:50:19 字數 1890 閱讀 4033

密碼學簡介

這是我以前所不知道的。

密碼學的基本目的是使兩個在不安全通道中通訊的人,通常稱為alice和bob,以一種使他們的敵手oscar不能明白和理解通訊內容的方式進行通訊。

定義:乙個密碼體系是滿足一下條件的五元組(p,c,k,e,d)

p代表所有可能的明文組成的有限集

c代表所有可能的密文組成的有限集

k代表金鑰空間,由所有可能的金鑰組成的有限集

對於每乙個k∈k,都存在乙個加密規則ek∈e和相應的解密規則dk∈d。並且對每對ek:p→c,dk:c→p,滿足條件:對每乙個明文x∈p,均有dk(ek(x))=x

移位密碼

其基礎是數論中的模運算

假設a和b均為整數,m為一正整數,若m整除b-a,則可將其表達成a≡b(mod m)。式a≡b(mod m)讀作「a與b模m同餘」,正整數m稱為模數。

定義令p=c=k=z26,對0<=k<=25,任意的x,y∈zm,定義

ek(x)=(x+k)mod 26

和dk=(y-k)mod 26

凱撒密碼

當k=3時,此密碼叫做凱撒密碼,因為他首先被儒樂 凱撒(就是那個凱撒大帝)所使用的。

他將26個字母與數字一一對應,通過移位與mod26,來進行轉換。

下面我用python實現加密解密

#加密def caserencode(m,k):

c=''

for i in m:

c+=chr(ord(i)+k)

return c

# 解密

def caserdecode(c,k):

m=''

for i in c:

m+=chr(ord(i)-k)

return m

柵欄密碼

另一種移位密碼,柵欄密碼通過將明文進行分欄後重新組合進行加密。

例如 the quick brown fox jumps over the lazy dog,先把空格去掉,thequickbrownfoxjumpsoverthelazydog

再按進行分欄(6個字母為一欄)

thequi

ckbrow

nfoxju

mpsove

rthela

zydog

再從上到下每一列讀出來,tcnmrzhkfptyeboshdqrxoeouojvlgiwuea

python實現

# 加密

def fenceencode(m,k):

j=0l=

n=''

for i in m:

#print(i,end='')

n+=i

j+=1

if j==k:

j=0n=''

w=0c=''

for w in range(len(l[0])):

for i in l:

try:

c+=i[w]

except:

pass

return c

#解密def fencedecode(c,k):

l=len(c)/k

if l-int(l)>0:

l=int(l)+1

else:

l=int(l)

p=0n=''

l=for i in c:

#print(i,end='')

n+=i

p+=1

if p==l:

p=0n=''

m=''

for w in range(len(l[0])):

for i in l:

try:

m+=i[w]

except:

pass

return m

其他移位密碼

曲路密碼,雲影密碼

python實現密碼的強度 Python密碼強度

對我來說,regex絕對是最簡單的方法。給定乙個示例密碼password,您檢查密碼的方式是 import re check if contains at least one digit if re.search r d password print has a digit check if con...

python編寫定時關機程式

import os,sys,time from pyqt5 import qtcore,qtwidgets,qtgui class guanji object defpageshow self,page 設定視窗的位置和大小 page.setgeometry 400,400,400,200 設定視窗...

Python編寫備份程式指令碼

編寫backup.py指令碼,實現以下目標 1 需要支援完全和增量備份 2 周一執行完全備份 3 其他時間執行增量備份 4 備份檔案需要打包為tar檔案並使用gzip格式壓縮 import os import tarfile import hashlib import pickle from tim...