鱼C论坛

 找回密码
 立即注册
查看: 11119|回复: 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,不会对文本造成影响)
print(easy_codes('000000001100101000100000011111'))
print(easy_codes('00000000100110100001100001001111010010010000111101100111100111111'))
print(easy_codes('520'))
print(easy_codes('I love you'))
同一个函数可以双向转换
输出:
520
I LOVE YOU
000000001100101000100000011111
00000000100110100001100001001111010010010000111101100111100111111

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

使用道具 举报

 楼主| 发表于 2017-5-21 21:38:06 | 显示全部楼层
于是我收到了这样的表白:
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  
……
#!/usr/bin/python
a = [chr(i) for i in range(65, 91)]
b = []
for i in range(5, 31):
    s = bin(i)[2:]
    length = len(s)
    if length < 5:
        s = s.zfill(5)
    b.append(s)
dict1 = dict(zip(b, a)) # 二进制对应字母
dict2 = dict(zip(a, b)) # 字母对应二进制

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

def easyCode(contents):
    global dict1, dict2, dict3, dict4
    encode = True
    decode = False
    if contents.startswith('00000') and contents.endswith('11111'):
        decode = True
        encode = False
    else:
        encode = True
        decode = False
    if encode:
        if contents[0].isdigit():
            s = '0000000011'
            for i in contents:
                if i == ' ':
                    s += '00001'
                else:
                    s += dict4[i]
            s += '11111'
            return s
        elif contents[0].isalpha():
            contents = contents.upper()
            s = '0000000010'
            for i in contents:
                if i == ' ':
                    s += '00001'
                else:
                    s += dict2[i]
            s += '11111'
            return s
    if decode:
        firstOne = contents.index('1')
        alpha = True
        digit = False
        if contents[firstOne + 1] == '1':
            digit = True
            alpha = False
        elif contents[firstOne + 1] == '0':
            digit = False
            alpha = True
        s = contents[firstOne + 2:]
        length = len(s)
        chars = []
        i = 0
        while i < length:
            chars.append(s[i:i+5])
            i += 5
        result = '' 
        for char in chars:
            if char == '11111':
                break
            elif char == '00001':
                result += ' '
            else:
                if digit:
                    result += dict3[char]
                elif alpha:
                    result += dict1[char]
        return result
       
print(easyCode('520'))
print(easyCode('I love you'))
print(easyCode('000000001100101000100000011111'))
print(easyCode('0000000000000000100110100001100001001111010010010000111101100111100111111111111111'))
print(easyCode('000000001010110010011100011001101101001000001100011110100001100011001110010010011110111111'))

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-14 23:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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