马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我们知道数据的安全在很多时候很重要,比如各位鱼油都在fishc.com上有个账号,账号密码的重要性是不言而喻的——毕竟谁也不想自己攒了这么久的鱼币一下子全没了,或者好不容易等级上去了一夜之间又成了新鱼油 对吧。
这时候函数登场了,我们吧密码通过函数加密,然后呢我们密码的安全性就有了提高——毕竟你也不想人家终端上显示的就是密码吧——但这跟我们的标题有什么关系呢?别急,马上进入正题。
美国信息交换代码(ASCII码)这个标准是比较常见的,我们优雅的python其实也会ASCII码,不信你试试:>>> 0b1011010
90
>>> ord('Z')#Z的ASCII码
90
>>> chr(90)#ASCII码为90的字符
'Z'
ASCII码的极限是127但你可以在python中试试>>>chr(25105);chr(29233);chr(40060);chr(67)#是不是很熟悉?
好的,既然这两个函数可以在数字和字符一一对应,那么我们可不可以把他们用来加密?
我们来试试:import random as r
import time
def encryption(file_name,word=None,m_way=lambda x:x*2+3,r_way =lambda x: int((x-3)/2) ,m=0) :#加密/解密
if m!=0:
f=open(file_name)
a=""
for i in f.read():
a=a+chr(r_way(ord(i)))
print(a)
with open("(已解密)"+file_name,"w") as f1:
f1.write(a)
f.close()
else
with open(file_name,"w") as f:
a=""
for i in word:
a=a+chr(m_way(ord(i)))
f.write(a)
def random_name(len):
try:
name=str(time.localtime()[:5])
except:
name="(获取时间错误)"
for i in range (len ):
name=name+str(r.randint(0,10))
return name+".txt"
name=input("1: 加密 其他:解密(输入文件名称)")
if name=="1":
encryption(random_name(7), word=input("加密内容:"))
else:
encryption(name,m=1)
你应该会看到错误(如果没异常那就试试'I love fishc.com 或者是我爱鱼C工作室),想想原因是什么,并尝试修复它。
其实这个程序有很多BUG,尝试去修改一下 |