鱼C论坛

 找回密码
 立即注册
查看: 10082|回复: 50

[作品展示] 【520表白日】制作一个专属的表白密码(含加密和解密)

[复制链接]
发表于 2017-5-21 21:24:16 | 显示全部楼层 |阅读模式

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

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

x
520表白日刚刚过去,不知道你是否有收到表白呢?

相信对于很多人来说,表白还是很难直接开口的,那么我们就制作一段属于我们专用的表白密码吧。

转换规则很简单,类似于摩斯密码:

00000 表示未开始
00001 表示空格(不允许出现在开头)
00010 表示字母
00011 表示数字
00100 A
00101 B
00111 C
01000 D
01001 E
01010 F
01011 G
01100 H
01101 I
01110 J
01111 K
10000 L
10001 M
10010 N
10011 O
10100 P
10101 Q
10110 R
10111 S
11000 T
11001 U
11010 V
11011 W
11100 X
11101 Y
11110 Z
11111 表示已结束


以‘00000’开头和‘11111’结尾的好处是可以避免在开头和结尾处的信息丢失。(可以在开头处多加一些0,也可以在结尾处多加一些1,不会对文本造成影响)
  1. print(easy_codes('000000001100101000100000011111'))
  2. print(easy_codes('00000000100110100001100001001111010010010000111101100111100111111'))
  3. print(easy_codes('520'))
  4. print(easy_codes('I love you'))
复制代码

同一个函数可以双向转换
输出:
  1. 520
  2. I LOVE YOU
  3. 000000001100101000100000011111
  4. 00000000100110100001100001001111010010010000111101100111100111111
复制代码


源代码:
游客,如果您要查看本帖隐藏内容请回复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-5-21 21:38:06 | 显示全部楼层
于是我收到了这样的表白:
  1. 000000001010110010011100011001101101001000001100011110100001100011001110010010011110111111
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-22 12:56:46 From FishC Mobile | 显示全部楼层
数字化的实在是太不够人性化了。
感觉现在的云词做出来的东西还是比较适合用来表白的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-22 14:17:25 | 显示全部楼层
ooxx7788 发表于 2017-5-22 12:56
数字化的实在是太不够人性化了。
感觉现在的云词做出来的东西还是比较适合用来表白的。

这个背景纯粹是我乱写的
现在这年代还表啥白,直接推到墙角“壁咚”了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-22 20:16:51 | 显示全部楼层
jerryxjr1220 发表于 2017-5-22 14:17
这个背景纯粹是我乱写的
现在这年代还表啥白,直接推到墙角“壁咚”了

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

使用道具 举报

 楼主| 发表于 2017-5-31 16:01:57 From FishC Mobile | 显示全部楼层
www.csctc317.com
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-2 12:05:24 | 显示全部楼层
表示很新奇
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-8 22:27:12 | 显示全部楼层
666666666666666666666666666666666666666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-9 04:49:30 | 显示全部楼层
666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-30 23:03:25 | 显示全部楼层
henhao
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-3 06:31:36 | 显示全部楼层
观摩,学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-10 12:35:42 | 显示全部楼层
感觉hen6  想看看那
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-10 12:45:48 | 显示全部楼层
收藏了,老铁
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-16 22:23:07 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-17 15:44:20 | 显示全部楼层
不错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-17 17:18:31 From FishC Mobile | 显示全部楼层
66
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-19 10:27:28 | 显示全部楼层
666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-12 21:11:09 | 显示全部楼层
支持加油
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-12 21:56:19 From FishC Mobile | 显示全部楼层
jj
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-13 10:25:03 | 显示全部楼层
本帖最后由 shigure_takimi 于 2018-3-13 10:37 编辑

楼主题目有问题。
字母A, B二进制对应有问题。
00100 A   ---> 00101
00101 B   ---> 00110
00111 C
01000 D
01001 E  
……

  1. #!/usr/bin/python
  2. a = [chr(i) for i in range(65, 91)]
  3. b = []
  4. for i in range(5, 31):
  5.     s = bin(i)[2:]
  6.     length = len(s)
  7.     if length < 5:
  8.         s = s.zfill(5)
  9.     b.append(s)
  10. dict1 = dict(zip(b, a)) # 二进制对应字母
  11. dict2 = dict(zip(a, b)) # 字母对应二进制

  12. a = [str(i) for i in range(10)]
  13. b = []
  14. for i in a:
  15.     s = bin(int(i))[2:]
  16.     length = len(s)
  17.     if length < 5:
  18.         s = s.zfill(5)
  19.     b.append(s)
  20. dict3 = dict(zip(b, a)) # 二进制对应十进制数字
  21. dict4 = dict(zip(a, b)) # 十进制数字对应二进制

  22. def easyCode(contents):
  23.     global dict1, dict2, dict3, dict4
  24.     encode = True
  25.     decode = False
  26.     if contents.startswith('00000') and contents.endswith('11111'):
  27.         decode = True
  28.         encode = False
  29.     else:
  30.         encode = True
  31.         decode = False
  32.     if encode:
  33.         if contents[0].isdigit():
  34.             s = '0000000011'
  35.             for i in contents:
  36.                 if i == ' ':
  37.                     s += '00001'
  38.                 else:
  39.                     s += dict4[i]
  40.             s += '11111'
  41.             return s
  42.         elif contents[0].isalpha():
  43.             contents = contents.upper()
  44.             s = '0000000010'
  45.             for i in contents:
  46.                 if i == ' ':
  47.                     s += '00001'
  48.                 else:
  49.                     s += dict2[i]
  50.             s += '11111'
  51.             return s
  52.     if decode:
  53.         firstOne = contents.index('1')
  54.         alpha = True
  55.         digit = False
  56.         if contents[firstOne + 1] == '1':
  57.             digit = True
  58.             alpha = False
  59.         elif contents[firstOne + 1] == '0':
  60.             digit = False
  61.             alpha = True
  62.         s = contents[firstOne + 2:]
  63.         length = len(s)
  64.         chars = []
  65.         i = 0
  66.         while i < length:
  67.             chars.append(s[i:i+5])
  68.             i += 5
  69.         result = ''
  70.         for char in chars:
  71.             if char == '11111':
  72.                 break
  73.             elif char == '00001':
  74.                 result += ' '
  75.             else:
  76.                 if digit:
  77.                     result += dict3[char]
  78.                 elif alpha:
  79.                     result += dict1[char]
  80.         return result
  81.       
  82. print(easyCode('520'))
  83. print(easyCode('I love you'))
  84. print(easyCode('000000001100101000100000011111'))
  85. print(easyCode('0000000000000000100110100001100001001111010010010000111101100111100111111111111111'))
  86. print(easyCode('000000001010110010011100011001101101001000001100011110100001100011001110010010011110111111'))

  87. ##    000000001100101000100000011111
  88. ##    00000000100110100001100001001111010010010000111101100111100111111
  89. ##    520
  90. ##    I LOVE YOU
  91. ##    RETURN MY MONEY
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 11:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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