求加密算法
请问各位大佬,下面的加密算法是什么明文----密码
ab ----YWI=
abc ----YWJj
abcd ----YWJjZA==
abde ----YWJjZGU=
abcdef ----YWJjZGVm
12----MTI=
123----MTIz
1234----MTIzNA==
12345----MTIzNDU=
123456----MTIzNDU2
目测base64 版主大哥我发的求助帖怎么没审核通过呢? mayuan5520 发表于 2019-9-23 12:55
版主大哥我发的求助帖怎么没审核通过呢?
只能等了,有时间很慢 base64 啊 目测是人为变异后的凯撒密码
字母代换+奇偶(奇数位后边不加 = ,偶数位后边加 =)
判断方法:目测法+找规律(纯属胡扯) base64直接即可获得 base64编码 规律就是不足三位的加=,
a----MjIyMjI=
aa----YWE=
aaa----YWFh
aaaa----YWFhYQ==
aaaaa----YWFhYWE=
aaaaaa----YWFhYWFh
aaaaaaa----YWFhYWFhYQ==
aaaaaaaa----YWFhYWFhYWE=
aaaaaaaaa----YWFhYWFhYWFh
谢谢各位大佬的解答,代码实现了,有需要的拿去吧
本帖最后由 hesitec 于 2019-9-23 14:30 编辑# 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 = for x in ]
# 二进制转为10进制
temp_str_list =
# 判断是否为补齐的字符 做相应的处理
if equal_num:
temp_str_list = temp_str_list
output_str += ''.join( for x in temp_str_list])
str_ascii_list = str_ascii_list
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
# 4个6字节的二进制转换为三个8字节的二进制
temp_str_list = for x in ]
# 二进制转为10进制
temp_str_list =
output_str += ''.join()
str_ascii_list = str_ascii_list
#print(output_str)
return output_str
def changeCap(inputstr):
ilen = len(inputstr)
ret = ""
for i in range(0,ilen):
char0 = inputstr
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)
页:
[1]
2