目录
密码学的发展
第一个阶段是从古代到19世纪末------古典密码
第二个阶段是从20世纪初到1949年------近代密码
第三个阶段是从C.E.Shannon(香农)于1949年发表的划时代论文“The Communication Theory of secrert Systems”开始------现代密码
第四个阶段是从1976年W.Diffie和M.Hellman创造性的发表了论文“New Direction in Crytography”开始------公钥密码
密码编码学
- 密码编码学是密码学的一个分支,研究于信息安全(例如:机密性、完整性、可鉴别型)有关的数学技术
- 密码编码学是包含数据变换的原理、工具和方法的一门学科。这种变换的目的是为了隐藏数据的信息内容,组织对数据的篡改以及防止未经认可使用数据。
- 密码编码学是论述使明文变得不可懂的密文,以及把已加密的消息变换成可懂形式的艺术和技巧。
对称加密和非对称加密
对称密码算法:加密密钥和解密密钥相同,或实质上等同,即从一个易于推出另一个。又称为传统密码算法,秘密密钥算法或单密钥算法。(DES、3DES、IDEA、AES)
非对称密码算法:加密密钥和解密密钥不同,从一个很难推出另一个,又叫做公钥密码算法。其中的加密密钥可以公开称之为公开密钥,简称公钥。解密密钥必须保密,称为私人密钥,简称私钥。(RSA、ECC、ELGamal)
摘要算法
数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于其不可逆性,有时候会被用作敏感信息的加密,数据摘要算法也被称之为哈希算法、散列算法,常见的摘要算法有MD5和SHA。
SHA中SHA1的应用比较广泛,主要应用于CA和数字证书中,另外在互联网中流行的BT软件中,也是使用SHA1来进行文件校验的,由于SHA系列算法的数据摘要长度较长,因此其运算速度于MD5相比来说,比较慢。
ASCII编码
ASCII码使用指定的7位或者8位二进制数来表示128或者256中可能的字符。标准ASCII码也称之为基础ASCII,使用7位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母、数字0-9、标点符号以及在美式英语中使用的特殊控制字符。
ASCII码在线转换地址:ip地址查询 ip查询 查ip 公网ip地址归属地查询 网站ip查询 同ip网站查询 iP反查域名 iP查域名 同ip域名https://www.ip138.com/ascii/
这个网站比较全面,适用于我们在CTF中遇到的各种编码查询:CTF在线工具-CTF工具|CTF编码|CTF密码学|CTF加解密|程序员工具|在线编解码CTFcode为CTF比赛人员、程序员提供20多种常用编码,如base家族编码、莫尔斯电码,20多种古典密码学,如仿射密码、栅栏密码、培根密码等,以及10多种杂项工具,如XXencode、UUencode、核心价值观编码等。http://www.hiencode.com/
base64编码
base64顾名思义就是用64个可显示字符表示所有的ASC字符,64也就是6Bits,而ASC字符一共有256个,也就是8Bits,Base64编码要求把3个8位字节(3*8=24)转换为4个6位的字符(4*6=24),之后再6位的前面补上两个0,形成8位一个字节的形式,如果剩下的字符不足3个字符,则用0来填充,输出字符使用‘=’,因此编码后输出的文本末尾可能会出现1或2个‘=’。
URL编码
URL编码就是一个字符ascii码的十六进制。不过稍微的有些变动,需要在前面加上“%”,比如“\”,他的ascii码是92,92的十六进制是5c,所以“\”的url编码就是%5c。
特点:密文中有多个%符。
URL编码在线转换:
URL在线编码转换工具http://tools.jb51.net/static/encodetxt/urlencode_decode/index.html
Unicode编码
Unicode编码扩展自ASCII字元集,在严格的ASCII中,每个子元用7位元表示,或者电脑上普遍使用的每字元有8位元宽;而Unicode编码使用全16位字元集。这使得Unicode编码能够表示世界上所有的书写语言中可能用的电脑通信的字元、象形文字和其他符号。
特点:密文中有多个\uxxxx;Unicode编码在线转换:
在线Unicode编码转换-Unicode和ASCII在线互转-中文转Unicode工具http://www.jsons.cn/unicode
JS混淆
有些时候开发者为了保护劳动成果可以通过对Javascript的变量名称和过程名称进行编码,从而起到混淆JS代码的作用,通常使用eval函数进行混淆处理,该函数可以计算字符串,并执行其中的js代码。
特点:通常在JS脚本中使用eval函数和function函数进行混淆。