Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
aes密码算法原理_aes加密激活成功教程难度,希望能够帮助你!!!。
密码学的基本概念:
保密性:信息仅被合法用户访问(浏览、阅读、打印等),不被泄露给非授权的用户、实体或过程。
完整性:资源只有授权方或已授权的方式进行修改,所有资源没有授权则不能修改。保证数据完整性,就是保证数据不能被偶然或者蓄意的编辑。
可用性:资源只有在适当的时候被授权方访问,并按需求使用。
古典密码以及破译方法:
如果密码分析者可以仅由密文推出明文或密钥,或者可以由明文和密文推出密钥,那么就称该密码系统是可破译的。
攻击方法 | 说明 |
---|---|
穷举攻击 | 对截获到的密文尝试 遍历所有可能的密钥,直到获得正确的明文;或使用固定的密钥对所有可能的明文加密一直到得到与截获到的密文一致为止 |
统计分析攻击 | 利用已经获取的明文和密文已知统计规律进行破译的方法 |
数学分析攻击 | 密码分析者针对加解密算法的数学基础和密码学特性,通过数学求解的方法来破译密码。 |
密码分析者的攻击密码类型
攻击密码的类型 | 攻击者拥有的资源说明 |
---|---|
仅知密文攻击 | 密码分析者仅能通过截获的密文激活成功教程密码 。 |
已知明文攻击 | 密码分析者已知明文-密文对,来激活成功教程密码。 |
选择明文攻击 | 密码分析者不仅可得到一些“明文-密文对”,还可以选择被加密的明文,并获得相应的密文。 |
选择密文攻击 | 密码分析者可以选择一些密文,并得到相应的明文。 |
**古典密码–置换密码:**明文的字母不变,但位置被打乱了。
如:把明文按行写入,最后按列读出密文,结果如下:
|
密钥 | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|
明文 | b | a | n | a | n | a |
o | r | a | n | g | e |
此时,经过密码置换加密后,密文为boarnaanngae
在实际场景中,通常会遇到:
给定明文为:
tba simpodst yossibje trqnspbsition cipderk,
置换矩阵为:
Ek = 0 1 2 3 4 1 4 3 0 2
这个置换矩阵说明了,将明文分成长为L=5的段,m1=tbasi, m2=mpods, m3=tyoss,m4=ibjet,m5=rqnsp,m6=bsiti,m7=oncip,m8=derkz。
最后一段长不足5,加添一个字母z或者其他特殊符号,再将隔断的字母序号按Ek置换矩阵进行换位得到:
bista psdmo yssto bteij qpsrn sitbi npioc ezkdr
代替密码
代替密码是指先建立一个替换表(代替密码的密钥),加密时通过查表,将明文的每个字母依次替换为对应的字符,生成密文。
代替密码使用替换表的个数可以将代替密码分为:
假设明文字母表A={
a0、a~1、...、an-1}和密文字母表B={
b0、b1、...、bn-1}, A到B的一一映射f:A->B, f(ai)=bi。 明文M = (m0、m1、...、mn-1),则密文C=(f(m0)、f(m1)、...、f (mn-1)).f函数或者密文字母表B称为密钥
常见的单表代替密码如下:
**加法密码:**常见的加法密码是Caesar(凯撒)密码,就是把明文字母表循环右移3位后得到的字母表。
**乘法密码:**需要预先知道消息元素的个数,加密的过程其实是相当于对明文消息所组成的数组下标进行加密,然后用明文消息中加密后位置所对应的明文字符代替。
乘法密码的映射函数为:f(ai) = bi = aj, j=ik mod n,其中k和n是互素的。
**仿射密码:**加法密码和乘法密码的结合。放射密码的映射函数为:f(ai)=bi=aj, j=(ak1+k0)mod n,其中k1和n是互素的。
2. 多名码代替密码:单个字符明文可以映射成密文的多个字符之一。例如X可对应1、15或16,Y可对应9、51或82等。
3. 多字母代替密码: 字符块被成组加密。例如,XYX对应ARP,CDD对应GOI等。
4. 多表代替密码:使用从明文字母到密文字母的多个映射,每个映射是像简单代替密码中的一对一映射。由于多表代替密码采用了多个密文字母表,就比单表代替密码安全强度要高许多。
Vigenere密码是法国外交官维吉尼亚设计的,是一种常用的多表代替密码。
代数密码利用代数相关理论和方法进行加密。vernam密码是常见的代数密码,该方法使用代数运算中的模二运算(异或)。
其规则:1⊕0 = 1, 0⊕1=1, 0⊕0 = 0, 1⊕1=0
Vernam密码的密钥和明文具有相同的长度,密钥只能使用一次,因此又叫”一次一密“。加密时,对密钥和明文进行异或操作,得到密文;解密时用同样的密钥和密文进行异或操作,得到明文。
古典密码的激活成功教程方法
除了之前提到的穷举分析和统计分析,还有量子算法。
实用的破译量子计算的算法有:Shor算法和Grover算法。
两种算法均可以对RSA、EIGamal、ECC密码及DH密钥协商协议进行有效的攻击。不过由于量子计算机尚未成熟,因此量子算法暂时对现有的密码体系不构成威胁。
分组密码
分组密码又称为秘密钥密码或对称密码。使用分组密码对明文加密时,首先对明文分组,每组长度相同,然后对每组明文分别加密得到等长的密文。再分组密码中,明文被分割多个块,加密后的密文也是多个块。分组密码大致结构如图所示:
DES算法
DES分组长度为64比特
,使用56比特
密钥对64比特
的明文串进行16轮加密,得到64bit
的密文串。其中,使用密钥为64比特,实际使用56 比特
,另8比特
用作奇偶校验。DES使用了对合运算,即,加密和解密共用同一算法,则设计总工作量减半。
初始置换IP与逆初始置换
1. 初始置换IP作用是:将64位明文打乱重新排列。如,初始置换IP就是将原名来64位明文数据的第58位换到第1位,原来的50位换到第2位,…,依次类推。
2.初始置换结果分为两组: 左L0(32位)、右R0(32位)
逆初始置换
1. 把64位中间密文打乱重排。初始置换IP与逆初始置换是互逆的。如,在IP中把输入的第2位置换到第8位,而在逆初始置换中,把输入的第8位置换到第2位。
2. 形成最终的64位密文。
子密钥产生
64位密钥经过置换选择1、循环左移、置换选择2,产生16个长48位的子密钥。子密钥产生流程如图:
第一步:置换选择1
置换选择1作用有:去掉密钥中位置位8的整数倍的奇偶校验位,共8个。例如,种子密钥 “0 0 0 0 0 0 0 0”.去掉奇偶校验位后,成为“0 0 0 0 0 0 0 0”。
打乱密钥重拍,根据下图置换表,生成左28位,右28位。
第二步:循环左移
循环移位就是将二进制串首位相连,再进行按位移动。DES每一轮迭代对应子密钥循环左移的位数,如下表所示:
加密函数f
DES算法中,加密函数f是其核心算法,该函数由选择运算E、异或运算、代替函数组S(S盒变换)、置换运算P。
第三步:置换选择2
置换选择2是一个压缩置换,将56位的输入压缩为48位,作为第i轮的子密钥。
**S盒变换** S盒变换是一种压缩替换,通过S盒将48位输入变为32位输出。共有8个S盒子,并行作用。每个S盒有6个输入,4个输出,是非线性压缩变换。
如:当S1盒输入为“”时,则第1位与第6位组成二进制串“10”(十进制2),中间四位组成二进制“1100”(十进制12),查询S1盒的2行12列,得到数字3,得到输出二进制数是0011.这里特别要注意的是,起始的行号和列号都是从0开始的。
DES安全性
(1).如果DES密钥太短经不起穷尽攻击。(2). DES存在弱密钥和半弱密钥。
3DES
3DES有两种加密方式:
1. 第一、三次加密使用同一种密钥,这种方式密钥长度128位(112位有效)
2. 三次加密使用不同密钥,这种方式密钥长度192位(168位有效)
AES算法
AES和DES一样都是应用了轮的思想,将明文经过多轮迭代处理得到密文。二者不同之处是,AES明文分组长度和密钥长度可以灵活组合。AES明文分组长度可以是128位、192位、256位;密钥长度也可以是128位、192位、256位。
一. AES数学基础
有限域:有限域的元素个数必须是一个素数的幂p^n
, n为正整数。元素个数为p^n的有限域一般记为GF(p ^n)
乘法逆元
对于有限域GF(pn),任意的存在w∈GF(p n),w≠0,z∈GF(p n),使得w * z ≡1 mod p,则z为w在该有限域上的乘法逆元。
例如: 67 mod 119的逆元是16.其算法如下:
AES运算特点
AES中的运算包含面向字节(8位)或4字节的字(双字,32位)运算。
面向字节的运算
一个字节可看作有限域GF(中的一个元素,对应于一个系数在GF(2)中的次数小于8的多项式。即将字节b7b6b5b4b3b2b1b0)看成二元域GF(2)上的次数小于8的多项式:
·加法:多项式系数按位模加
如: 57⊕83 = ?
(x6+x4+x2+x+1)⊕(x7+x+1) = x7 +x6+x4+x2
结果位,即D4
(x6+x4+x2+x+1)*(x7+x+1) mod m(x) =
x13+x11+x9+x8+x6+x5+x4+x3+1 mod (x8+x4+x3+x+1) = x7+x6+1
结果位,即C1
AES算法框架
明文State
可以用二维矩阵表示,该数组为4行,Nb 列 ,形为4Nb。数组每个元素为1个字节,即为2个十六进制数。
Nb=数据块长度/32。当数据块长128时,Nb=4;当数据块192时,Nb=6;当数据块256时,Nb=8.
密钥State
密钥State也可以用二维矩阵表示,该数组为4行,Nk列,形为4Nk。数组每个元素为1个字节,即为2个十六进制数。
Nk=数据块长度/32。当数据块长128时,Nk=4;当数据块192时,Nk=6;当数据块256时,Nk=8。
加密轮数
值取决于明文块和密钥块长度,即和的值。具体对应关系如下图所示:
AES算法框架
加密:首先执行"子密钥加“算法;然后进行前9轮加密操作,每轮包含”字节代换“、”行移位“、”列混淆“、”子密钥加“;第10轮加密操作,少了一步“列混淆”。
解密:执行的是逆过程,算法不完全一致。
密钥生成
AES算法中,首先利用种子密钥推导出子密钥,再由子密钥推导出子密钥…,最后由子密钥推导出子密钥。
AES不是对合运算,即,AES解密算法与加密算法不同。AES解密算法是加密算法的逆过程,加密和加密算法原理基本一致。其中不同的是,有几步是求逆过程。
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章