吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5267|回复: 12
收起左侧

[Python 转载] Python 社会主义核心价值观的加解密工具

  [复制链接]
流月汐志 发表于 2020-1-21 15:44
本帖最后由 流月汐志 于 2020-1-23 17:41 编辑

根据坛友的思路做的一个 Python 版本的社会主义核心价值观加解密工具,
能力有限,代码粗糙,大家将就着看看。
思路:1. 每个字符(不论中文英文)转成 16 位的二进制,不足的左边补零。
2. 然后拆成  4*4 的二进制字符串。
3. 转十进制,大于等于 11 的,拆分2个;不大于的补零。保证每个 2 位 十进制数
4. 于是得到 8 位 11 以内的十进制数,查社会主义list,即为加密结果。
原帖地址:https://www.52pojie.cn/thread-1081771-1-1.html

效果图

TIM截图20200121152837.png

[Python] 纯文本查看 复制代码
def decoder(string):
    len_str = len(string)
    if len_str % 16 != 0:
        return 0
    result = ''
    for x in range(0, len_str, 16):
        decode_char = string[x:x+16]
        temp_int = [ENSTRS.index(decode_char[y:y+2]) for y in range(0, 16, 2)]
        int_list = [temp_int[x]+temp_int[x+1] for x in range(0, 8, 2)]
        bin_temp = [bin(i).replace('0b', '') for i in int_list]
        binstr_list = []
        for b in bin_temp:
            if len(b) < 4:
                binstr_list.append(b.zfill(4))
            else:
                binstr_list.append(b)
        binstr = ''.join(binstr_list)
        result = result + chr(int(binstr, 2))
    return result


def encoder(string):
    result = ''
    binstr_list = [b.replace('0b', '') for b in [bin(ord(c)) for c in string]]
    for binstr in binstr_list:
        len_binstr = len(binstr)
        if len_binstr < 16:
            binstr = binstr.zfill(16)
        temp_list = [binstr[start:start+4] for start in range(0, 16, 4)]
        int_list = []
        for i in temp_list:
            i = int(i, 2)
            if i >= 11:
                int_list.append(11)
                int_list.append(i - 11)
            else:
                int_list.append(0)
                int_list.append(i)
        result = result + ''.join([ENSTRS[index] for index in int_list])
    return result


ENSTRS = ("富强", "民主", "文明", "和谐", "自由", "平等",
          "公正", "法治", "爱国", "敬业", "诚信", "友善")

while True:
    input_str = input("1. 加密    2. 解密\n请选择:")
    if input_str in ['eof', 'EOF', 'quit', 'QUIT', 'exit', 'EXIT']:
        break
    elif input_str in ['1', '加密']:
        encode_str = input("请输入字符串:\n")
        result = encoder(encode_str)
        print("加密结果:\n{}".format(result))
    elif input_str in ['2', '解密']:
        decode_str = input("请输入加密字符串:\n")
        result = decoder(decode_str)
        print("解密结果:\n{}".format(result))
    else:
        print("输入有误!")

ps: 觉得有点意思的小伙伴们,路过点个热心呗,蟹蟹了~~

免费评分

参与人数 6吾爱币 +9 热心值 +6 收起 理由
18269055653 + 1 + 1 热心回复!
Zeaf + 1 + 1 这个挺有意思的。另外说一句,确实是我post没成功
我乃小明 + 1 + 1 很好玩这个
WEASYD + 1 谢谢@Thanks!
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
德古拉伯 + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 流月汐志 发表于 2020-1-21 16:47
风之暇想 发表于 2020-1-21 16:30
@流月汐志 楼主,这里是原创软件区,请上传编译后的软件,如果只有代码会移动到编程区

请版主帮我移一下,蟹蟹
Windows10 发表于 2020-1-21 16:10
lxzhtxh13 发表于 2020-1-21 16:11
sword803 发表于 2020-1-21 16:12
很有意思,写的很棒!
立竿见影 发表于 2020-1-21 16:17
楼主给力!
judgecx 发表于 2020-1-21 16:21
哈哈终于出了等很久了
风之暇想 发表于 2020-1-21 16:30
@流月汐志 楼主,这里是原创软件区,请上传编译后的软件,如果只有代码会移动到编程区
wqq2371 发表于 2020-1-21 17:14
想到了做过的那道ctf密码题
MOEYU_VANILLA 发表于 2020-1-21 21:58
感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 23:59

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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