一、凱撒密碼:
替換方法對資訊中的每一個英文字符回圈替換為字母表序列該字符后面的第三個字符,特殊符號不進行加密處理
對于原文中的字符P,其密文字符C滿足如下條件:
凱撒密碼的加密方法:C=(P+3)mod 26
凱撒密碼的解密方法:P=(C-3)mod 26
加密第一種方法:
plaincode = input()
for p in plaincode:
if ord("a") <= ord(p) <= ord("z"):
print(chr (ord("a")+(ord(p)-ord("a")+3)%26),end='')
elif ord("A") <= ord(p) <= ord("Z"):
print(chr (ord("A")+(ord(p)-ord("A")+3)%26),end='')
else:
print(p,end='')
第二種方法:
輸入格式:第一行是一個字串;第二行是一個正整數
輸出格式:一個字串,內容為用戶輸入字串加密后的結果
plaincode = input()
num = int(input())
'''
原文字符P,密文字符C,偏移量num滿足下列條件
C = (P + num) mod 26
P = (C - num) mod 26
ord函式:回傳用來表示記憶體中相應字符的實際二進制值(底層整數碼-ASCII位元組值)
chr函式:獲取整數碼并將其轉換為對應的字符
'''
for p in plaincode: # 使用上面的方法計算
if ord("a") <= ord(p) <= ord("z"):
print(chr(ord('a')+(ord(p)-ord('a')+num)%26),end='')
elif ord("A") <= ord(p) <= ord("Z"):
print(chr(ord('A')+(ord(p)-ord('A')+num)%26),end='')
else:
print(p,end="")
二、黑客語解密:將英語中的英文字母替換為數字和特殊符號
table = ' '. maketrans (before , after) :創建映射表
str1 . translate(table) : 可以將table中的字符按映射表中的順序進行替換
替換表:0 1 3 4 5 6 7 $
o i e a s g t s
str1 = input() before = '0134567' after = 'oieasgt' table = ''.maketrans(before, after) #創建映射表 print(str1.translate(table))
三、密碼強度判斷:用戶輸入一個字串作為密碼,判斷密碼強度
#判斷密碼字串長度是否大于8
#是否包含數字 string.digits 可回傳'0123456789'
#是否包含小寫字母 string.ascii_lowercase 可回傳'abcdefghijklmnopqrstuvwxyz'
#是否包含大寫字母 string.ascii_uppercase 可回傳'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
#是否包含特殊字符 string.punctuation 可回傳'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
#長度小于8弱密碼,長度大于等于8且包含至少2種字符為中等強度,包含3種字符為較強,包含全部4種字符為極強,
import string
pwd = input()
strong = d = al = au = pu = 0
for ch in pwd:
if ch in string.digits: #是否包含數字
d = 1
elif ch in string.ascii_lowercase: #是否包含小寫字母
al = 1
elif ch in string.ascii_uppercase: #是否包含大寫字母
au = 1
elif ch in string.punctuation: #是否包含指定的標點符號
pu = 1
if len(pwd) < 8:
strong = 0
else:
strong = d + al + au + pu
if strong < 2:
print('弱')
elif strong == 2:
print('中')
elif strong == 3:
print('強')
elif strong == 4:
print('極強')
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/158287.html
標籤:Python
上一篇:Python學習筆記:Python的時間操作(time,datetime,timedelta,calendar)
