风眠 发表于 2023-8-29 17:27:46

chr()、ord()和ASCII码及简易文本加密器

我们知道数据的安全在很多时候很重要,比如各位鱼油都在fishc.com上有个账号,账号密码的重要性是不言而喻的——毕竟谁也不想自己攒了这么久的鱼币一下子全没了,或者好不容易等级上去了一夜之间又成了新鱼油{:10_266:} 对吧。
这时候函数登场了,我们吧密码通过函数加密,然后呢我们密码的安全性就有了提高——毕竟你也不想人家终端上显示的就是密码吧——但这跟我们的标题有什么关系呢?别急,马上进入正题。
美国信息交换代码(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,尝试去修改一下{:10_277:}

zhangjinxuan 发表于 2023-9-9 15:37:24

太容易被破 解了,用这个加密后应该还要做一遍 md5 {:10_256:}

风眠 发表于 2023-9-9 18:15:08

zhangjinxuan 发表于 2023-9-9 15:37
太容易被破 解了,用这个加密后应该还要做一遍 md5

有道理

风眠 发表于 2023-9-9 18:24:04

zhangjinxuan 发表于 2023-9-9 15:37
太容易被破 解了,用这个加密后应该还要做一遍 md5

所以,你遇到异常了没
页: [1]
查看完整版本: chr()、ord()和ASCII码及简易文本加密器