AES高级加密标准.doc

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
AES高级加密标准

发布日期 : 12/6/2004 | 更新日期 : 12/6/2004 James McCaffrey 本文假设您熟悉 C# 和位操作。 下载本文的代码: AES.exe (143KB) 摘要 高级加密标准 (AES) 是美国标准与技术研究院针对电子数据的加密所制定的规范,它将要成为公认的数字信息(包括财务数据、电信数据和政府数据)加密方法。本文概述了 AES 并解释了它所使用的算法。本文还包括一个完整的 C# 实现以及 .NET 数据加密的示例。在阅读完本文后,您将能够使用 AES 对数据进行加密,测试基于 AES 的软件,并在自己的系统中使用 AES 加密方法。 本页内容 AES 算法概述 GF(28) 中的域加法和乘法 密钥扩展 C# 中的 AES 类构造函数 C# 中的 AES Cipher 方法 C# 中的 AES InvCipher 方法 使用 AES 类 实现替换方法 小结 美国标准与技术研究院 (NIST) 于 2002 年 5 月 26 日制定了新的高级加密标准 (AES) 规范。在本文中,我将提供用 C# 编写的 AES 的工作实现,并将完整解释到底什么是 AES 以及代码如何工作。我将向您展示如何使用 AES 来加密数据,并扩展此处给出的代码以开发商用质量的 AES 类。我还将解释如何以及为何将 AES 加密合并到软件系统中,以及如何测试基于 AES 的软件。 请注意,本文中提供的代码以及基于本文的任何其他实现都受制于适用的联邦加密模块出口控制(有关确切的规章,请参阅 Commercial Encryption Export Controls)。 AES 是一种可用来保护电子数据的新型加密算法。特别是,AES 是可以使用 128、192 和 256 位密钥的迭代式对称密钥块密码,并且可以对 128 位(16 个字节)的数据块进行加密和解密。与使用密钥对的公钥密码不同的是,对称密钥密码使用同一个密钥来对数据进行加密和解密。由块密码返回的加密数据与输入数据具有相同的位数。迭代式密码使用循环结构来针对输入数据反复执行排列和置换运算。图 1 显示了操作中的 AES,它使用 192 位密钥对 16 个字节的数据块先后进行加密和解密。 图 1 某个数据 AES 是旧式数据加密标准 (DES) 的后续标准。DES 于 1977 年被批准为联邦标准,它在 1998 年之前一直是可行的,从那时起,硬件、软件和密码分析学理论的组合发展允许将用 DES 加密的消息在 56 小时内解密。在那以后,已经针对用 DES 加密的数据成功进行了许多其他攻击,现在,DES 已过了其有用的生存期。 在 1999 年下半年,由研究员 Joan Daemen 和 Vincent Rijmen 创建的 Rijndael(读为“rain doll”)算法被 NIST 选作最符合安全性、实现效率、多功能性和简单性等设计准则的提议。尽管 AES 和 Rijndael 这两个术语有时会互换使用,但它们截然不同。AES 正日益成为加密各种形式的电子数据的实际标准,这些数据包括用于商业应用程序(如银行和金融交易、电信以及私有和联邦信息)中的数据。 AES 算法概述 AES 算法基于排列和置换运算。排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。AES 使用几种不同的方法来执行排列和置换运算。为了说明这些方法,让我们演示一个具体的示例,该示例使用图 1 中显示的数据执行 AES 加密。 将使用索引数组对下面的 128 位值进行加密: 00 11 22 33 44 55 66 77 88 99 aa bb cc dd ee ff 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 192 位密钥值是: 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 图 2 Sbox在 AES 构造函数被调用时,会初始化加密方法将使用的两个表。第一个表是名为 Sbox 的置换盒。它是一个 16 ?— 16 矩阵。图 2 显示了 Sbox 的前五行和前五列。在幕后,加密例程提取密钥数组,并使用它来生成图 3 中所示的名为 w[] 的“密钥次序表”。 图 3 密钥次序表在 w[] 中,前 Nk (6) 行基于初始密钥值(0x00 到 0x17),其余各行是从种子密钥生成的。变量 Nk 用 32 位字来表示种子密钥的大小。在我以后介绍 AES 实现时,您将确切了解 w[]

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档