吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

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

[求助] 求加密算法

[复制链接]
hesitec 发表于 2019-9-23 12:48
请问各位大佬,下面的加密算法是什么

明文----密码
ab ----YWI=
abc ----YWJj
abcd ----YWJjZA==
abde ----YWJjZGU=
abcdef ----YWJjZGVm
12----MTI=
123----MTIz
1234----MTIzNA==
12345----MTIzNDU=
123456----MTIzNDU2

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

苏紫方璇 发表于 2019-9-23 12:54
目测base64
mayuan5520 发表于 2019-9-23 12:55
ILIADA 发表于 2019-9-23 12:59
mayuan5520 发表于 2019-9-23 12:55
版主大哥  我发的求助帖怎么没审核通过呢?

只能等了,有时间很慢
vipcrack 发表于 2019-9-23 13:02
base64 啊
凯咪 发表于 2019-9-23 13:03
目测是人为变异后的凯撒密码

字母代换+奇偶(奇数位后边不加 = ,偶数位后边加 =)

判断方法:目测法+找规律(纯属胡扯)
joinJold 发表于 2019-9-23 13:04
base64直接即可获得
huansheng 发表于 2019-9-23 13:21
base64编码
 楼主| hesitec 发表于 2019-9-23 13:32
规律就是不足三位的加=,

a----MjIyMjI=
aa----YWE=
aaa----YWFh
aaaa----YWFhYQ==
aaaaa----YWFhYWE=
aaaaaa----YWFhYWFh
aaaaaaa----YWFhYWFhYQ==
aaaaaaaa----YWFhYWFhYWE=
aaaaaaaaa----YWFhYWFhYWFh
 楼主| hesitec 发表于 2019-9-23 14:01

谢谢各位大佬的解答,代码实现了,有需要的拿去吧

本帖最后由 hesitec 于 2019-9-23 14:30 编辑

[Python] 纯文本查看 复制代码
# coding:utf8
import string
import base64

# 编码用64位数组 因为是转换为6个字节的字符 所以64位就够了
letters = list(string.ascii_letters) + list(string.digits) + ['+', '/']

def my_base64_encodestring(input_str):
    # 对每一个字节取ascii数值或unicode数值,然后转换为2进制
    str_ascii_list = ['{:0>8}'.format(str(bin(ord(i))).replace('0b', ''))
                      for i in input_str]
    output_str = ''
    # 不够3的整数倍 补齐所需要的次数
    equal_num = 0
    while str_ascii_list:
        temp_list = str_ascii_list[:3]
        if len(temp_list) != 3:
            while len(temp_list) < 3:
                equal_num += 1
                temp_list += ['0'*8]
        temp_str = ''.join(temp_list)
        # 三个8字节的二进制 转换为4个6字节的二进制
        temp_str_list = [temp_str[x:x+6] for x in [0, 6, 12, 18]]
        # 二进制转为10进制
        temp_str_list = [int(x, 2) for x in temp_str_list]
        # 判断是否为补齐的字符 做相应的处理
        if equal_num:
            temp_str_list = temp_str_list[0:4-equal_num]
        output_str += ''.join([letters[x] for x in temp_str_list])
        str_ascii_list = str_ascii_list[3:]
    output_str = output_str + '=' * equal_num
    #print(output_str)
    return output_str

def my_base64_decodestring(input_str):
    # 对每一个字节取索引,然后转换为2进制
    str_ascii_list = ['{:0>6}'.format(str(bin(letters.index(i))).replace('0b', ''))
                      for i in input_str if i != '=']
    output_str = ''
    equal_num = input_str.count('=')
    while str_ascii_list:
        temp_list = str_ascii_list[:4]
        temp_str = ''.join(temp_list)
        # 补够8位
        if len(temp_str) % 8 != 0:
            temp_str = temp_str[0:-1*equal_num*2]
        # 4个6字节的二进制  转换  为三个8字节的二进制
        temp_str_list = [temp_str[x:x+8] for x in [0, 8, 16]]
        # 二进制转为10进制
        temp_str_list = [int(x, 2) for x in temp_str_list if x]
        output_str += ''.join([chr(x) for x in temp_str_list])
        str_ascii_list = str_ascii_list[4:]
    #print(output_str)
    return output_str

def changeCap(inputstr):
    ilen = len(inputstr)
    ret = ""
    for i in range(0,ilen):
        char0 = inputstr[i]
        if char0.isupper():
            ret += char0.lower()
        elif char0.islower():
            ret += char0.upper()
        else:
            ret += char0
    return ret


if __name__ == "__main__":
    input_str = 'aaaaaaaaa'
    out0=my_base64_encodestring(input_str)
    #大小写互换
    out1 = changeCap(out0)
    print(out1)
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-27 02:22

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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