MISC:常见编码

一、字符编码

1.ASCII码

使用指定7位或8位二进制数组合表示128-256种可能。

常⻅考点:解题过程中给出十进制或十六进制的连续数值。

进制转换工具: ASCII text,Hex,Binary,Decimal,Base64 converter (rapidtables.com)

2.Base编码

        ASCII编码以8个比特为一组,而base64以6个比特为一组,通过索引进行加密,其中末尾可能带有=号,=号是来垫字的,一个等号相当于00 ,表示补了00,所以base64编码永远是4的倍数。以下是base64编码表。

        base16是0-9和字母A-F,base32是A-Z和2-7。只有base16不会补全。

 

工具:CTF在线工具-在线base编码|在线base解码|base16编码|base32编码|base64编码 (hiencode.com) 

 3.URL编码

        URL编码(URL Encoding):也称作百分号编码(Percent Encoding),是统一资源定位符URL的编码机制。

        编码的原理可以表述为:将需要转码的字符,每个字节按16进制表示,并添加%组成的一个编码。特点:字符串中出现了%。例如,汉字你好转换成16进制:E4 BD A0 E5 A5 BD添加%形成URL编码:%E4%BD%A0%E5%A5%BD。

工具:CTF在线工具-在线URL编码|URL解码 (hiencode.com) 

4.Unicode编码

         Unicode是一种字符编码标准,它为世界上几乎所有的字符都分配了一个唯一的数字编码,以便在计算机系统中进行处理和表示。其目标是提供一种统一的方式来表示和交换文字数据,无论是哪种语言、哪种书写系统或者是哪种计算机平台。为了在计算机中存储和传输Unicode字符,需要使用不同的编码方案来表示码点。

        常⻅的编码方案包括 UTF-8、UTF-16和UTF-32。

        UTF-16: 前缀:\u  特点:4个字符成对出现。

        UTF-32: 前缀:\U  特点:8个字符成对出现。

        Unicode: 前缀:&#  特点:5个字符成对出现。

        Hex: 前缀:&#x  特点:4个字符成对出现。

其中以&#为前缀的编码,可以通过保存为html文件进行解码。

使用工具:

Unicode在线加解密——开发者在线工具,工具猫 (toolscat.com)

5.JavaScript编码

        有些时候开发者为了保护劳动成果可以通过对JavaScript的变量名称和过程名称进行编码,从而起到保护JS代码的作用,通常使用eval函数进行加密处理,该函数可以计算字符串,并执行其中的JS代码。

例如:

eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('0',62,1,'hhhhhh'.split('|'),0,{}))

也可以找到固定的位置 倒数第二行的‘hhhhhh'为解码后的数据。

工具:js在线加密解密(eval方法)工具 - 密码工具箱 - 脚本之家在线工具 (jb51.net)

 6.JsFuck编码

        JsFuck是一种基于JavaScript的编码技术,它可以将任意JavaScript代码转换成一系列只包含六个字符的表达式,这六个字符分别是[]()!+。

        JsFuck的设计目的是演示JavaScript语言的强大表达能力,同时也可以用作一种编码方式来绕过一些简单的代码过滤器或检测机制。JsFuck可以通过加密/解密网站来进行破解,同时也可以将密文放在浏览器的Console中进行解密。

        特点:由[]()!+字符组成。

工具:JSFuck - Write any JavaScript with 6 Characters: []()!+ ,也可用浏览器的Console来处理。

7.Jother编码

        与JSFuck差不多,区别是只用!+()[]{}这些字符就能完成对任意字符串的编码,比JSFuck多两个字符{}。

解密方式:

        浏览器F12,点开控制台,把码粘贴进去 回车运行。有可能会触发安全认证。

解码结果: 

8. aaencode编码

        aaencode是一种基于JavaScript的编码技术,它可以将任意JavaScript代码转换成一段看似无害的字符串形式,以达到隐藏和保护代码的目的。

        aaencode的特点是生成的编码字符串仍然是有效的JavaScript代码,可以在浏览器中解码执行,从而还原出原始的JavaScript代码。

        特点:出现大量的颜文字

 工具:aaencode - Encode any JavaScript program to Japanese style emoticons (^_^) (utf-8.jp)

9.brainfuck编码 

        由8个字符<>.,[]-+组成,是一种极小化的计算机语言。

 

工具:CTF在线工具-在线Brainfuck加密|在线Brainfuck解密|Brainfuck|Brainfuck原理|Brainfuck算法 (hiencode.com)

二、现代密码

1.MD5

        MD5(Message Digest Algorithm 5)是一种广泛使用的哈希函数,用于将任意⻓度的数据转换为固定⻓度的哈希值,通常是128位(16字节)。

       MD5算法的工作原理如下:

                1.将输入数据分割成固定大小的块。

                2.对每个块进行一系列的位运算和逻辑函数操作。

                3.将最终的计算结果合并,生成最终的128位哈希值。

        然而,由于MD5的漏洞和弱点被逐渐发现,它已经不再被视为安全的哈希函数。主要的安全问题是它容易受到碰撞攻击,即找到两个不同的输入,但它们产生相同的MD5哈希值。这意味着攻击者可以通过修改输入数据,而不更改哈希值的情况下欺骗验证系统(即产生两个明文,来欺骗系统)。因此,在需要安全性的应用中,不建议使用MD5作为密码存储或数据完整性验证的方式。相反,推荐使用更强大和安全的哈希函数,如SHA-256(Secure Hash Algorithm 256位)。

        MD5值分为16位和32位:

                16位MD5值:将128位的MD5哈希值截取其中的一部分,通常是从第9位到第24位(包括第9位和第24位),共计16位。这个截断过程仅仅是为了缩短表示⻓度,并不影响哈希函数的计算过程。

                32位MD5值:将128位的MD5哈希值表示为32位的十六进制字符串,每个十六进制字符对应4位二进制位。这种表示方式是最常⻅的,常用于校验文件完整性、密码校验等应用。

        特点:32位和16位字符串

        例:e10adc3949ba59abbe56e057f20f883e

工具:MD5免费在线解密破解_MD5在线加密-SOMD5 

2.SHA

        SHA跟MD5的原理是一样的,是MD5的升级版,常⻅的⻓度有SHA-1、SHA-256、SHA-384和SHA-512等。

        例:ef797c8118f02dfb649607dd5d3f8c7623048c9c063d532cc95c5ed7a898a64f

工具: MD5免费在线解密破解_MD5在线加密-SOMD5

3.AES加密

实例:

 有时候带有密钥,后缀有==号等。

 工具:在线AES加密 | AES解密 - 在线工具 (sojson.com) 

4.希尔加密

        矩阵替换密码,将明文和密钥都变成对应数字,然后对应转换为矩阵,进行矩阵乘法加密。 特点:有密钥

工具:希尔密码加密/解密 - 一个工具箱 - 好用的在线工具都在这里! (atoolbox.net)

 5.Rabbit加密

        Rabbit加密技术,又称作兔子加密,是一种基于对称密钥的加密算法。 特征为开头带有(U2FsdGVkX1).

 工具:Rabbit加密-Rabbit解密-在线Rabbit加密解密工具 (jsons.cn)

6.新佛曰论禅加密 

        特点:开头有新佛曰三个字。

 工具:新约佛论禅/佛曰加密 - PcMoe!

7.云影加密 

特征:只有01248这五个字符,其中0是用来作为间隔符号的,把每个字符看成十进制数相加再与对应的字母表联系即可得到解密后的明文。例如:84=12,即:L。

字串:884080810882108108821042084010421 

明文:THISISFLAG

 转换脚本:

t=input("输入要转换的字符串:")
t=t.split('0')
out=''
for s in t:
    sum=0
    for i in s:
        sum+=int(i)
    out+=(chr(ord('A')+sum-1))
print("解密为:"+out)

 8.培根密码

特征:由AB构成的字串。

工具:CTF在线工具-在线培根密码加密|在线培根密码解密|培根密码算法|Baconian Cipher (hiencode.com) 

  • 12
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值