1、12024-3-192024-3-191112024-3-192024-3-1911主要内容:分组密码的基本概念 对称密码基本原理 数据标准加密(DES)高级加密标准(AES)对称密码体制工作模式 对称密码应用第三章第三章 分组密码算法分组密码算法22024-3-192024-3-192222024-3-192024-3-19222024-3-192 首先要将待加密的明文进行分组,每组的长度相同,然后对每组明文分别加首先要将待加密的明文进行分组,每组的长度相同,然后对每组明文分别加密得到密文。密得到密文。对称密码系统采用相同的加密密钥和解密密钥对称密码系统采用相同的加密密钥和解密密钥,这是对称
2、密码系统,这是对称密码系统的显著特点。的显著特点。分组密码基本通信模型图分组密码基本通信模型图 分组密码模型:分组密码模型:32024-3-192024-3-193342024-3-192024-3-194442024-3-192024-3-19442024-3-19452024-3-192024-3-195552024-3-192024-3-19552024-3-195消息消息明文明文分组分组加密加密密文密文加密消息的过程加密消息的过程62024-3-192024-3-196662024-3-192024-3-19662024-3-196 为保证分组密码的安全强度,设计分组密码时应遵循如下的
3、基本原则:(2 2)密钥量足够大,同时需要尽可能消除弱密钥的使用,防止密钥穷举攻击,)密钥量足够大,同时需要尽可能消除弱密钥的使用,防止密钥穷举攻击,但是由于对称密码体制存在密钥管理问题,密钥也不能过大。但是由于对称密码体制存在密钥管理问题,密钥也不能过大。(3 3)密钥变换足够复杂,能抵抗各种已知攻击,如差分攻击、线性攻击、边信)密钥变换足够复杂,能抵抗各种已知攻击,如差分攻击、线性攻击、边信道攻击等,即使得攻击者除了穷举攻击外找不到其它有效攻击方法。道攻击等,即使得攻击者除了穷举攻击外找不到其它有效攻击方法。(4 4)加密和解密的运算简单,易于软硬件高速实现。)加密和解密的运算简单,易于软
4、硬件高速实现。(5 5)数据扩展足够小,一般无数据扩展。)数据扩展足够小,一般无数据扩展。(6 6)差错传播尽可能小,加密或解密某明文或密文分组出错,对后续密文解密)差错传播尽可能小,加密或解密某明文或密文分组出错,对后续密文解密影响尽可能小。影响尽可能小。(1 1)分组长度足够长,防止明文穷举攻击。)分组长度足够长,防止明文穷举攻击。72024-3-192024-3-197772024-3-192024-3-19772024-3-197(1 1)扩散)扩散 就是将每一位明文的影响尽可能迅速地作用到较多的输出密文位中去,就是将每一位明文的影响尽可能迅速地作用到较多的输出密文位中去,以便隐藏明文
5、的统计特性。以便隐藏明文的统计特性。(2 2)混乱)混乱 是指密文和明文之间的统计特性关系尽可能地复杂化。是指密文和明文之间的统计特性关系尽可能地复杂化。(3 3)乘积密码)乘积密码 指依次使用两个或两个以上的基本密码,所得结果的密码强度将强于指依次使用两个或两个以上的基本密码,所得结果的密码强度将强于所有单个密码的强度。所有单个密码的强度。82024-3-192024-3-198882024-3-192024-3-19882024-3-198 乘积密码通常伴随系列置换与代替操乘积密码通常伴随系列置换与代替操作,常见的作,常见的乘积密码是迭代密码乘积密码是迭代密码。许多分。许多分组密码重复一个
6、或几个步骤:组密码重复一个或几个步骤:代替然后换代替然后换位,然后代替,再换位位,然后代替,再换位等等,并且每个步等等,并且每个步骤的过程都有密钥来控制,目前的大多数骤的过程都有密钥来控制,目前的大多数分组密码同时使用分组密码同时使用代替代替-置换网置换网络以达到络以达到混混淆和扩散淆和扩散的目标。的目标。代替代替-置换置换网络是由多重代替变换网络是由多重代替变换(S)S)和置和置换变换(换变换(P P),),如右图所示,如右图所示,S S代替变换起代替变换起到混淆的作用到混淆的作用,P P置换变换起到扩散的作用置换变换起到扩散的作用。92024-3-192024-3-199992024-3-
7、192024-3-19992024-3-199102024-3-192024-3-191010102024-3-192024-3-1910102024-3-1910112024-3-192024-3-1911112024-3-1911 为了保证分组密码的安全性,与分组密码算法原则非常类似,为了保证分组密码的安全性,与分组密码算法原则非常类似,FeistelFeistel网网络结构实现与以下参数和特性有关:络结构实现与以下参数和特性有关:(1 1)分组大小:分组越大则安全性越高,但加密速度就越慢。分组密码设)分组大小:分组越大则安全性越高,但加密速度就越慢。分组密码设计中最为普遍使用的分组大小是
8、计中最为普遍使用的分组大小是6464比特。比特。(2 2)密钥大小:密钥越长则安全性越高,但加密速度就越慢。)密钥大小:密钥越长则安全性越高,但加密速度就越慢。现在通常使现在通常使用用128128比特的密钥长度比特的密钥长度。(3 3)轮数:单轮结构远不足以保证安全性,但多轮结构可提供足够的安全)轮数:单轮结构远不足以保证安全性,但多轮结构可提供足够的安全性。性。典型地,轮数取为典型地,轮数取为1616。(4 4)子密钥产生算法:该算法的复杂性越大,则密码分析的困难性就越大。)子密钥产生算法:该算法的复杂性越大,则密码分析的困难性就越大。(5 5)轮函数:轮函数的复杂性越大,密码分析的困难性也
9、越大。)轮函数:轮函数的复杂性越大,密码分析的困难性也越大。122024-3-192024-3-191212122024-3-192024-3-1912122024-3-1912 132024-3-192024-3-191313132024-3-192024-3-1913132024-3-1913解密原理:解密原理:加密最后一轮加密最后一轮解密第一轮解密第一轮142024-3-192024-3-191414142024-3-192024-3-191414 1994年,美国决定年,美国决定1998年年12月以后不再使用月以后不再使用DES算法,目前算法,目前DES已被更为安全的已被更为安全的Ri
10、jndael算法取代。虽然这样,但是目前还无法将算法取代。虽然这样,但是目前还无法将DES加密算法彻底地破解掉,而且加密算法彻底地破解掉,而且DES算法的加解密过程非常快,仍是目前使用最为普遍的对称密钥加密算法。算法的加解密过程非常快,仍是目前使用最为普遍的对称密钥加密算法。在国内,随着在国内,随着三金工程尤其是金卡工程的启动,三金工程尤其是金卡工程的启动,DES算法在算法在POS、ATM、磁卡及智能卡磁卡及智能卡(IC卡卡)、加油、加油站、高速公路收费站等领域被广泛应用,以此来实现关键数据的保密,如信用卡持卡人站、高速公路收费站等领域被广泛应用,以此来实现关键数据的保密,如信用卡持卡人的的P
11、IN码加密传输,码加密传输,IC卡与卡与POS间的双向认证、金融交易数据包的间的双向认证、金融交易数据包的MAC校验等,均用到校验等,均用到DES算法。算法。DESDES(Data Encryption Standard)是美国是美国IBM公司于公司于20世纪世纪70年代中期的一个密码年代中期的一个密码算法(算法(LUCIFER算法)发展而来的,并于算法)发展而来的,并于1977年年1月月15日由美国国家标准局(日由美国国家标准局(NBS)正正式公布实施的数据加密标准,并得到了式公布实施的数据加密标准,并得到了ISO的认可。在过去近的认可。在过去近20多年的时间里,多年的时间里,DES 被被广
12、泛应用于美国联邦和各种商业信息的安全保密工作中,经受住了各种密码分析和攻击,广泛应用于美国联邦和各种商业信息的安全保密工作中,经受住了各种密码分析和攻击,体现出了令人满意的安全性。体现出了令人满意的安全性。2024-3-19141.DES产生的历史背景产生的历史背景 152024-3-192024-3-1915152024-3-1915 DES是一种采用传统的替换和移位方法加密的分组密码,算法是对称的,既可是一种采用传统的替换和移位方法加密的分组密码,算法是对称的,既可用于加密又可用于解密用于加密又可用于解密。DES是一个分组密码算法,使用是一个分组密码算法,使用64位密钥(除去位密钥(除去8
13、位奇偶校验,实际密钥长为位奇偶校验,实际密钥长为56位)对位)对64比特的数据分组(二进制数据)加密,产生比特的数据分组(二进制数据)加密,产生64位密文数据。位密文数据。DES是一个是一个对称密码体制,加密和解密使用同一密钥,解密和加密使用同一算法。对称密码体制,加密和解密使用同一密钥,解密和加密使用同一算法。DES的所有保密性均依赖于密钥。的所有保密性均依赖于密钥。由于由于DES算法仅使用最大为算法仅使用最大为64位的标准算术和逻辑运算,运算速度快,密钥位的标准算术和逻辑运算,运算速度快,密钥产生容易,适合于在当前大多数计算机上用软件方法实现,同时也适合于在专用产生容易,适合于在当前大多数
14、计算机上用软件方法实现,同时也适合于在专用芯片上实现。芯片上实现。162024-3-192024-3-191616162024-3-192024-3-1916162024-3-1916下图是下图是DESDES加密算法流程。加密算法流程。172024-3-192024-3-1917172024-3-1917 (1)DES的加密过程(的加密过程(3个阶段)个阶段)初始置换初始置换IP(如下表所示)对于给定的明文如下表所示)对于给定的明文x,通过初始置换通过初始置换IP(在在第一轮迭代运算之前,需要加密的第一轮迭代运算之前,需要加密的64位明文首选通过初始置换位明文首选通过初始置换IP的作用,对输入
15、分的作用,对输入分组实施置换(即组实施置换(即把把64位置换为第位置换为第2位,位,原来输入明文的第,原来输入明文的第7位将作为置换结果的位将作为置换结果的最后一位最后一位)获得,并将获得,并将x0分为两部分,前面分为两部分,前面32位记为位记为L0,后面后面32位记为位记为R0。58 50 12 34 26 18 10 2 60 52 44 36 28 20 12 458 50 12 34 26 18 10 2 60 52 44 36 28 20 12 462 54 46 38 30 22 14 6 64 56 48 40 32 24 16 862 54 46 38 30 22 14 6 6
16、4 56 48 40 32 24 16 857 49 41 33 25 17 9 1 59 51 43 35 27 19 11 357 49 41 33 25 17 9 1 59 51 43 35 27 19 11 361 53 45 37 29 21 13 5 63 55 47 39 31 23 15 761 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7182024-3-192024-3-191818182024-3-192024-3-1918182024-3-1918192024-3-192024-3-1919192024-3-1919202024-
17、3-192024-3-192020202024-3-192024-3-192020IP置换举例置换举例212024-3-192024-3-1921212024-3-1921 DES采用了典型的采用了典型的Feistel结构,是一个乘积结构的迭代密码算法。结构,是一个乘积结构的迭代密码算法。其算法的其算法的核心是核心是算法所规定的算法所规定的16次迭代变换(见下页图)。次迭代变换(见下页图)。),(111iiiiiikRfLRRL 从图中可以看出:从图中可以看出:DES算法的算法的16次迭代变换具有相同的结构,每一次迭代变次迭代变换具有相同的结构,每一次迭代变换都以前一次迭代变换的结果(换都以前
18、一次迭代变换的结果()和用户密钥扩)和用户密钥扩展得到的子展得到的子ki作为输入;每一次迭代变换只变换一半数据,它们将输入数据作为输入;每一次迭代变换只变换一半数据,它们将输入数据的右半部分经过函数的右半部分经过函数f后,将其输出与输入数据的左半部分进行异或运算,并将后,将其输出与输入数据的左半部分进行异或运算,并将得到的结果作为新的右半部分,原来的右半部分变成了新的左半部分。得到的结果作为新的右半部分,原来的右半部分变成了新的左半部分。222024-3-192024-3-1922221iiRL),(11iiiiKRFLR232024-3-192024-3-1923232024-3-1923
19、DES算法的安全算法的安全性关键在于性关键在于非线性函非线性函数数F的性质。在的性质。在DES算法中,算法中,F 以长度为以长度为32位的比特串作为输位的比特串作为输入,产生的中间结果入,产生的中间结果为为48位,并在最终产位,并在最终产生长度为生长度为32位的比特位的比特串作为输出。串作为输出。F函数函数的计算过程可以用下的计算过程可以用下图表示。图表示。242024-3-192024-3-1924242024-3-1924.:f以前一轮迭代的结果Ri-1作输入,首先根据一个固定的扩展函数E(也称为E盒)“扩展”长度为48位的比特串,其中有16比特出现了两次(如右表所示)。252024-3-
20、192024-3-1925252024-3-1925262024-3-192024-3-192626262024-3-192024-3-192626E扩展例子扩展例子272024-3-192024-3-192727282024-3-192024-3-1928282024-3-1928.:函数F将扩展置换得到的48位输出与子密钥ki(48位)进行异或运算(按位模2加)。若子密钥48比特位为:001111011000111111001101001101110011111101001000,则操作如下:输入:1000000000010111111111101000000011010100000001
21、10密钥:001111011000111111001101001101110011111101001000输出:101111011001100000110011101101111110101101001110292024-3-192024-3-1929292024-3-1929.:以6比特为单位将第步异或得到的结果分为8个小分组,并将它们送入替代函数(即S盒)中进行替代运算。DES算法中共有算法中共有8个个S盒(见下页表)。每一个分组将对应于一个盒(见下页表)。每一个分组将对应于一个S盒进行替代运盒进行替代运算。具体替代方式为:将算。具体替代方式为:将S盒的盒的6位输入定义为位输入定义为a1a
22、2a3a4a5a6。将将a1a6组成一个组成一个2位二进位二进制数,对应着表中的制数,对应着表中的行行号,将号,将a2a3a4a5组成一个组成一个4位二进制数,对应表中的位二进制数,对应表中的列列号,号,交叉交叉点的数据就是该点的数据就是该S盒的输出。盒的输出。S盒是函数盒是函数f的核心所在的核心所在,同时,同时,也是也是DES算法的关键步骤算法的关键步骤。实际上除了。实际上除了S盒以外盒以外,DES的其他运算都是线性的,而的其他运算都是线性的,而S盒是非线性的,它决定了盒是非线性的,它决定了DES算法的安全性。算法的安全性。48位的比特串(分为位的比特串(分为8个个6位分组)在经过位分组)在
23、经过8个个S盒进行代替运算后,得到盒进行代替运算后,得到8个个4位的分组位的分组,它们重新组合在一起形成一个,它们重新组合在一起形成一个32位的比特串。这个比特串将进行下一步运算:位的比特串。这个比特串将进行下一步运算:P盒盒置换。置换。302024-3-192024-3-1930302024-3-1930312024-3-192024-3-1931312024-3-1931322024-3-192024-3-1932322024-3-1932 S盒作用盒作用-示例中,S盒输入的48比特位为101111 011001 100000 110011 101101 111110 101101 001
24、110,则分成8组,每组6位,则对应的S盒的行和列号如下:S盒 1 2 3 4 5 6 输入 101111 011001 100000 110011 101101 111110 行 3 1 2 3 3 2 列 7 12 0 9 5 15 输出 0111 0110 0011 0100 0010 0110 经过S盒作用,48比特位输入,输出32比特位为:0111 0110 0011 0100 0010 0110 1010 0001。332024-3-192024-3-1933332024-3-1933.:是将:是将S盒输出的盒输出的32位比位比特串根据固定的置换特串根据固定的置换P(也称为也称为P
25、盒盒)置换到相应的位置,它也称为直)置换到相应的位置,它也称为直接置换(接置换(straight permutation)()(右表给出了置换右表给出了置换P)。)。342024-3-192024-3-1934342024-3-1934352024-3-192024-3-193535352024-3-192024-3-193535-置换置换P P 16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 2584-从从S S盒出来后经置换盒出来后经置换P P重排:重排:输入:输入:01
26、11 0110 0011 0100 0010 0110 1010 0001 输出:输出:0100 0100 0010 0000 1001 1110 1001 1111 得到得到L1R1 经过经过P盒作用之后输出的盒作用之后输出的32比特位与左半部分比特位与左半部分L0=11111111 10111000 01110110 01010111的的32位进行位进行异或异或,得到右半部分的最终的,得到右半部分的最终的R1的的32位。位。左半部分的左半部分的32位为上一轮右半部分的位为上一轮右半部分的32位位L1=R0。362024-3-192024-3-193636362024-3-192024-3-
27、193636DES共是16轮 把上述过程重复15次,即共执行16轮372024-3-192024-3-1937372024-3-1937:逆(初始)置:逆(初始)置换是初始置换换是初始置换IP的逆置换的逆置换,记为,记为IP-1(如右表)。如右表)。在对在对16轮迭代的结果(轮迭代的结果(R16L16),),再使用逆(初再使用逆(初始)置换始)置换IP-1后,得到的后,得到的结果即可作为结果即可作为DES加密的加密的密文密文Y输出,即输出,即。382024-3-192024-3-1938382024-3-1938392024-3-192024-3-193939392024-3-192024-3
28、-193939IP逆置换逆置换即加密得到的即加密得到的64比特的密文。比特的密文。402024-3-192024-3-194040402024-3-192024-3-1940402024-3-1940 (2)DES解密算法:与其加密算法使用的算法过程相同。解密算法:与其加密算法使用的算法过程相同。(3)DES算法的子密钥的生成过程算法的子密钥的生成过程。下图是子密钥的生成过程下图是子密钥的生成过程:412024-3-192024-3-1941412024-3-1941422024-3-192024-3-1942422024-3-1942 输入的密钥输入的密钥K首先经过一个置换(称为置换选择首先
29、经过一个置换(称为置换选择1(PC-1,Permutation choice的缩写)见下表所示),进行重新排列。置换的结果(的缩写)见下表所示),进行重新排列。置换的结果()被当成两个)被当成两个28比特的量比特的量C0和和D0,其中其中C0是置换结果的前是置换结果的前28比特,而比特,而D0是后是后28比特。比特。432024-3-192024-3-1943432024-3-1943 在计算第在计算第i轮迭代所需的子密钥时轮迭代所需的子密钥时,首先对,首先对Ci-1和和Di-1进行循环左移,进行循环左移,分别得到分别得到Ci与与Di。如果如果i=1,2,9和和16,左移循环的次数等于左移循环
30、的次数等于1,否则循环,否则循环2次,这些经过循环移位的值作为下次,这些经过循环移位的值作为下一次循环的输入。一次循环的输入。然后将以作然后将以作CiDi作作为另外一个由为另外一个由DES算法固定置换选算法固定置换选择(称为置换选择择(称为置换选择2,PC-2见右表所见右表所示)的输入示)的输入,所得到的置换结果即,所得到的置换结果即为第为第i次迭代所需的子密钥次迭代所需的子密钥ki。442024-3-192024-3-194444442024-3-192024-3-194444例:已知明文m=computer,密钥k=program,用ASCII码表示为:m=01100011 0110111
31、1 01101101 01110000 01110101 01110100 01100101 01110010-56 位有效密钥 k=01110000 01110010 01101111 01100111 01110010 01100001 01101101 因为k只有56位,必须插入第8,16,24,32,40,48,56,64位奇偶校验位,合成64位。而这8位对加密过程没有影响。452024-3-192024-3-194545ASCII 字母对照表字母对照表abcdefghijklm979899100101102103104105106107108109nopqrstuvwxyz11011
32、1112113114115116117118119120121122-明文m=computerc9701100011o11101101111m10901101101p11201110000u11701110101t11601110100e10101100101r11401110010-密钥k=programp11201110000r11401110010o11101101111g10301100111r11401110010a9701100001m10901101101462024-3-192024-3-194646 K0 变换为变换为K156位有效密钥 k=0111000,0011100,1
33、001101,1110110,0111011,1001001,1000010,11011010 1 1 1 0 0 0 00 0 1 1 1 0 0 01 0 0 1 1 0 1 11 1 1 0 1 1 0 00 1 1 1 0 1 1 01 0 0 1 0 0 1 01 0 0 0 0 1 0 11 1 0 1 1 0 1 0密钥密钥k通过通过PC-1得到得到 1 列列 2 列列 3列列 4列列C0:1110110 0100110 0100011 0111011 5 列列 6 列列 7列列 8列列 D0:1011010 0010110 0010001 1100111再各自左移一位,再各自左
34、移一位,C1:1101100 1001100 1000110 1110111D1:0110100 0101100 0100011 1001111472024-3-192024-3-194747C1:1101100 1001100 1000110 1110111D1:0110100 0101100 0100011 100111114 17 11 24 1 5 3 2814 17 11 24 1 5 3 2815 6 21 10 23 19 12 415 6 21 10 23 19 12 426 8 16 7 27 20 13 226 8 16 7 27 20 13 241 52 31 37 47
35、 55 30 4041 52 31 37 47 55 30 4051 45 33 48 44 49 39 5651 45 33 48 44 49 39 5634 53 46 42 50 36 29 3234 53 46 42 50 36 29 32-通过PC-2得到48位KS1:001111011000111111001101001101110011111101001000K0 变换为变换为K1482024-3-192024-3-194848 明明文文IP置置换换明文m=computerc9701100011o11101101111m10901101101p11201110000u117011
36、10101t11601110100e10101100101r1140111001058 50 42 34 26 18 10 260 52 44 36 28 20 12 462 54 46 38 30 22 14 664 56 48 40 32 24 16 857 49 41 33 25 17 9 159 51 43 35 27 19 11 361 53 45 37 29 21 13 563 55 47 39 31 23 15 71 2 3 4 5 6 7 89 10 11 12 13 14 15 1617 18 19 20 21 22 23 2425 26 27 28 29 30 31 323
37、3 34 35 36 37 38 39 4041 42 43 44 45 46 47 4849 50 51 52 53 54 55 5657 58 59 60 61 62 63 641 1 1 1 1 1 1 11 0 1 1 1 0 0 00 1 1 1 0 1 1 00 1 0 1 0 1 1 10 0 0 0 0 0 0 01 1 1 1 1 1 1 10 0 0 0 0 1 1 01 0 0 0 0 0 1 1L0R0492024-3-192024-3-1949491 0 0 0 0 00 0 0 0 0 10 1 1 1 1 11 1 1 1 1 01 0 0 0 0 00 0 1
38、1 0 10 1 0 0 0 00 0 0 1 1 0m经过IP置换后得到L0=11111111101110000111011001010111R0=0000000011111111000001101000001100000000111111110000011010000011R0(32位)经位)经E作用膨胀为作用膨胀为48位,位,100000 000001 011111 111110 100000 001101 010000 000110502024-3-192024-3-195050 S盒的选择盒的选择R0(32位)经E作用膨胀为48位,10000000000101111111111010
39、0000001101010000000110再和k1作异或运算得到(分成8组)ExorKS:101111011001100000110011101101111110101101001110S盒S1S2S3S4S5S6S7S8行:31233230列:7120961567查表:761342610101110110110101000010011010100001KS1:001111011000111111001101001101110011111101001000512024-3-192024-3-195151-通过S盒后输出位32比特,Sbox:标号:12345678910111213141516
40、1718192021220111011011010100001001标号:232425262728293031321010100001 P盒置换盒置换16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10 2 8 24 14 32 27 3 919 13 30 6 22 11 4 25S盒的输出又经过P置换得到P:01000100001000011001111110011011522024-3-192024-3-195252 一轮迭代之后结果一轮迭代之后结果第一迭代的结果是:L1:00000000111111110000011010000011R1:10111
41、011100110011110100111001100S盒的输出又经过P置换得到P:01000100001000011001111110011011532024-3-192024-3-1953532024-3-19533.DES的安全性的安全性 542024-3-192024-3-1954542024-3-1954552024-3-192024-3-1955552024-3-1955562024-3-192024-3-1956562024-3-1956DES还存在还存在12个半弱密钥,详见后面参考资料个半弱密钥,详见后面参考资料572024-3-192024-3-1957572024-3-19
42、57(3)DES的56位有效密钥无法满足安全性要求582024-3-192024-3-195858(1)二重DES 592024-3-192024-3-195959592024-3-192024-3-1959592024-3-1959(2)三重)三重DES(有有4种形式)种形式)DES-EEE3模式模式602024-3-192024-3-1960602024-3-1960 DES-EDE3模式模式612024-3-192024-3-1961612024-3-1961 DES-EEE2模式模式622024-3-192024-3-1962622024-3-1962 DES-EDE2模式模式 三个密钥的三重三个密钥的三重DESDES已在因特网的许多应用(如已在因特网的许多应用(如PGPPGP和和S/MIMES/MIME)中被采用。中被采用。