ctf之加密

本文介绍了多种常见的密码学编码方式,包括Base64、Base32、希尔密码、栅栏密码、凯撒密码等,并提供了相应的在线解密工具及解题思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

from:http://drops.wooyun.org/tips/10002

0x01 Base64


Base64:ZXZhbCgkX1BPU1RbcDRuOV96MV96aDNuOV9qMXVfU2gxX0oxM10pNTU2NJC3ODHHYWJIZ3P4ZWY=

Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,输出字符使用'=',因此编码后输出的文本末尾可能会出现1或2个'='

Base32: Base32和Base64相比只有一个区别就是,用32个字符表示256个ASC字符,也就是说5个ASC字符一组可以生成8个Base字符,反之亦然。

在线编解码:http://base64.xpcha.com/

0x02 希尔密码


希尔密码:密文: 22,09,00,12,03,01,10,03,04,08,01,17 (明文:wjamdbkdeibr

解题思路:使用的矩阵是 1 2 3 4 5 6 7 8 10

原文链接:http://bobao.360.cn/ctf/learning/136.html

百度百科:http://baike.baidu.com/link?url=R6oWhCdKvzlG8hB4hdIdUT1cZPbFOCrpU6lJAkTtdiKodD7eRTbASpd_YVfi4LMl7N8yFyhVNOz5ki6TC7_5eq

0x03 栅栏密码


栅栏密码:把要加密的明文分成N个一组,然后把每组的第1个字连起来,形成一段无规律的话。

密文样例:tn c0afsiwal kes,hwit1r  g,npt  ttessfu}ua u  hmqik e {m,  n huiouosarwCniibecesnren.

解密程序:

char s[]= "tn c0afsiwal kes,hwit1r  g,npt  ttessfu}ua u  hmqik e {m,  n huiouosarwCniibecesnren.";  
char t[86]= "";  
int i,j,k;
k=0;
for (i=0;i<17;i++)  
{  
      for(j=0;j<5;j++)  
      {  
                t[k++]= ch[j*17+i];  
      }  
}  
for(i=0;i<85;i++)
{
    printf("%c",t[i]);
}

原文链接:http://blog.youkuaiyun.com/shinukami/article/details/45980629

0x04 凯撒密码


凯撒密码:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。

密文样例:U8Y]:8KdJHTXRI>XU#?!K_ecJH]kJG*bRH7YJH7YSH]*=93dVZ3^S8*$:8"&:9U]RH;g=8Y!U92'=j*$KH]ZSj&[S#!gU#*dK9\.

解题思路:得知是凯撒加密之后,尝试进行127次轮转爆破:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
lstr = """U8Y]:8KdJHTXRI>XU#?!K_ecJH]kJG*bRH7YJH7YSH]*=93dVZ3^S8*$:8"&:9U]RH;g=8Y!U92'=j*$KH]ZSj&[S#!gU#*dK9\."""
  
for  in  range ( 127 ):  
     str1  =  ''  
     for  in  lstr:  
         temp  =  chr (( ord (i) + p) % 127 )  
         if  32 < ord (temp)< 127  :  
             str1  =  str1  +  temp   
             feel  =  1
          else :  
              feel  =  0
              break
      if  feel  = =  1 :  
          print (str1)

原文链接:http://blog.youkuaiyun.com/shinukami/article/details/46369765

0x05 Unicode


密文样例:\u5927\u5bb6\u597d\uff0c\u6211\u662f\u0040\u65e0\u6240\u4e0d\u80fd\u7684\u9b42\u5927\u4eba\uff01\u8bdd\u8bf4\u5fae\u535a\u7c89\u4e1d\u8fc7\

在线解密:tool.chinaz.com/Tools/Unicode.aspx

0x06 brainfuck


类型:

++++++++++[>+++++++>++++++++++>+++>+<<<<-]
>++.>+.+++++++..+++.>++.<<+++++++++++++++.
>.+++.------.--------.>+.>.

利用BFVM.exe直接解密

用法 loadtxt 1.txt

在线解密:http://www.splitbrain.org/services/ook

0x07 摩斯密码


密文样例:--  ---  .-.  ...  .

0x08 jsfuck


密文中 ()[]{}!+

在线解密:

0x09 培根密码


培根所用的密码是一种本质上用二进制数设计的。不过,他没有用通常的0和1来表示,而是采用a和b。

百科:http://baike.baidu.com/link?url=acaeI3babB7MogPQFh98rDAVSwHfPwh-HnEFTb9cx7DZ5Nz4MkMA14H4SDjBNnOdBsJpliNYa1vnfikQGqvA7K

0x0A 猪圈密码又称共济会密码


百度百科:http://baike.baidu.com/link?url=yN39kWG2pGd9XHo3RjeUAbd7xs0QlnJ2uHzCJfxC03V-fJcQUdfcJ-WuGoAkKGFVE0AxFK4-98wa4FtzvxRA0_

0x0B CRC32


密文样例:4D1FAE0B

1
2
3
4
5
6
7
import  zlib
def  crc32(st):
     crc  =  zlib.crc32(st)
     if  crc > 0:
       return  "%x" % (crc)
     else :
       return  "%x" % (~crc ^ 0xffffffff)

原文链接:http://blog.youkuaiyun.com/ab748998806/article/details/46382017

对于其他一些未知密文,可尝试到下列几个网站转换试试,看看运气

转载于:https://www.cnblogs.com/lly-lly/p/5390869.html

### CTF竞赛中的简单加密技术 在CTF(Capture The Flag)竞赛中,简单的加密技术是参赛者必须掌握的重要技能之一。这类技术通常涉及基础的编码和解码方法,旨在帮助参与者理解和解决初级级别的挑战。 #### 基础概念 密码学作为信息安全领域的核心部分,提供了多种用于数据保护的方法和技术[^1]。对于初学者来说,了解一些基本的概念是非常有帮助的: - **凯撒密码**:这是一种最古老的替换型加密方式,通过将字母表中的字符按照固定偏移量进行位移来实现加解密过程。 - **维吉尼亚密码**:相比凯撒密码更加复杂一点,它采用了一串关键词来进行多层替换操作,增加了破译难度。 - **Base64 编码**:虽然严格意义上不属于真正的加密手段,但在很多情况下会被用来隐藏信息或者作为其他更高级别加密方案的一部分前置处理步骤。 #### 实际案例解析 考虑一段C语言编写的简易解密程序示例,该例子展示了如何逆向执行某种特定模式下的字符变换以恢复原始消息[^3]: ```c #include<stdio.h> #include<string.h> int main(){ int i; char a[100]; printf("请输入被雷劈过的字符串:\n"); scanf("%s",a); printf("解密:\n"); for(i=0;i<strlen(a);i++){ a[i]=a[i]-(i+1); printf("%c",a[i]); } } ``` 此代码片段接受用户输入的一组经过特殊转换后的文本,并逐个调整每个字符的位置从而还原成可读形式的内容。 #### RSA 加密简介 当涉及到更为复杂的公钥基础设施(PKI),则不得不提到著名的非对称加密算法——RSA。其工作原理基于大整数因子分解难题,确保了即使公开一部分信息也不会影响到另一方持有的私钥的安全性[^2]。 例如给定一个非常大的数值 `c` ,可以表示如下: ```python c = 24722305403887382073567316467649080662631552905960229399079107995602154418176056335800638887527614164073530437657085079676157350205351945222989351316076486573599576041978339872265925062764318536089007310270278526159678937431903862892400747915525118983959970607934142974736675784325993445942031372107342103852 ``` 尽管这里展示的是一个具体的实例,但实际应用过程中还需要注意更多细节如密钥长度的选择等因素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值