CTF-crypto基础

一、密码学概述

1.1 密码学的发展

  • 第一个阶段是从古代到19世纪末——古典密码(classicalcryptography)
  • 第二个阶段从20世纪初到1949年——近代密码
  • 第三个阶段从C.E.Shannon(香农)于1949年发表的划时代论文“TheCommunicationTheoryof SecretSystems”开始——现代密码
  • 第四个阶段从1976年W.Diffie和M.Hellman创造性地发表了论文“NewDirectionsinCryptography”开始——公钥密码

1.2 密码编码学

  • 密码编码学是密码学的一个分支,研究与信息安全(例如:机密性、完整性、可鉴别性)有关的数学技术。
  • 密码编码学是包含数据变换的原理、工具和方法的一门学科,这种数据变换的目的是为了隐藏数据的信息内容,阻止对数据的篡改以及防止未经认可使用数据。
  • 密码编码学是论述使明文变得不可懂的密文,以及把已加密的消息变换成可懂形式的艺术和技巧。

1.3 对称加密不对称加密

  • 对称密码算法(Symmetriccipher):加密密钥和解密密钥相同,或实质上等同,即从一个易于推出另一个。又称传统密码算法(Conventionalcipher)、秘密密钥算法或单密钥算法。
  • DES、3DES、IDEA、AES
  • 非对称密码算法(Asymmetriccipher):加密密钥和解密密钥不同,从一个很难推出另一个。又叫公钥密码算法(Public-keycipher)。其中的加密密钥可以公开,称为公开密钥(publickey),简称公钥;解密密钥必须保密,称为私人密钥(privatekey),简称私钥。
  • RSA、ECC、ElGamal

1.4 摘要算法

  • 数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密。数据摘要算法也被称为哈希(Hash)算法、散列算法,常见的摘要算法有MD5和SHA
  • 在互联网上进行大文件传输时,都要得用MD5算法产生一个与文件匹配的、存储MD5值的文本文件(后缀名为.md5或.md5sum),这样接收者在接收到文件后,就可以利用与SFV类似的方法来检查文件完整性,绝大多数大型软件公司或开源组织都是以这种方式来校验数据完整性,而且部分操作系统也使用此算法来对用户密码进行加密,另外,它也是目前计算机犯罪中数据取证的最常用算法。
  • SHA中SHA1的应用较为广泛,主要应用于CA和数字证书中,另外在互联网中流行的BT软件中,也是使用SHA1来进行文件校验的,由于SHA系列算法的数据摘要长度较长,因此其运算速度与MD5相比,也相对较慢。

二、常见编码

2.1 ASCII编码

  • ASCII码使用指定的7 位或8 位二进制数组合来表示128或256种可能的字符。标准ASCII码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符。
  • 后128个称为扩展ASCII码。许多基于x86的系统都支持使用扩展(或“高”)ASCII。扩展ASCII码允许将每个字符的第8位用于确定附加的128个特殊符号字符、外来语字母和图形符号。
ASCII在线转换地址:http://www.mokuge.com/tool/asciito16/

2.2 Base64编码

Based64 加解密地址:http://tool.chinaz.com/Tools/Base64.aspx

Base64顾名思义就是用64个可显示字符表示所有的ASC字符,64也就是6Bits,而ASC字符一共有256个,也就是8Bits。Base64编码要求把3个8位字节(38=24)转化为4个6位的字节(46=24),之后在6位的前面补两个0,形成8位一个字节的形式。如果剩下的字符不足3个字节,则用0填充,输出字符使用’=’,因此编码后输出的文本末尾可能会出现1或2个’=’

2.3 URL编码

url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上“%”。比如“\”,它的ascii码是92,92的十六进制是5c,所以“\”的url编码就是%5c。特点:密文中有多个%号符

URL在线解码地:http://tool.oschina.net/encode?type=4

2.4 Unicode编码

Unicode码扩展自ASCII字元集。在严格的ASCII中,每个字元用7位元表示,或者电脑上普遍使用的每字元有8位元宽;而Unicode使用全16位元字元集。这使得Unicode能够表示世界上所有的书写语言中可能用於电脑通讯的字元、象形文字和其他符号。特点:密文中有多个\uxxx

Unicode编码在线转换:http://tool.chinaz.com/Tools/Unicode.aspx

2.5 JS混淆

有些时候开发者为了保护劳动成果可以通过对javascript的变量名称和过程名称进行编码,从而起到混淆js代码的作用,通常使用eval函数进行混淆处理,该函数可以计算字符串,并执行其中的JS代码。如,对<script>alert(‘XSS’);</script>进行16 进制转换,然后使用eval函数进行读取<script>eval(“\x61\x6c\x65\x72\x74\x28\x27\x58\x 53\x53\x27\x29\x3b”);</script>特点:通常在JS脚本里使用eval与function函数进行混淆。

JS 在线解混淆:http://www.atool.org/jscompression.php

2.6 JSfuck

JSFuck是用6个字符[]()!+来编写JavaScript程序,如右图所示,<script>alert(XSS);</script>经过加密后便使用了[]()!+进行编写,点击runthis 可进行解密,或将密文放在浏览器的console控制台上进行解密。

JSFuck在线加解密:http://www.jsfuck.com/

2.7 Jother

Jother是一种运用于javascript语言中利用少量字符构造精简的匿名函数方法对于字符串进行的编码方式。其中8个少量字符包括:!+ ()[]{}。只用这些字符就能完成对任意字符串的编码(可以在浏览器的console控制台上直接解密)

2.8 aaencode

aaencode使用的表情符号对js代码进编码,可以直接在命令行中继续解码,或者在以下的链接网站进行解码加解密地址:http://utf-8.jp/public/aaencode.html

三、常见加密算法

  • 换位加密:栅栏密码、曲路密码、列位移密码
  • 替换加密:凯撒密码、摩斯密码、ROT5/13/18/47、维吉尼亚密码、培根密码、键盘密码
  • 其他密码:MD5、SHA

3.1 换位密码栅栏密码

栅栏密码(Rail-fenceCipher)就是把要加密的明文分成N个一组,然后把每组的第1个字符组合,每组第2 个字符组合…每组的第N(最后一个分组可能不足N个)个字符组合,最后把他们全部连接起来就是密文

栅栏密码在线加解密:http://www.qqxiuzi.cn/bianma/zhalanmima.php

3.2 换位加密曲路密码

曲路密码(CurveCipher)是一种换位密码,需要事先双方约定密钥(也就是曲路路径)。

3.3 换位加密列位移密码

列移位密码(ColumnarTranspositionCipher)是一种比较简单,易于实现的换位密码,通过一个简单的规则将明文打乱混合成密文。

列位移密码在线加解密:http://www.practicalcryptography.com/ciphers/clas sical-era/columnar-transposition/

3.4 替换加密凯撒密码

凯撒密码(CaesarCipher或称恺撒加密、恺撒变换、变换加密、位移加密)是一种替换加密,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。 凯撒密码在线加解密:密码机器页面

3.5 替换加密摩斯密码

摩尔斯电码(MorseCode)是由美国人萨缪尔·摩尔斯在1836年发明的一种时通时断的且通过不同的排列顺序来表达不同英文字母、数字和标点符号的信号代码,摩尔斯电码主要由以下5种它的代码组成:

  1. 点(.)
  2. 划(-)
  3. 每个字符间短的停顿(通常用空格表示停顿)
  4. 每个词之间中等的停顿(通常用/划分)
  5. 以及句子之间长的停顿
  6. 摩斯电码在线解密:密码机器页面

3.6 替换加密-ROT5/13/18/47

  • ROT5:只对数字进行编码,用当前数字往前数的第5个数字替换当前数字,例如当前为0,编码后变成5,当前为1,编码后变成6,以此类推顺序循环。
  • ROT13:只对字母进行编码,用当前字母往前数的第13个字母替换当前字母,例如当前为A,编码后变成N,当前为B,编码后变成O,以此类推顺序循环。
  • ROT18:这是一个异类,本来没有,它是将ROT5和ROT13组合在一起,为了好称呼,将其命名为ROT18。
  • ROT47:对数字、字母、常用符号进行编码,按照它们的ASCII值进行位置替换,用当前字符ASCII值往前数的第47位对应字符替换当前字符,例如当前为小写字母z,编码后变成大写字母K,当前为数字0,编码后变成符号_。用于ROT47编码的字符其ASCII值范围是33-126,具体可参考ASCII编码。
ROT5/13/18/47在线加解密:http://www.qqxiuzi.cn/bianma/ROT5-13-18-47.php

3.7 替换加密维吉尼亚密码

维吉尼亚密码(VigenèreCipher)是在单一恺撒密码的基础上扩展出多表代换密码,根据密钥(当密钥长度小于明文长度时可以循环使用)来决定用哪一行的密表来进行替换,以此来对抗字频统计。维吉尼亚密码在线解密:密码机器页面

3.8 替换加密培根密码

培根密码(BaconianCipher)是一种替换密码,每个明文字母被一个由5字符组成的序列替换,最初的加密方式就是由‘A’和‘B’组成序列替换明文(所以你当然也可以用别的字母),比如字母‘D’替换成“aaabb”,以下是全部的对应关系(另一种对于关系是每个字母都有唯一对应序列,I和J与U/V各自都有不同对应序列)

培根密码在线加解密:http://rumkin.com/tools/cipher/baconian.php

3.9 替换加密键盘密码

(1)QWE加密法:QWE=ABC按照键盘上的字母顺序对应ABC

(2)电脑键盘棋盘加密

(3)电脑键盘坐标加密

(4)手机键盘密码

四、摘要算法

4.1 MD5(哈希算法)

MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。MD5值分为16位和32位,同常MD5的值中最大是F,如,603F52D844017E83CA267751FEE5B61B

MD5在线加解密地址:http://www.cmd5.com/

4.2 SHA(安全哈希算法)

SHA-1是一种数据加密算法,该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。SAH的值通常是40位,最大值是F对强行攻击的安全性:最显著和最重要的区别是SHA-1摘要比MD5摘要长32位。使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对MD5是2^128数量级的操作,而对SHA-1则是2^160数量级的操作。这样,SHA-1对强行攻击有更大的强度。

在线加密解密:http://tool.oschina.net/encrypt?type=2

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇