对称加密非常最古老且 best-known 技术。 可以是数字、 单词或只是一个字符串随机字母,一个机密密钥应用于特定的方式更改该内容的消息文本。 这可能是简单,同时移的字母表中的每个字母。 只要同时发件人和收件人知道密钥,则他们可以加密和解密使用此密钥的所有邮件。
非对称加密
密钥问题交换它们通过 Internet 或大型网络同时防止其下降到错误的指针。 知道密钥的人能够解密该邮件。 一个的答案是在其中有两个相关的项一个密钥对的非对称加密。 可能需要发送消息的任何人,公钥由免费提供。 第二个专用的密钥是保密,以便只知道它。
使用公钥加密任何消息 (文本、 二进制的文件或文档) 只解密情况应用相同的算法,但通过使用匹配的私钥。 仅可以通过使用匹配的公钥解密使用私钥进行加密的任何邮件。
这意味着您执行没有担心如何通过 Internet 传递公钥 (项应该是公共)。 非对称加密,一个问题但是,是它是比对称加密速度慢。 它需要多得多处理能力加密和解密该邮件的内容。
DES( Data Encryption Standard)算法,于1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。虽然56位密钥的DES算法已经风光不在,而且常有用Des加密的明文被破译的报道,但是了解一下昔日美国的标准加密算法总是有益的,而且目前DES算法得到了广泛的应用,在某些场合,她仍然发挥着余热.(如:UNIX的密码算法就是以DES算法为基础的)。
以下是DES加密流程图:
3DES(即Triple DES)是DES向AES过渡的加密算法,它使用3条64位的密钥对数据进行三次加密。是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法。比起最初的DES,3DES更为安全。
3DES算法
CPU双界面卡一般采用DES加密算法,这是一种迭代分组密码算法,使用的密钥长度为64位。为进一步提高系统安全强度,在校园一卡通系统中,双界面CPU卡采用的是三重DES算法,采用的密码长度为128位。
3DES算法
3DES算法是指使用双长度(16字节)密钥K=(KL||KR)将8字节明文数据块进行3次DES加密/解密。如下所示:
Y = DES(KL)[DES-1(KR)[DES(KL[X])]]
解密方式为:
X = DES-1 (KL)[DES (KR)[ DES-1 (KL[Y])]]
其中,DES(KL[X])表示用密钥K对数据X进行DES加密,DES-1 (KL[Y])表示用密钥K对数据Y进行解密。
SessionKey的计算采用3DES算法,计算出单倍长度的密钥。表示法为:SK = Session(DK,DATA)
3DES加密算法为:
VOID 3DES(BYTE DoubleKeyStr[16], BYTE Data[8], BYTE Out[8])
{
BYTE Buf1[8], Buf2[8];
DES (&DoubleKeyStr[0], Data, Buf1);
UDES(&DoubleKeyStr[8], Buf1, Buf2);
DES (&DoubleKeyStr[0], Buf2, Out);
}
3DES工作原理
IDEA(International Data Encryption Algorithm)是瑞士的James Massey,Xuejia Lai等人提出的加密算法,在密码学中属于数据块加密算法(Block Cipher)类。IDEA使用长度为128bit的密钥,数据块大小为64bit。从理论上讲,IDEA属于“强”加密算法,至今还没有出现对该算法的有效攻击算法。
早在1990年,Xuejia Lai等人在EuroCrypt’90年会上提出了分组密码建议PES(Proposed Encryption Standard)。在EuroCrypt’91年会上, Xuejia Lai等人又提出了PES的修正版IPES(Improved PES)。目前IPES已经商品化,并改名为IDEA。IDEA已由瑞士的Ascom公司注册专利,以商业目的使用IDEA算法必须向该公司申请许可。
IDEA是一种由8个相似圈(Round)和一个输出变换(Output Transformation)组成的迭代算法。IDEA的每个圈都由三种函数:模(216+1)乘法、模216加法和按位XOR组成。
在加密之前,IDEA通过密钥扩展(Key Expansion)将128bit的密钥扩展为52Byte的加密密钥EK(Encryption Key),然后由EK计算出解密密钥DK(Decryption Key)。EK和DK分为8组半密钥,每组长度为6Byte,前8组密钥用于8圈加密,最后半组密钥(4Byte)用于输出变换。IDEA的加密过程和解密过程是一样的,只不过使用不同的密钥(加密时用EK,解密时用DK)。
密钥扩展的过程如下:
1.将128bit的密钥作为EK的前8byte;
2.将前8byte循环左移25bit,得到下一8byte,将这个过程循环7次;
3.在第7次循环时,取前4byte作为EK的最后4byte;
4.至此52byte的EK生成完毕。
AES(Advanced Encryption Standard)
高级加密标准 密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院 (NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。
该算法为比利时密码学家Joan Daemen和Vincent Rijmen所设计,结合两位作者的名字,以Rijdael之命名之,投稿高级加密标准的甄选流程。(Rijdael的发音近于 "Rhine doll"。)
AES 是一个新的可以用于保护电子数据的加密算法。明确地说,AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并且用 128 位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据 的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换(permutations )和替换(substitutions)输入数据。Figure 1 显示了 AES 用192位密钥对一个16位字节数据块进行加密和解密的情形。
(AES加密过程)
RSA是一个Internet加密与鉴权系统,它使用Ron Rivest,Adi Shamir及Leonard Adieman在1977年开发的一个算法。RSA算法是最普遍使用的加密与鉴权算法,并且已被包含在Microsoft和Netscape的Web浏览器中。它也是Lotus的Notes、Intuit的Quicken及其他许多产品的一部分。
RSA算法非常简单,概述如下:
找两素数p和q (初中学过的素数:除了1和本身,还有其它的约数。)
取n=p*q
取t=(p-1)*(q-1)
取任何一个数e,要求满足e<t并且e与t互素(就是最大公因数为1)
取d*e%t==1
这样最终得到三个数: n d e
RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解 RSA就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。目前, RSA 的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。现在,人们已能分解多个十进制位的大素数。因此,模数n 必须选大一些,因具体适用情况而定。