南邮CTF 骚年来一发吗

来一发!!!

正过程:
先翻转字符串 = a
for(b=0;b<len(a);b++)
{
   c = substr(a,b,1);//字符串a从b开始截取,长度为1
   d = ord(c)+1;
   c = chr(d);
   //字符串中的每个字符取出来向后移动一位
   end = end.c
}
 str_rot13(strrev(base64_encode(end)));

最后一步,base64加密end,在翻转字符串,在rot13 end

 

解密:
第一步: rot13解密,翻转字符串,base64解密
第二步: 把字符串中的每个都取出,向前移动一位

第三步:翻转字符串

import base64
codingstr = "iEJqak3pjIaZ0NzLiITLwWTqzqGAtW2oyOTq1A3pzqas"


def strrot13(string):
    getstr = ""
    for i in range(0,len(string)):
        str1 = string[i:i+1]
        str1 = ord(str1)
        if(65<=str1<=90):#65+26-1
            if(65<=str1<=77):#65+13-1
                str1 = str1 + 13
            else:
                str1 = str1 - 13
        elif(97<=str1<=122):
            if(97<=str1<=109):
                str1 = str1 + 13
            else:
                str1 = str1 - 13
        getstr +=  chr(str1)
    return getstr


def strrev(string):
    getstr = ""
    benum = len(string)
    while benum > 0:
        getstr += string[benum-1:benum]
        benum -= 1
    return getstr


def re(string):
    getstr = ""
    for i in range(0,len(string)):
        str1 = string[i:i + 1]
        str1 = ord(str1) - 1
        getstr += chr(str1)
    return getstr


codingstr = strrev(strrot13(codingstr))
codingstr = base64.b64decode(codingstr)
codingstr = re(codingstr)
print(strrev(codingstr))

反转字符串快捷操作

a="abc"

a[::-1]="cba"

真是学到了

上之后才发现密文中有数字,查了一下rot13是对数字不进行任何操作的

 

但其实直接写也没有影响....

算法很leji,欢迎大佬指正

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值