------ 密码学的首要目的是隐藏信息的涵义,而并不是隐藏信息的存在,这是密码学与隐写术的一个重要区别。
------ 密码学的发展大概经历了三个阶段:
前三者称为信息安全的CIA三要素
------ 摩斯密码(Morse code)是一种用于传输信息的编码系统,通过使用短脉冲(点)和长脉冲(划)的组合来表示字母、数字和标点符号。摩斯密码最初被用于电报通信,但至今仍在某些情况下使用,如无线电通信、求救信号等。
------ 摩斯密码使用了两个基本的信号单位:点(·)和划(—)。通过这两个单位的组合,可以表达不同的字母、数字和标点符号。
这题目就只有1和0,这时候就可以把0比作点(·),把1比作划(—)
------ 栅栏密码(Rail-fence Cipher)就是把要加密的明文分成N个一组,然后把每组的第1个字符组合,每组第2个字符组合…每组的第N(最后一个分组可能不足N个)个字符组合,最后把他们全部连接起来就是密文
方式一:
------ 两两分组(栅栏数分组),每一组的第1位提出来拼接成第1部分,第2位提出来拼接成第2部分,然后第1部分和第2部分合起来。
方法二:(把方法一的解密方式作为加密方法)
------ 10个字符分成两组,然后互相穿插。
密文:hrelldlioswmoe
解出的明文:helloworldisme
解密方法如下:
------ 是一种移位密码,将明文中的 每个字母 都按照其在字母表中的顺序向后(或向前)移动固定数目(循环移动)作为密文。凯撒密码只能加密英文。
密文: iodj{ehoor zrua} 位移三位
明文:flag{hello word}
------ 列移位密码(Columnar Transposition Cipher)是一种比较简单,易于实现的换位密码,通过一个简单的规则将明文打乱混合成密文
------ 与凯撒密码类似,区别在于移位密码不仅会处理字母,还会处理数字和特殊字符,常用 ASCII 码表进行移位。其破解方法也是遍历所有的可能性来得到可能的结果。
------ 将每个明文字母替换为与之唯一对应且不同的字母。它与恺撒密码之间的区别是其密码字母表的字母不是简单的移位,而是完全是混乱的,这也使得其破解难度要高于凯撒密码。此种加密方式密钥个数为26!,几乎不可能爆破。
------ 字母倒序
密文:gsv jfrxp yildm ulc qfnkh levi gsv ozab wlt
明文:the quick brown fox jumps over the lazy dog
------ 使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式
------ 培根密码是一种简单的替换密码,密文字符只有两个(a和b),每个明文字符都会被替换为一个由a和b组成的长度为5的字符串。
------ base64、base32、base16可以分别编码转化8位字节为6位、5位、4位。16,32,64分别表示用多少个字符来编码。
------ Base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据。包括MIME的email,email via MIME,在XML中存储复杂数据。
------ Base64编码要求把3个8位字节转化为4个6位的字节,之后在6位的前面补两个0,形成8位一个字节的形式,6位2进制能表示的最大数是2的6次方是64,这也是为什么是64个字符(=号不属于编码字符,而是填充字符)。
明文 ——> ASCII编码 ——> 每个编码转化为8位二进制 ——> 再把二进制每6位来进行分组 ——> 前面补0把6位二进制补充成8位,方便计算机存储 ——> 把二进制转换位数字 ——> 按照Base64编码表转换成对应的字符
------ 先将明文参照ASCII码对照表,找到每个字符对应的ASCII码,之后转换为8位的二进制,最后将转换好的二进制按照6位分组,不够的补0,最后转换好的6位的二进制的位数一定要确保是6和8的倍数(位数一定要加上补上的0),如果不够6和8的位数,用“=”占位,一个“=”占6位,之后转换为十进制,最后的十进制的结果对照base64编码表进行转换。
举例:
对youi进行Base64编码
1)ASCII编码
y:121
o:111
u:117
i:105
2)每个编码转化为8位二进制
bin(121)=01111001
bin(111)= 01101111
bin(117)= 01111010
bin(105)= 01101001
01111001 01101111 01111010 01101001
3)二进制每6位来进行分组
011110
010110
111101
111010
011010
010000
=
=
最后一组只有01两位,不够6位,就需要在后面补0,补足6位,变成010000。
并且这里就一共只有36位,只能整除6,不能整除8,
这时候就需要后面补等于号“=”(一个等于号“=”占6位),
这里需要补2个等于号“=”
4)前面补0把6位二进制补充成8位
00 011110
00 010110
00 111101
00 111010
00 011010
00 010000
=
=
5)把二进制转换位数字
00 011110 32
00 010110 22
00 111101 61
00 111010 53
00 011010 26
00 010000 16
=
=
6)按照Base64编码表转换成对应的字符
00 011110 32 e
00 010110 22 W
00 111101 61 9
00 111010 53 1
00 011010 26 a
00 010000 16 Q
=
=
这样得到最后的加密密文是eW91aQ==
------ 同样道理Base32、Base16加密方法也类似,不同在与Base32是拆成5位,同时总位数得同时是8和5的倍数;Base16是拆成4位,同时总位数得同时是8和4的倍数。
ASCII编码,特征是以\x
开头
编码后:
#!shell
\x54\x68\x65\x7f\x71\x75\x69\x63\x6b\x7f\x62\x72\x6f\x77\x6e\x7f\x66\x6f\x78\x7f\x6a\x75\x6d\x70\x73\x7f\x6f\x76\x65\x72\x7f\x74\x68\x65\x7f\x6c\x61\x7a\x79\x7f\x64\x6f\x67
------ 多用途互联网邮件扩展(MIME) 一种实现方式,特征是以=开头
------ url编码又叫百分号编码,是统一资源定位(URL)编码方式。URL地址(常说网址)规定了常用地数字,字母可以直接使用,另外一批作为特殊用户字符也可以直接用(/,:@等),剩下的其它所有字符必须通过%xx编码处理。 现在已经成为一种规范了,基本所有程序语言都有这种编码。特征是%开头
。
------ Unicode是国际组织制定的,可以容纳世界上所有文字、符号的字符集
特点:Rabbit加密开头部分通常为U2FsdGVkX1。
------ 密文特征与Base64类似,明显区别是秘文里+比较多,并且经常有/
明文I Love You
无密匙加密后密文为:U2FsdGVkX1/ouFei55jKdzY1fWNS4jxHVNf/AfKWjnBrOGY=
明文I Love You 521
无密匙加密后密文为:U2FsdGVkX19DvuEo5PvBA8TuLrM2t+EZBvUkzlAa
明文I Love You 521
密匙为666加密后密文为:U2FsdGVkX18w6vxXxux/ivRVwo3xMzTxmUyk7cHz
------ 1976年以前,所有的加密方法都使用对称加密算法:加密和解密使用同一套规则。例如:甲使用密钥 A 加密,将密文传递给乙,乙仍使用密钥 A 解密。如果密钥 A 在甲传递给乙的过程中泄露,或者根据已知的几次密文和明文推导出密钥 A,则甲乙之间的通讯将毫无秘密。
------ 对称密码是一种常见的加密算法,具有以下特点:
------ DES:Data Encryption Standard,DES是一种对称加密算法,使用56位密钥对数据进行加密。由于密钥长度较短,已经被认为不够安全,逐渐被更强大的算法所替代。
------ 64比特明文通过56比特密钥加密成64比特,每7位一个检验比特,所以7位加上1个校验位就构成8位。
------ 每一个64比特称为一个分组。
------ 长度增长以后,如何迭代(反复)的方式称为模式。
------ 3DES(Triple Data Encryption Standard):3DES是对DES的加强版本,使用两次或三次的DES算法来加密数据。它可以提供更高的安全级别,但速度较慢。
------ AES(Advanced Encryption Standard)是当前最常用的对称加密算法之一,用于替代DES。它支持128位、192位和256位密钥,并提供较高的安全性和较快的加密速度。
------ RC4(Rivest Cipher 4)是一种流密码算法,它将密钥和明文数据一次性地进行异或操作来生成密文。虽然在过去广泛使用,但由于存在安全性漏洞,已不再推荐使用
------ 甲使用公钥 A 加密,将密文传递给乙,乙使用私钥 B 解密得到明文。其中公钥在网络上传递,私钥只有乙自己拥有,不在网络上传递,这样即使知道了公钥 A 也无法解密。反过来通讯也一样。只要私钥不泄漏,通信就是安全的,这就是非对称加密算法。
------ 非对称密码具有以下特点:
------ RSA算法由两个密钥,即公钥和私钥
组成
------ 如果没有 RSA 算法,现在的网络世界毫无安全可言,也不可能有现在的网上交易。众所周知的 ssh 协议也是基于 RSA 加密算法才能确保通讯是加密的。
加密:
密文 = 明文 ^ E mod N
公钥(N,E)
解密:
明文 = 密文^ D mod N
私钥(N,D)
假设:公钥(N, E)=(231,17)、私钥(N, D)=(231,113),明文123。
密文= 123^17 mod 231 =51
明文= 51^113 mod 231 =123
随机找两个质数 P 和 Q ——> 算出N的值(N = P * Q),并转化为二进制 ——> 计算 N 的欧拉函数 φ(N) ——> 选取公钥E ——> 算私钥D
1)随机找两个质数 P 和 Q
取P = 67 ,Q = 71
2)算出N的值并转化为二进制
乘积 N = P * Q = 4757 ,转化为二进为 1001010010101
这里为 13 位,实际使用中的算法是往往是 1024 位 或 2048 位,
位数越长,算法越难被破解。取的P 与 Q 越大,越安全。
3)计算 N 的欧拉函数 φ(N)
φ(N) = φ(P * Q)= φ(P - 1)φ(Q - 1) = (P - 1)(Q - 1) =66 * 70 = 4620
4)选取公钥E
1 < E <φ(N),E能不是φ(N)的因子数(随机取),
这里1 < E <4620,我们选E =101
5)算私钥D
(D x E)mod φ(N) = 1,也就是(D x E)/ φ(N) = y …… 1
这里就是:(D x 101)mod 4620= 1,选取D=1601
------ DH (Diffie-Hellman)是一种密钥交换协议,用于双方在不共享密钥的情况下协商出一个共享密钥。它是一种基于离散对数问题的加密算法。
------ ECC(Elliptic Curve Cryptography)利用椭圆曲线上的离散对数问题,提供与其他非对称密码算法相当的安全性,但使用更短的密钥长度。由于其高效性和强大的安全性,ECC被广泛应用于移动设备和物联网领域。
------ DSA(Digital Signature Algorithm)是一种用于生成和验证数字签名的非对称密码算法。它基于离散对数问题,并通常与SHA系列哈希函数结合使用。
------ ElGamal是一种基于离散对数问题的非对称密码算法,包括加密和签名方案。它具有相对较慢的加密速度,但在某些特定的应用中被广泛使用。
------ MD5(Message Digest Algorithm 5)中文名为消息摘要算法第五版,是计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。
------ MD5作为一种常用的摘要算法(或指纹算法),其具有以下几个重要的特点:
因此,MD5 不再被认为是安全的哈希算法,不适合用于加密或保护通信。
------ SHA-1(Secure Hash Algorithm 1)生成160位(20字节)摘要,也常用于文件完整性校验。然而,由于易受到碰撞攻击,SHA-1已逐渐被淘汰。
------ SHA-256(Secure Hash Algorithm 256-bit)属于SHA-2系列的一种,生成256位(32字节)摘要。SHA-256及其衍生算法(如SHA-384、SHA-512等)应用广泛,是目前信息安全领域中常用的摘要算法之一。
------ SHA-3称为Keccak算法,也是一种哈希函数系列。与SHA-2相比,SHA-3具有不同的结构和算法,提供更好的安全性和性能。
------ RIPEMD(RACE Integrity Primitives Evaluation Message Digest)是欧洲CRYPTREC项目的候选摘要标准之一。RIPEMD-160广泛应用于比特币和其他加密货币领域。
www.hiencode.com