资源预览内容
第1页 / 共33页
第2页 / 共33页
第3页 / 共33页
第4页 / 共33页
第5页 / 共33页
第6页 / 共33页
第7页 / 共33页
第8页 / 共33页
第9页 / 共33页
第10页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
密码学基础课程设计主题: AES RSA SHA1 加解密 学院: 班级: 学号: 姓名: 日期: 2012/12/30 成绩: 概述 .21.对称加密算法 AES .2算法基本原理 .2算法流程图 .4算法测试结果 .6程序清单 .62.非对称密码算法 RSA .18算法基本原理 .18算法流程图 .20算法测试结果 .21程序清单 .213.散列算法 SHA1 .23算法基本原理 .23算法流程图 .25算法测试结果 .26程序清单 .264.设计心得 .32概述大作业目的1) 掌握密码学基础课程的主要知识点2) 掌握常用的密码学算法机理与实现大作业内容对称加密算法(AES) 、非对称密码算法(RSA) 、散列算法(SHA1)1.对称加密算法 AES算法基本原理AES 算法的主要数学基础是抽象代数,其中算法中的许多运算是按单字节(8bits)和 4 字节(32bits)定义的,单字节可看成有限域 GF(28)中的一个元素,而 4 字节则可以看成系数在 GF(28)中并且次数小于 4 的多项式(亦可以理解为:GF(256 4)),单字节上的运算有两种:有限域 GF(28)上一个 8 次不可约多项式的模加、点乘(为方便代码实现,推出了 X 乘的概念),其中,这个不可约多项式为:m(x)= x 8+x4+x3+x+1,类似地,4 字节运算也分为两种:模加、乘法(为方便代码实现,推出了模乘的概念),而此时使用的模取 M(x)=x4+1,由于 x4+1=( x2+1)( x2+1)= ( x+1) ( x+1) ( x+1) ( x+1),即非不可约,导致非 0 多项式乘法逆元(逆元求取主要用到了欧几里德(Euclid )算法)不一定存在,所以在 AES 算法中,只限于乘一个固定的有逆元的多项式:a(x)=03x 3+01x2+01x+02。图中左边是加密流程,右边是解密流程,其中,Plaintext 为明文,Ciphertext 为密文,密钥长度可变,可指定为 128、 192、256 比特,不同密钥长度决定了加解密算法的轮数(128 位:10 轮, 192 位:12 轮,256 位:14 轮),算法征集之初,6 轮迭代便可抵抗当时世界上已知的所有攻击,AES 标准中至少留了 4 轮余量,按照这种说法,可以推知轮数越多,AES破解难度越大,也就是密钥越长越安全,所以今年 8 月份有人说 256bits 密钥长度的 AES 算法被破解,而 128bits 未被破解是没有根据的。理解 AES 需要知道以下两个概念:状态:算法中间的结果也需要分组,称之为状态,状态可以用以字节为元素的矩阵阵列表示,该阵列有 4 行,列数 Nb 为分组长度除 32;种子密钥:以字节为元素的矩阵阵列描述,阵列为 4 行,列数 Nk 为密钥长度除 32,其中根据种子密钥,可以推导出各轮子密钥 w , ,此过程亦称作密钥扩展,针对不同密钥长度的密钥扩展算法可以参照阅读 AES 算法标准发布文档。Sbox 如下:Inverse s_box:算法流程图图中左边是加密流程,右边是解密流程,其中,Plaintext 为明文,Ciphertext 为密文,密钥长度可变,可指定为 128、 192、256 比特,不同密钥长度决定了加解密算法的轮数(128 位:10 轮, 192 位:12 轮,256 位:14 轮),算法征集之初,6 轮迭代便可抵抗当时世界上已知的所有攻击,AES 标准中至少留了 4 轮余量,按照这种说法,可以推知轮数越多,AES破解难度越大,也就是密钥越长越安全,所以今年 8 月份有人说 256bits 密钥长度的 AES 算法被破解,而 128bits 未被破解是没有根据的。理解 AES 需要知道以下两个概念:状态:算法中间的结果也需要分组,称之为状态,状态可以用以字节为元素的矩阵阵列表示,该阵列有 4 行,列数 Nb 为分组长度除 32;种子密钥:以字节为元素的矩阵阵列描述,阵列为 4 行,列数 Nk 为密钥长度除 32,其中根据种子密钥,可以推导出各轮子密钥 w , ,此过程亦称作密钥扩展,针对不同密钥长度的密钥扩展算法可以参照阅读 AES 算法标准发布文档。AES 的加密算法AES 的解密算法算法测试结果测试数据为书本 p119 中数据程序清单#include #include / AES only supports Nb=4#define Nb 4 / number of columns in the State & expanded key#define Nk 4 / number of columns in a key#define Nr 10 / number of rounds in encryptionunsigned char Sbox256 = / forward s-box0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76,0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0,0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75,0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84,0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8,0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2,0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb,0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79,0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a,0x70, 0x3e, 0xb5, 0x66, 0x
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号