>>> words =('测试','非法','暴力','话')>>> text ='这句话里含有非法内容'>>>for word in words:if word in text:
text = text.replace(word,'***')>>> text
4.应用:测试整篇文章的内容
words =('测试','非法','暴力','话','黄')#读取原始文档内容withopen(r"C:\Users\ZXL\Desktop\测试文档.txt","r", encoding='utf-8')as fp:
content=fp.readlines()#逐行读出,结果存在列表中print(">>>>>>原始内容>>>>>>>")print(content)#替换非法内容for word in words:if word in content:
content = content.replace(word,'***')print(">>>>>>>替换后的内容>>>>>>>>")print(content)#将替换后的结果写入文件withopen(r"C:\Users\ZXL\Desktop\测试文档.txt","w", encoding='utf-8')as fp:
fp.write(content)
5.应用:凯撒加密,每个字母替换为后面第k个。
from string import ascii_letters, ascii_lowercase, ascii_uppercase
defkaisaEncrypt(text, k):# 凯撒加密
lower = ascii_lowercase[k:]+ascii_lowercase[:k]
upper = ascii_uppercase[k:]+ascii_uppercase[:k]
table =''.maketrans(ascii_letters, lower+upper)return text.translate(table)
s ="Python is a greate programming language. I like it!"print(kaisaEncrypt(s,3))'Sbwkrq lv d juhdwh surjudpplqj odqjxdjh. L olnh lw!'
6.应用:暴力破解凯撒解密。
defcheck(text):# 测试文本中是否存在至少两个最常见的英语单词# 列表可扩展,规则可调整
mostCommonWords =('the','is','to','not','have','than','for')returnsum(1for word in mostCommonWords if word in t)>=2#测试
text ='Beautiful is better than ugly.'#加密
encryptedText = kaisaEncrypt(text,5)#暴力破解for i inrange(1,26):
t = kaisaEncrypt(encryptedText,-i)if check(t):print(i)print(t)break
7.应用:随机密码生成原理。
>>>import string
>>> characters = string.digits + string.ascii_letters
>>>import random
>>>''.join([random.choice(characters)for i inrange(8)])'J5Cuofhy'>>>''.join([random.choice(characters)for i inrange(10)])'RkHA3K3tNl'>>>''.join([random.choice(characters)for i inrange(16)])'zSabpGltJ0X4CCjh'
8.检查并判断密码字符串的安全强度。这实际上是一个分类问题。
import string
defcheck(pwd):#密码必须至少包含6个字符ifnotisinstance(pwd,str)orlen(pwd)<6:return'not suitable for password'#密码强度等级与包含字符种类的对应关系
d ={1:'weak',2:'below middle',3:'above middle',4:'strong'}#分别用来标记pwd是否含有数字、小写字母、大写字母和指定的标点符号
r =[False]*4for ch in pwd:#是否包含数字ifnot r[0]and ch in string.digits:
r[0]=True#是否包含小写字母elifnot r[1]and ch in string.ascii_lowercase:
r[1]=True#是否包含大写字母elifnot r[2]and ch in string.ascii_uppercase:
r[2]=True#是否包含指定的标点符号elifnot r[3]and ch in',.!;?<>':
r[3]=True#统计包含的字符种类,返回密码强度return d.get(r.count(True),'error')print(check('a2Cd,'))