1. RSA算法的基本含义
RSA公开密钥密码体制。所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。
在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然解密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK。
正是基于这种理论,1978年出现了着名的RSA算法,它通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。这就使加密的计算量很大。为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方式,即信息采用改进的DES或IDEA对话密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。对方收到信息后,用不同的密钥解密并可核对信息摘要。
RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现今的三十多年里,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。
SET(Secure Electronic Transaction)协议中要求CA采用2048bits长的密钥,其他实体使用1024比特的密钥。RSA密钥长度随着保密级别提高,增加很快。下表列出了对同一安全级别所对应的密钥长度。 保密级别 对称密钥长度(bit) RSA密钥长度(bit) ECC密钥长度(bit) 保密年限 80 80 1024 160 2010 112 112 2048 224 2030 128 128 3072 256 2040 192 192 7680 384 2080 256 256 15360 512 2120 这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, Adi Shamir 和 Leonard Adleman。早在1973年,英国国家通信总局的数学家Clifford Cocks就发现了类似的算法。但是他的发现被列为绝密,直到1998年才公诸于世。
RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。
RSA的算法涉及三个参数,n、e1、e2。
其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。
e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质;再选择e2,要求(e2*e1)mod((p-1)*(q-1))=1。
(n,e1),(n,e2)就是密钥对。其中(n,e1)为公钥,(n,e2)为私钥。
RSA加解密的算法完全相同,设A为明文,B为密文,则:A=B^e2 mod n;B=A^e1 mod n;(公钥加密体制中,一般用公钥加密,私钥解密)
e1和e2可以互换使用,即:
A=B^e1 mod n;B=A^e2 mod n;
2. 标准加密算法tdes,aes是什么意思
3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称
高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。
来源中文wiki
3. 加密算法的算法
一个加密系统S可以用数学符号描述如下:
S={P, C, K, E, D}
其中
P——明文空间,表示全体可能出现的明文集合,
C——密文空间,表示全体可能出现的密文集合,
K——密钥空间,密钥是加密算法中的可变参数,
E——加密算法,由一些公式、法则或程序构成,
D——解密算法,它是E的逆。
当给定密钥kÎK时,各符号之间有如下关系:
C = Ek(P), 对明文P加密后得到密文C
P = Dk(C) = Dk(Ek(P)), 对密文C解密后得明文P
如用E-1 表示E的逆,D-1表示D的逆,则有:
Ek = Dk-1且Dk = Ek-1
因此,加密设计主要是确定E,D,K。
RSA是Rivest、Shamir和Adleman提出来的基于数论非对称性(公开钥)加密算法。大整数的素因子难分解是RSA算法的基础。
RSA在国外早已进入实用阶段,已研制出多种高速的RSA的专用芯片。尽管RSA的许多特性并不十分理想,但迫于信息安全的实际需要,许多重要的信息系统还是采用RSA作为基础加密机制。从RSA提出不久,我国有关部门就一直对它进行研究。从应用的角度看,软件实现的RSA已经开始用于计算机网络加密,用来完成密钥分配、数字签名等功能。
除了RSA之外,还有DES(数据加密标准)。尽管DES公开了其加密算法并曾被美国列为“标准”,但很快被废弃。加密技术又回归到“算法保密”的传统上。
4. 简述对称加密算法的基本原理
对称加密是计算机加密领域最古老也是最经典的加密标准。虽然对称加密被认为不再是安全的加密方式,但是直到现在,还看不到它被淘汰的迹象。在很多非网络化的加密环境中,对称加密足以满足人们的需要。
对称加密采用单密钥加密方式,不论是加密还是解密都是用同一个密钥,即“一把钥匙开一把锁”。对称加密的好处在于操作简单、管理方便、速度快。它的缺点在于密钥在网络传输中容易被窃听,每个密钥只能应用一次,对密钥管理造成了困难。对称加密的实现形式和加密算法的公开性使它依赖于密钥的安全性,而不是算法的安全性。
一个对称加密系统由五个部分组成,可以表述为
S={M,C,K,E,D}
各字母的含义如下:
M:明文空间,所有明文的集合。
C:密文空间,全体密文的集合。
K:密钥空间,全体密钥的集合。
E:加密算法。
D:解密算法。
5. linux centos6.2 用户登陆口令使用什么加密机制
使用的应该是md5吧,不过使用salt值的md5算法,$符号前后一共三个字段,第一个字段代表的意思就是加密算法的代号,第二个字段就是salt值,第三个字段就是加密后的字符串!
开机时候你输入密码后,系统会读取第一个字段来判断加密类型,然后读取第二个字段+你输入的密码来进行md5摘要,然后生成一个字符串去和系统中保存的密码去比对!
MD5的ID应该是1,也就是$1$然后后面是salt,salt值的作用就是让同样的密码可以生成不同的字符串,为了防止弱口令的批量泄露!
6. 谁帮我介绍下加密对称算法
A.对称加密技术 a. 描述 对称算法(symmetric algorithm),有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而在大多数的对称算法中,加密密钥和解密密钥是相同的。所以也称这种加密算法为秘密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信性至关重要。 b.特点分析 对称加密的优点在于算法实现后的效率高、速度快。 对称加密的缺点在于密钥的管理过于复杂。如果任何一对发送方和接收方都有他们各自商议的密钥的话,那么很明显,假设有N个用户进行对称加密通信,如果按照上述方法,则他们要产生N(N-1)把密钥,每一个用户要记住或保留N-1把密钥,当N很大时,记住是不可能的,而保留起来又会引起密钥泄漏可能性的增加。常用的对称加密算法有DES,DEA等。 B.非对称加密技术 a.描述 非对称加密(dissymmetrical encryption),有时又叫公开密钥算法(public key algorithm)。这种加密算法是这样设计的:用作加密的密钥不同于用作解密的密钥,而且解密密钥不能根据加密密钥计算出来(至少在合理假定的长时间内)。之所以又叫做公开密钥算法是由于加密密钥可以公开,即陌生人可以得到它并用来加密信息,但只有用相应的解密密钥才能解密信息。在这种加密算法中,加密密钥被叫做公开密钥(public key),而解密密钥被叫做私有密钥(private key)。 b.特点分析 非对称加密的缺点在于算法实现后的效率低、速度慢。 非对称加密的优点在于用户不必记忆大量的提前商定好的密钥,因为发送方和接收方事先根本不必商定密钥,发放方只要可以得到可靠的接收方的公开密钥就可以给他发送信息了,而且即使双方根本互不相识。但为了保证可靠性,非对称加密算法需要一种与之相配合使用的公开密钥管理机制,这种公开密钥管理机制还要解决其他一些公开密钥所带来的问题。常用的非对称加密算法有RSA等。 (3) 关于密码技术 密码技术包括加密技术和密码分析技术,也即加密和解密技术两个方面。在一个新的加密算法的研发需要有相应的数学理论证明,证明这个算法的安全性有多高,同时还要从密码分析的角度对这个算法进行安全证明,说明这个算法对于所知的分析方法来说是有防范作用的。 三、对称加密算法分析 对称加密算法的分类 对称加密算法可以分成两类:一类为序列算法(stream algorithm):一次只对明文中单个位(有时为字节)加密或解密运算。另一类为分组算法(block algorithm):一次明文的一组固定长度的字节加密或解密运算。 现代计算机密码算法一般采用的都是分组算法,而且一般分组的长度为64位,之所以如此是由于这个长度大到足以防止分析破译,但又小到足以方便使用。 1.DES加密算法 (Data Encryption Standard )
(1) 算法简介
1973 年 5 月 15 日,美国国家标准局 (NBS) 在“联邦注册”上发布了一条通知,征求密码算法,用于在传输和存储期间保护数据。IBM 提交了一个候选算法,它是 IBM 内部开发的,名为 LUCIFER。在美国国家安全局 (NSA) 的“指导”下完成了算法评估之后,在 1977 年 7 月 15 日,NBS 采纳了 LUCIFER 算法的修正版作为新的数据加密标准。
原先规定使用10年,但由于新的加密标准还没有完成,所以DES算法及其的变形算法一直广泛的应用于信息加密方面。 (2) 算法描述 (包括加密和解密)
Feistel结构(画图说明)。
DES 的工作方式:可怕的细节
DES 将消息分成 64 位(即 16 个十六进制数)一组进行加密。DES 使用“密钥”进行加密,从符号的角度来看,“密钥”的长度是 16 个十六进制数(或 64 位)。但是,由于某些原因(可能是因为 NSA 给 NBS 的“指引”),DES 算法中每逢第 8 位就被忽略。这造成密钥的实际大小变成 56 位。编码系统对“强行”或“野蛮”攻击的抵抗力与其密钥空间或者系统可能有多少密钥有直接关系。使用的位数越多转换出的密钥也越多。密钥越多,就意味着强行攻击中计算密钥空间中可能的密钥范围所需的时间就越长。从总长度中切除 8 位就会在很大程度上限制了密钥空间,这样系统就更容易受到破坏。
DES 是块加密算法。这表示它处理特定大小的纯文本块(通常是 64 位),然后返回相同大小的密码块。这样,64 位(每位不是 0 就是 1)有 264 种可能排列,DES 将生成其中的一种排列。每个 64 位的块都被分成 L、R 左右两块,每块 32 位。
DES 算法使用以下步骤:
1. 创建 16 个子密钥,每个长度是 48 位。根据指定的顺序或“表”置换 64 位的密钥。如果表中的第一项是 "27",这表示原始密钥 K 中的第 27 位将变成置换后的密钥 K+ 的第一位。如果表的第二项是 36,则这表示原始密钥中的第 36 位将变成置换后密钥的第二位,以此类推。这是一个线性替换方法,它创建了一种线性排列。置换后的密钥中只出现了原始密钥中的 56 位。
2. 接着,将这个密钥分成左右两半,C0 和 D0,每一半 28 位。定义了 C0 和 D0 之后,创建 16 个 Cn 和 Dn 块,其中 1<=n<=16。每一对 Cn 和 Dn 块都通过使用标识“左移位”的表分别从前一对 Cn-1 和 Dn-1 形成,n = 1, 2, ..., 16,而“左移位”表说明了要对哪一位进行操作。在所有情况下,单一左移位表示这些位轮流向左移动一个位置。在一次左移位之后,28 个位置中的这些位分别是以前的第 2、3……28 位。
通过将另一个置换表应用于每一个 CnDn 连接对,从而形成密钥 Kn,1<=n<=16。每一对有 56 位,而置换表只使用其中的 48 位,因为每逢第 8 位都将被忽略。
3. 编码每个 64 位的数据块。
64 位的消息数据 M 有一个初始置换 IP。这将根据置换表重新排列这些位,置换表中的项按这些位的初始顺序描述了它们新的排列。我们以前见过这种线性表结构。
使用函数 f 来生成一个 32 位的块,函数 f 对两个块进行操作,一个是 32 位的数据块,一个是 48 位的密钥 Kn,连续迭代 16 次,其中 1<=n<=16。用 + 表示 XOR 加法(逐位相加,模除 2)。然后,n 从 1 到 16,计算 Ln = Rn-1 Rn = Ln-1 + f(Rn-1,Kn)。即在每次迭代中,我们用前一结果的右边 32 位,并使它们成为当前步骤中的左边 32 位。对于当前步骤中的右边 32 位,我们用算法 f XOR 前一步骤中的左边 32 位。
要计算 f,首先将每一块 Rn-1 从 32 位扩展到 48 位。可以使用选择表来重复 Rn-1 中的一些位来完成这一操作。这个选择表的使用就成了函数 f。因此 f(Rn-1) 的输入块是 32 位,输出块是 48 位。f 的输出是 48 位,写成 8 块,每块 6 位,这是通过根据已知表按顺序选择输入中的位来实现的。
我们已经使用选择表将 Rn-1 从 32 位扩展成 48 位,并将结果 XOR 密钥 Kn。现在有 48 位,或者是 8 组,每组 6 位。每组中的 6 位现在将经历一次变换,该变换是算法的核心部分:在叫做“S 盒”的表中,我们将这些位当作地址使用。每组 6 位在不同的 S 盒中表示不同的地址。该地址中是一个 4 位数字,它将替换原来的 6 位。最终结果是 8 组,每组 6 位变换成 8 组,每组 4 位(S 盒的 4 位输出),总共 32 位。
f 计算的最后阶段是对 S 盒输出执行置换 P,以得到 f 的最终值。f 的形式是 f = P(S1(B1)S2(B2)...S8(B8))。置换 P 根据 32 位输入,在以上的过程中通过置换输入块中的位,生成 32 位输出。
解密只是加密的逆过程,使用以上相同的步骤,但要逆转应用子密钥的顺序。DES 算法是可逆的
(2) 算法的安全性分析
在知道一些明文和密文分组的条件下,从理论上讲很容易知道对DES进行一次穷举攻击的复杂程度:密钥的长度是56位,所以会有 种的可能的密钥。
在1993年的一年一度的世界密码大会上,加拿大北方电信公司贝尔实验室的 Michael Wiener 描述了如何构造一台专用的机器破译DES,该机器利用一种每秒能搜索5000万个密钥的专用芯片。而且此机器的扩展性很好,投入的经费越多则效率越高。用100万美元构造的机器平均3.5小时就可以破译密码。
如果不用专用的机器,破译DES也有其他的方法。在1994年的世界密码大会上,M.Matsui 提出一种攻克DES的新方法--"线性密码分析"法。它可使用平均 个明文及其密文,在12台HP9000/735工作站上用此方法的软件实现,花费50天时间完成对DES的攻击。
如前所述DES作为加密算法的标准已经二十多年了,可以说是一个很老的算法,而在新的加密算法的国际标准出现之前,许多DES的加固性改进算法仍有实用价值,在本文的3.4节详细的描述,同时考虑的以上所述DES的安全性已受到了威胁。
(4) 算法的变体 三重DES(TDEA),使用3个密钥,执行3次DES算法:
加密:C = Ek3[Dk2[Ek1[P]]] 解密:P = Dk1[Ek2[Dk3[C]]]
特点:安全性得到增强,但是速度变慢。
2.AES
自 20 世纪 70 年代以来一直广泛使用的“数据加密标准”(DES) 日益显出衰老的痕迹,而一种新的算法 -- Rijndael -- 正顺利地逐渐变成新标准。这里,Larry Loeb 详细说明了每一种算法,并提供了关于为什么会发生这种变化的内幕信息。
DES 算法是全世界最广泛使用的加密算法。最近,就在 2000 年 10 月,它在其初期就取得的硬件方面的优势已经阻碍了其发展,作为政府加密技术的基础,它已由“高级加密标准”(AES) 中包含的另一种加密算法代替了。AES 是指定的标准密码系统,未来将由政府和银行业用户使用。AES 用来实际编码数据的加密算法与以前的 DES 标准不同。我们将讨论这是如何发生的,以及 AES 中的 Rijndael 算法是如何取代 DES 的算法的。
“高级加密标准”成就
但直到 1997 年,美国国家标准技术局 (NIST) 才开始打着 AES 项目的旗帜征集其接任者。1997 年 4 月的一个 AES 研讨会宣布了以下 AES 成就的最初目标:
• 可供政府和商业使用的功能强大的加密算法
• 支持标准密码本方式
• 要明显比 DES 3 有效
• 密钥大小可变,这样就可在必要时增加安全性
• 以公正和公开的方式进行选择
• 可以公开定义
• 可以公开评估
AES 的草案中最低可接受要求和评估标准是:
A.1 AES 应该可以公开定义。
A.2 AES 应该是对称的块密码。
A.3 AES 应该设计成密钥长度可以根据需要增加。
A.4 AES 应该可以在硬件和软件中实现。
A.5 AES 应该 a) 可免费获得。
A.6 将根据以下要素评价符合上述要求的算法:
1. 安全性(密码分析所需的努力)
2. 计算效率
3. 内存需求
4. 硬件和软件可适用性
5. 简易性
6. 灵活性
7. 许可证需求(见上面的 A5)
Rijndael:AES 算法获胜者
1998年8月20日NIST召开了第一次AES侯选会议,并公布了15个AES侯选算法。经过一年的考察,MARS,RC6,Rijndael,Serpent,Twofish共5种算法通过了第二轮的选拔。2000 年 10 月,NIST 选择 Rijndael(发音为 "Rhine dale")作为 AES 算法。它目前还不会代替 DES 3 成为政府日常加密的方法,因为它还须通过测试过程,“使用者”将在该测试过程后发表他们的看法。但相信它可以顺利过关。
Rijndael 是带有可变块长和可变密钥长度的迭代块密码。块长和密钥长度可以分别指定成 128、192 或 256 位。
Rijndael 中的某些操作是在字节级上定义的,字节表示有限字段 GF(28) 中的元素,一个字节中有 8 位。其它操作都根据 4 字节字定义。
加法照例对应于字节级的简单逐位 EXOR。
在多项式表示中,GF(28) 的乘法对应于多项式乘法模除阶数为 8 的不可约分二进制多项式。(如果一个多项式除了 1 和它本身之外没有其它约数,则称它为不可约分的。)对于 Rijndael,这个多项式叫做 m(x),其中:m(x) = (x8 + x4 + x3 + x + 1) 或者十六进制表示为 '11B'。其结果是一个阶数低于 8 的二进制多项式。不像加法,它没有字节级的简单操作。
不使用 Feistel 结构!
在大多数加密算法中,轮回变换都使用着名的 Feistel 结构。在这个结构中,中间 State 的位部分通常不做更改调换到另一个位置。(这种线性结构的示例是我们在 DES 部分中讨论的那些表,即使用固定表的形式交换位。)Rijndael 的轮回变换不使用这个古老的 Feistel 结构。轮回变换由三个不同的可逆一致变换组成,叫做层。(“一致”在这里表示以类似方法处理 State 中的位。)
线性混合层保证了在多个轮回后的高度扩散。非线性层使用 S 盒的并行应用,该应用程序有期望的(因此是最佳的)最差非线性特性。S 盒是非线性的。依我看来,这就 DES 和 Rijndael 之间的密钥概念差异。密钥加法层是对中间 State 的轮回密钥 (Round Key) 的简单 EXOR,如以下所注。
Rijndael算法
加密算法
Rijndael算法是一个由可变数据块长和可变密钥长的迭代分组加密算法,数据块长和密钥长可分别为128,192或256比特。
数据块要经过多次数据变换操作,每一次变换操作产生一个中间结果,这个中间结果叫做状态。状态可表示为二维字节数组,它有4行,Nb列,且Nb等于数据块长除32。如表2-3所示。
a0,0 a0,1 a0,2 a0,3 a0,4 a0,5
a1,0 a1,1 a1,2 a1,3 a1,4 a1,5
a2,0 a2,1 a2,2 a2,3 a2,4 a2,5
a3,0 a3,1 a3,2 a3,3 a3,4 a3,5
数据块按a0,0 , a1,0 , a2,0 , a3,0 , a0,1 , a1,1 , a2,1 , a3,1 , a0,2…的顺序映射为状态中的字节。在加密操作结束时,密文按同样的顺序从状态中抽取。
密钥也可类似地表示为二维字节数组,它有4行,Nk列,且Nk等于密钥块长除32。算法变换的圈数Nr由Nb和Nk共同决定,具体值列在表2-4中。
表3-2 Nb和Nk决定的Nr的值
Nr Nb = 4 Nb = 6 Nb = 8
Nk = 4 10 12 14
Nk = 6 12 12 14
Nk = 8 14 14 14
3.2.1圈变换
加密算法的圈变换由4个不同的变换组成,定义成:
Round(State,RoundKey)
{
ByteSub(State);
ShiftRow(State);
MixColumn(State);
AddRoundKey(State,RoundKey); (EXORing a Round Key to the State)
}
加密算法的最后一圈变换与上面的略有不同,定义如下:
FinalRound(State,RoundKey)
{
ByteSub(State);
ShiftRow(State);
AddRoundKey(State,RoundKey);
}
ByteSub变换
ByteSub变换是作用在状态中每个字节上的一种非线形字节变换。这个S盒子是可逆的且由以下两部分组成:
把字节的值用它的乘法逆替代,其中‘00’的逆就是它自己。
经(1)处理后的字节值进行如下定义的仿射变换:
y0 1 1 1 1 1 0 0 0 x0 0
y1 0 1 1 1 1 1 0 0 x1 1
y2 0 0 1 1 1 1 1 0 x2 1
y3 0 0 0 1 1 1 1 1 x3 0
y4 = 1 0 0 0 1 1 1 1 x4 + 0
y5 1 1 0 0 0 1 1 1 x5 0
y6 1 1 1 0 0 0 1 1 x6 1
y7 1 1 1 1 0 0 0 1 x7 1
ShiftRow变换
在ShiftRow变换中,状态的后3行以不同的移位值循环右移,行1移C1字节,行2移C2字节,行3移C3字节。
移位值C1,C2和C3与加密块长Nb有关,具体列在表2-5中:
表3-3 不同块长的移位值
Nb C1 C2 C3
4 1 2 3
MixColumn变换
在MixColumn变换中,把状态中的每一列看作GF(28)上的多项式与一固定多项式c(x)相乘然后模多项式x4+1,其中c(x)为:
c(x) =‘03’x3 + ‘01’x2 + ‘01’x + ‘02’
圈密钥加法
在这个操作中,圈密钥被简单地使用异或操作按位应用到状态中。圈密钥通过密钥编制得到,圈密钥长等于数据块长Nb。
在这个表示法中,“函数”(Round, ByteSub, ShiftRow,...) 对那些被提供指针 (State, RoundKey) 的数组进行操作。ByteSub 变换是非线性字节交换,各自作用于每个 State 字节上。在 ShiftRow 中,State 的行按不同的偏移量循环移位。在 MixColumn 中,将 State 的列视为 GF(28) 多项式,然后乘以固定多项式 c( x ) 并模除 x4 + 1,其中 c( x ) = '03' x3 + '01' x2+ '01' x + '02'。这个多项式与 x4 + 1 互质,因此是可逆的。
轮回密钥通过密钥计划方式从密码密钥 (Cipher Key) 派生而出。它有两个组件:密钥扩展 (Key Expansion) 和轮回密钥选择 (Round Key Selection)。轮回密钥的总位数等于块长度乘以轮回次数加 1(例如,块长度等于 128 位,10 次轮回,那么就需要 1408 个轮回密钥位)。
密码密钥扩充成扩展密钥 (Expanded Key)。轮回密钥是通过以下方法从这个扩展密钥中派生的:第一个轮回密钥由前 Nb(Nb = 块长度)个字组成,第二个由接着的 Nb 个字组成,以此类推。
加密算法由以下部分组成:初始轮回密钥加法、Nr-1 个轮回和最后一个轮回。在伪 C 代码中:
Rijndael(State,CipherKey)
{
KeyExpansion(CipherKey,ExpandedKey);
AddRoundKey(State,ExpandedKey);
For( i=1 ; i<Nr ; i++ ) Round(State,ExpandedKey + Nb*i);
FinalRound(State,ExpandedKey + Nb*Nr).
}
如果已经预先执行了密钥扩展,则可以根据扩展密钥指定加密算法。
Rijndael(State,ExpandedKey)
{
AddRoundKey(State,ExpandedKey);
For( i=1 ; i<Nr ; i++ ) Round(State,ExpandedKey + Nb*i);
FinalRound(State,ExpandedKey + Nb*Nr);
}
由于 Rijndael 是可逆的,解密过程只是颠倒上述的步骤。
最后,开发者将仔细考虑如何集成这种安全性进展,使之成为继 Rijndael 之后又一个得到广泛使用的加密算法。AES 将很快应一般商业团体的要求取代 DES 成为标准,而该领域的发展进步无疑将追随其后。
3.IDEA加密算法 (1) 算法简介 IDEA算法是International Data Encryption Algorithmic 的缩写,意为国际数据加密算法。是由中国学者朱学嘉博士和着名密码学家James Massey 于1990年联合提出的,当时被叫作PES(Proposed Encryption Standard)算法,后为了加强抵抗差分密码分,经修改于1992年最后完成,并命名为IDEA算法。 (2) 算法描述 这个部分参见论文上的图 (3) 算法的安全性分析 安全性:IDEA的密钥长度是128位,比DES长了2倍多。所以如果用穷举强行攻击的话, 么,为了获得密钥需要 次搜索,如果可以设计一种每秒能搜索十亿把密钥的芯片,并且 采用十亿个芯片来并行处理的话,也要用上 年。而对于其他攻击方式来说,由于此算法 比较的新,在设计时已经考虑到了如差分攻击等密码分析的威胁,所以还未有关于有谁 发现了能比较成功的攻击IDEA方法的结果。从这点来看,IDEA还是很安全的。
4.总结
几种算法的性能对比
算法 密钥长度 分组长度 循环次数
DES 56 64 16
三重DES 112、168 64 48
AES 128、192、256 128 10、12、14
IDEA 128 64 8
速度:在200MHz的奔腾机上的对比。
C++ DJGP(++pgcc101)
AES 30.2Mbps 68.275Mbps
DES(RSAREF) 10.6Mbps 16.7Mbps
3DES 4.4Mbps 7.3Mbps
Celeron 1GHz的机器上AES的速度,加密内存中的数据
128bits密钥:
C/C++ (Mbps) 汇编(Mbps)
Linux 2.4.7 93 170
Windows2K 107 154
256bits密钥:
C/C++ (Mbps) 汇编(Mbps)
Linux 2.4.7 76 148
Windows2K 92 135
安全性
1990年以来,特制的"DES Cracker"的机器可在几个小时内找出一个DES密钥。换句话说,通过测试所有可能的密钥值,此硬件可以确定用于加密信息的是哪个密钥。假设一台一秒内可找出DES密钥的机器(如,每秒试255个密钥),如果用它来找出128-bit AES的密钥,大约需要149万亿年。
四、对称加密应用 在保密通信中的应用。(保密电话) 附加内容
安全哈希算法(SHA)
由NIST开发出来的。
此算法以最大长度不超过264位的消息为输入,生成160位的消息摘要输出。主要步骤:
1. 附加填充位
2. 附加长度
3. 初始化MD缓冲区,为160位的数据
A=67452301
B=EFCDAB89
C=89BADCFE
D=10325476
E=C3D2E1F0
4. 处理512位消息块,将缓冲虚数据和消息块共同计算出下一个输出
5. 输出160位摘要
此外还有其他哈希算法,如MD5(128位摘要),RIPEMD-160(160位摘要)等。
7. 请问DES加密算法中的这3个函数(获取密钥函数,加密函数与解密函数)的含义是什么(附函数算法)
/// <summary>
/// DES密钥
/// </summary>
private const string KEY_64 = "11111111";//注意了,是8个字符,64位
/// <summary>
/// DES向量
/// </summary>
private const string IV_64 = "11111111";
/// <summary>
/// 加密DES
/// </summary>
/// <param name="data">需要加密的字符串</param>
/// <returns>加密后的字符串</returns>
public static string EncodeDES(string data)
{
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
int i = cryptoProvider.KeySize;
MemoryStream ms = new MemoryStream();
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);
StreamWriter sw = new StreamWriter(cst);
sw.Write(data);
sw.Flush();
cst.FlushFinalBlock();
sw.Flush();
return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
}
/// <summary>
/// 解密DES
/// </summary>
/// <param name="data">需要解密的字符串</param>
/// <returns>解密后的字符串</returns>
public static string DecodeDES(string data)
{
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);
byte[] byEnc;
try
{
byEnc = Convert.FromBase64String(data);
}
catch
{
return null;
}
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream(byEnc);
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cst);
return sr.ReadToEnd();
}
8. aes加密算法是什么意思
1、TKIP: Temporal Key Integrity Protocol(暂时密钥集成协议)负责处理无线安全问题的加密部分,TKIP是包裹在已有WEP密码外围的一层“外壳”, 这种加密方式在尽可能使用WEP算法的同时消除了已知的WEP缺点
2、AES:Advanced Encryption Standard(高级加密标准),是美国国家标准与技术研究所用于加密电子数据的规范,该算法汇聚了设计简单、密钥安装快、需要的内存空间少、在所有的平台上运行良好、支持并行处理并且可以抵抗所有已知攻击等优点。 AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并且用 128 位(16字节)分组加密和解密数据。
总而言之AES提供了比 TKIP更加高级的加密技术, 现在无线路由器都提供了这2种算法,不过比较倾向于AES。TKIP安全性不如AES,而且在使用TKIP算法时路由器的吞吐量会下降3成至5成,大大地影响了路由器的性能。