鱼C论坛

 找回密码
 立即注册
查看: 4893|回复: 28

[作品展示] (含详细注释)尝试用ASCII“加密”和“解密”一小段文字

[复制链接]
发表于 2014-11-14 21:37:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 戴宇轩 于 2014-11-18 00:10 编辑

新版本已经发到论坛里, URL是: http://bbs.fishc.com/forum.php?m ... 55757&page=1&extra= ,不过新版本更难理解, 可以先看看这个。现在发的旧版本只能对9个字符进行操作。图片是示例(倒序),回复可以看到脚本
  1. #加密
  2. from random import *
  3. def stringstart():
  4.     flag = list()
  5.     string = list(input())           #将输入的内容变为列表
  6.     string2 = ''
  7.     flag.append(len(string))                #将列表的长度(字符数)加入flag
  8.     for i in string:
  9.         flag.append(len(str(ord(i))))                #将对应字符的ASCII码的长度加入flag
  10.     for i in string:
  11.         flag.append(ord(i))                   #将对应字符的ASCII码加入flag
  12.     for i in flag:
  13.         string2 += str(i)                      #将flag里的所有内容拼接成一个字符串
  14.     return list(string2)                  #返回处理过的列表
  15. def start(times):
  16.     string = stringstart()
  17.     x = range(10)
  18.     for repeat in range(times):                    #处理times次
  19.         for i in range(0, len(string) * 2, 2):
  20.             string.insert(i, x[randint(0, 9)])               #在x里面随机取出一个数, 每隔一个字符添加一个
  21.         string.reverse()                   #将处理过的字符原地翻转, 再进行一次处理
  22.     for j in string:   
  23.         print(j, end = '')                   #将“加密”过的字符串输出
  24. start(3)                  #规定times的值, 运行start
复制代码

  1. #解密
  2. def start(times):              #与上面的脚本的加密过程(start函数)相对应的解密函数
  3.     string = list(input()[::-1])
  4.     for repeat in range(times - 1):
  5.         string = string[1::2]
  6.         string.reverse()
  7.     return string[1::2]
  8. def jiemi():
  9.     string = start(3)                   #括号里是“加密”的次数, “解密”时要用到
  10.     bit1 = int(string[0])                   #提取加密之前的字符个数(这里应该用pop()更加简便, 当时没想那么多, 所以后面的步骤稍微复杂了一点)
  11.     bit2 = list()
  12.     temp = list()
  13.     for i in string[1:bit1 + 1]:
  14.         bit2.append(int(i))                 #提取加密之前的每个字符的ASCII码长度, 放在列表bit2中
  15.     string = string[bit1 + 1:]                 #把原列表ASCII码的前面的部分(ASCII码的长度)截掉, 保留后面的ASCII码部分
  16.     for i in range(bit1):
  17.         if bit2[i] == 3:
  18.             temp.append(100 + int(string[1]) * 10 + int(string[2]))                #如果bit1里面的第i位为3(加密前对应字符的ASCII码的位数为3), 那么将原列表的前三位变成一个整数放入列表temp里
  19.             string = string[3:]
  20.         else:
  21.             temp.append(int(string[0]) * 10 + int(string[1]))              #否则将列表的前两位变成整数放入列表temp里
  22.             string = string[2:]
  23.     for i in temp:
  24.         print('%c' % i, end = '')                    #将列表temp里的每个ASCII码再次变为加密前的字符, 成功!
  25. jiemi()
复制代码





解密结果

解密结果

解密内容

解密内容

解密脚本

解密脚本

加密结果

加密结果

加密内容

加密内容

加密脚本

加密脚本

评分

参与人数 2荣誉 +8 鱼币 +8 贡献 +4 收起 理由
wei_Y + 5 + 5 + 2 支持楼主!
小甲鱼 + 3 + 3 + 2 热爱鱼C^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-14 22:01:34 | 显示全部楼层
谢谢宇轩的分享,不过下次发代码使用<>代码格式发才不会被编辑器过滤掉特殊符号哦~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-14 22:08:43 | 显示全部楼层
本帖最后由 戴宇轩 于 2014-11-14 22:28 编辑
小甲鱼 发表于 2014-11-14 22:01
谢谢宇轩的分享,不过下次发代码使用代码格式发才不会被编辑器过滤掉特殊符号哦~~~

@小甲鱼 谢谢老师提醒,我已经修正了~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-14 22:54:36 | 显示全部楼层
谢谢您了 楼主
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2014-11-15 09:24:57 | 显示全部楼层
支持一下  谢谢楼主分享了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2014-11-15 18:26:29 | 显示全部楼层
谢谢楼主的分享!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2014-11-16 07:42:46 | 显示全部楼层
不管东西咋样 还是先谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-16 20:22:30 | 显示全部楼层
看看如何呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-17 08:40:24 | 显示全部楼层
啦啦啦 ,我来了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-17 23:27:41 | 显示全部楼层
都会哭得很疯狂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-17 23:29:10 | 显示全部楼层
研究研究
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-19 09:34:07 | 显示全部楼层
如果想鼓励一下楼主或帮助到您的朋友,可以给他们评分
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-20 09:53:59 | 显示全部楼层
看看啊。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-20 14:36:28 | 显示全部楼层
看看是什么好东西啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-20 14:49:45 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-21 21:44:52 | 显示全部楼层
:titter::titter::titter::titter::titter::titter::titter::titter:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-21 22:26:27 | 显示全部楼层
{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-1-9 23:47:33 | 显示全部楼层
谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-1-10 00:25:09 | 显示全部楼层
学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-2-27 14:55:25 | 显示全部楼层
瞅瞅。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 06:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表