密碼學簡介
這是我以前所不知道的。
密碼學的基本目的是使兩個在不安全通道中通訊的人,通常稱為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...