|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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,尝试去修改一下 |
|