ROT加密算法login-RESERVE

ROT算法(字母轮换加密)

也称为Caesar加密,是一种简单的字母替换加密算法。它通过将字母表中的每个字母向后(或向前)移动固定的位置来加密文本。

加密步骤:

  1. 选择一个固定的偏移量(通常是1到25之间的整数),表示字母向后移动的位置数。

  2. 对于要加密的文本中的每个字母,将其替换为字母表中向后移动偏移量位置的字母。

  3. 对于非字母字符(如数字、符号等),保持不变。

     (类似于凯撒密码(仅限于字母之间))

举例:偏移量为13

           加密前:hello,world!

           加密后:Uryyb,Jbeyq!

文件是一个网页html页面,点击检查浏览元素,主要是text/javascript部分。

var rotFlag = flag.replace(/[a-zA-Z]/g, function(c){return String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26);})

红框中的加密方法就是ROT13算法,偏移量为13。

说明:就是给与a-z,A-Z的字母(记为c)定义功能函数function(),其ASCⅡ值加上13若还在65-90,97-122之间,则取chr(c+13)作为rotflag;若超出,则再减去26也就是chr(c-13)(c+13-26)。这样以来就是说,在ASCⅡ代码值65~77,97~109的字母要加上13转化为字符取值;78~90,110~122之间的减去13转化为字母取值。

说明:
1.replace(/[a-zA-Z]/g, function(c){...})使用正则表达式 /[a-zA-Z]/g 匹配所有字母字符(大小写字母),并对每个匹配到的字母调用回调函数 function(c)
2.charcodeAt():取Unicode值。         
3.String.fromCharCode(...):将最终计算得到的编码值转换回字符。

根据加密方式写出脚本:

如有错误随时指正♥♥♥

ciphertext = "PyvragFvqrYbtvafNerRnfl@syner-ba.pbz"

flag = ""

for i in range(len(ciphertext)):

    if ord(ciphertext[i])<78 and ord(ciphertext[i])>=65 or ord(ciphertext[i])<110 and 
ord(ciphertext[i])>=97:
        flag += chr(ord(ciphertext[i])+13)

    elif ord(ciphertext[i])>=78 and ord(ciphertext[i])<=90 or ord(ciphertext[i])<=122 and ord(ciphertext[i])>=110:
        flag += chr(ord(ciphertext[i])-13)

    else:
        flag += ciphertext[i]

print('flag{'+flag+'}') 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值