文档库 最新最全的文档下载
当前位置:文档库 › 加解密算法实验报告

加解密算法实验报告

加解密算法实验报告
加解密算法实验报告

实验加/解密算法

实验日期:__年__月_日实验成绩:___________

1.实验目的:

(1)数据机密性;

(2)数据完整性;

(3)不可抵赖性

2.实验环境(设备、仪器、网络):

(1)虚拟机

(2)加密工具

(3)Windows系统环境

3.实验内容(实验方案、实验步骤、测量数据及处理等):

3.1实验方案

加密方和解密方利用RSA加密算法分别生成一对公钥和私钥,并告知对方自己的公钥。

加密方实验流程如图3-1所示:

图3-1

将加密后的明文和签名发送给解密方。

解密方实验流程如图3-2所示:

图3-2

将明文同样进行hash运算得出摘要,与验证签名后得出的摘要相比较,如果相同则可以证明明文没有被破坏或改变,同时也可使确定是加密方发送的信息。

3.2实验过程

加密方

(1)加密方通过RSA算法得出公钥(e,n)=(101,253),私钥(d,n)=(61,253);

(2)编辑明文为we are in xinjiang,and you?

(3)在加密工具的环境中利用解密方的公钥对明文进行加密,如图3-3所示:

图3-3

(4)在加密工具中利用MD5对明文进行hash运算,如图3-4所示:

图3-4

(5)用加密方的私钥对生成的摘要进行签名,如图3-5所示:

图3-5

(6)将签名与密文发送给解密方。

解密方

(1)通过RSA算法得出公钥(e,n)=(1003,2173),私钥(d,n)=(1827,2173) (2)利用解密方的私钥对密文解密,如图3-6所示:

图3-6

(3)验证签名,将加密方发送的签名用加密方的公钥解密,如图3-7所示:

图3-7

(4)把解密的明文利用MD5进行hash运算,并与验证签名得出摘要相比较,一致则可以知道明文没有被篡改且完整。

4.实验结果与分析:

(1)使用RSA算法可以方便对密钥的管理,使得密钥更加安全,实现了数据的机密性。

(2)解密方可以用加密方的公钥对签名进行验证,则可以确定消息是来自加密方,实现了数据的不可抵赖性;

(3)将验证签名得出的摘要与利用MD5对明文进行hash运算得出的摘要相符,可以确

定明文没有被改变,实现了数据的完整性。

数值稳定性验证实验报告

实验课程:数值计算方法专业:数学与应用数学班级:08070141 学号:37 姓名:汪鹏飞 中北大学理学院

实验1 赛德尔迭代法 【实验目的】 熟悉用塞德尔迭代法解线性方程组 【实验内容】 1.了解MATLAB 语言的用法 2.用塞德尔迭代法解下列线性方程组 1234123412341234 54 1012581034 x x x x x x x x x x x x x x x x ---=-??-+--=?? --+-=??---+=? 【实验所使用的仪器设备与软件平台】 计算机,MATLAB7.0 【实验方法与步骤】 1.先找出系数矩阵A ,将前面没有算过的x j 分别和矩阵的(,)A i j 相乘,然后将累加的和赋值给sum ,即(),j s u m s u m A i j x =+?.算 出()/(,) i i x b sum A i i =-,依次循环,算出所有的i x 。 2.若i x 前后两次之差的绝对值小于所给的误差限ε,则输出i x .否则重复以上过程,直到满足误差条件为止. 【实验结果】 (A 是系数矩阵,b 是右边向量,x 是迭代初值,ep 是误差限) function y=seidel(A,b,x,ep) n=length(b); er=1; k=0; while er>=ep

k=k+1; for i=[1:1:n] q=x(i); sum=0; for j=[1:1:n] if j~=i sum=sum+A(i,j)*x(j); end end x(i)=(b(i)-sum)/A(i,i); er=abs(q-x(i)); end end fprintf('迭代次数k=%d\n',k) disp(x') 【结果分析与讨论】 >> A=[5 -1 -1 -1;-1 10 -1 -1;-1 -1 5 -1;-1 -1 -1 10]; b=[-4 12 8 34]; seidel(A,b,[0 0 0 0],1e-3) 迭代次数k=6 0.99897849430002 1.99958456867649 2.99953139743435 3.99980944604109

DES算法实验报告

DES算法实验报告 姓名:学号:班级: 一、实验环境 1.硬件配置:处理器(英特尔Pentium双核E5400 @ 2.70GHZ 内存:2G) 2.使用软件: ⑴操作系统:Windows XP 专业版32位SP3(DirectX 9.0C) ⑵软件工具:Microsoft Visual C++ 6.0 二、实验涉及的相关概念或基本原理 1、加密原理 DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位,产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 个循环,使用异或,置换,代换,移位操作四种基本运算。 三、实验内容 1、关键代码 ⑴子密钥产生

⑵F函数以及加密16轮迭代 2、DES加密算法的描述及流程图 ⑴子密钥产生 在DES算法中,每一轮迭代都要使用一个子密钥,子密钥是从用户输入的初始密钥产生的。K是长度为64位的比特串,其中56位是密钥,8位是奇偶校验位,分布在8,16,24,32,40,48,56,64比特位上,可在8位中检查单个错误。在密钥编排计算中只用56位,不包括这8位。子密钥生成大致分为:置换选择1(PC-1)、循环左移、置换选择2(PC-2)等变换,分别产生16个子密钥。 DES解密算法与加密算法是相同的,只是子密钥的使用次序相反。 ⑵DES加密算法 DES密码算法采用Feistel密码的S-P网络结构,其特点是:加密和解密使用同一算法、

数值分析—龙贝格算法

数值分析 实 验 报 告 专业:信息与计算科学 班级: 10***班 学号: 1008060**** 姓名: ******

实验目的: 用龙贝格积分算法进行积分计算。 算法要求: 龙贝格积分利用外推方法,提高了计算精度,加快了收敛速度。 1--4R R R R 1-j 1-j 1-k 1-j k 1-j k j k ,,,,+= ,k=2,3,… 对每一个k ,j 从2做到k ,一直做到|R R 1-k 1-k k k -,,| 小于给定控制精 度时停止计算。 其中: T R h k 1k =,(复化梯形求积公式),2h 1-k k a -b = 程序代码: #include #include #define M 10 static float a, b, T[M], S[M], C[M], R[M]; float f(float x) { float y; if(0.0 == x) { x = 0.0000001f; } y = (float)1/sqrt(1-x*x); return y; } int p(int n) { int i=0,t=1;

while(t!=n) { t*=2; ++i; } return i; } float t(int n) { float g,h,q=0; if(1==n) { h = (float)fabs(b-a); q = (f(a)+f(b))*h/2; } else { float x = a; g = 0; h = (float)fabs(b-a)*2/n; x = x+h/2; while(x

网络安全常见的四种加密解密算法

package mima; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner; public class Mainer { StringBuffer MStr = new StringBuffer(""); // 加密字符串 StringBuffer CStr = new StringBuffer(""); // 解密字符串 public static void main(String[] args) { System.out.print("请输入密钥:"); Scanner s = new Scanner(System.in); int key = s.nextInt() % 26; // %26的意义是获取密钥的偏移值 Mainer ks = new Mainer(); ks.E(key); // 加密 ks.D(key); // 解密 } /** * 加密公式 */ void E(int k) { try { System.out.println("请输入一段明文:"); char b[]; BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in)); String str2 = br2.readLine(); b = str2.toCharArray(); char ch = ' '; for (int i = 0; i < str2.length(); i++) { if (b[i] >= 'a' && b[i] <= 'z') { ch = (char) ((b[i] - 'a' + k) % 26 + 'a'); } if(b[i] >= 'A' && b[i] <= 'Z'){ ch = (char) ((b[i] - 'A' + k) % 26 + 'A'); } if(b[i]>='0'&&b[i]<='9')

RSA算法实验报告

实验二非对称密码算法RSA 一、实验目的 通过实际编程了解非对称密码算法RSA的加密和解密过程,加深对非对称密码算法的认识。 二、实验环境 运行Windows或Linux操作系统的PC机,具有JDK1.6版本的Java语言编译环境。 三、实验内容和步骤 1. 对RSA算法的理解 RSA算法(公开密钥算法)的原理: (1).选择两个大的素数p和q(典型情况下为1024位) (2).计算n = p * q 和z =(p-1)*(q-1). (3).选择一个与z互素的数,将它称为d (4).找到e,使其满足e*d = 1 mod z 提前计算出这些参数以后,我们就可以开始执行加密了。首先将明文分成块,使得每个明文消息P落在间隔0*P

实验报告_密码学

信息安全实验报告 学号: 学生姓名: 班级:

实验三密码学实验 一、古典密码算法实验 一、实验目的 通过编程实现替代密码算法和置换密码算法,加深对古典密码体制的了解,为深入学习密码学奠定基础。 二、编译环境 运行windows 或linux 操作系统的PC 机,具有gcc(linux)、VC (windows)等C语言编译环境。 三、实验原理 古典密码算法历史上曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密。它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密。下面介绍两种常见的具有代表性的古典密码算法,以帮助读者对密码算法建立一个初步的印象。 1.替代密码 替代密码算法的原理是使用替代法进行加密,就是将明文中的字符用其它字符替代后形成密文。例如:明文字母a、b、c、d ,用D、E、F、G做对应替换后形成密文。 替代密码包括多种类型,如单表替代密码、多明码替代密码、多字母替代密码、多表替代密码等。下面我们介绍一种典型的单表替代密码,恺撒(caesar)密码,又叫循环移位密码。它的加密方法,就是将明文中的每个字母用此字符在字母表中后面第k个字母替代。它的加密过程可以表示为下面的函数:E(m)=(m+k) mod n 其中:m 为明文字母在字母表中的位置数;n 为字母表中的字母个数;k 为密钥;E(m)为密文字母在字母表中对应的位置数。例如,对于明文字母H,其在字母表中的位置数为8,设k=4,则按照上式计算出来的密文为L:E(8) = (m+k) mod n = (8+4) mod 26 = 12 = L

2.置换密码 置换密码算法的原理是不改变明文字符,只将字符在明文中的排列顺序改 变,从而实现明文信息的加密。置换密码有时又称为换位密码。 矩阵换位法是实现置换密码的一种常用方法。它将明文中的字母按照给的 顺序安排在一个矩阵中,然后用根据密钥提供的顺序重新组合矩阵中字母,从而 形成密文。例如,明文为attack begins at five,密钥为cipher,将明文按照每行 6 列的形式排在矩阵中,形成如下形式: a t t a c k b e g i n s a t f i v e 根据密钥cipher中各字母在字母表中出现的先后顺序,给定一个置换: 1 2 3 4 5 6 f = 1 4 5 3 2 6 根据上面的置换,将原有矩阵中的字母按照第 1 列,第 4 列,第 5 列,第 3 列, 第2列,第 6 列的顺序排列,则有下面形式: a a c t t k b i n g e s a I v f t e 从而得到密文:abatgftetcnvaiikse 其解密的过程是根据密钥的字母数作为列数,将密文按照列、行的顺序写出,再根据由密钥给出的矩阵置换产生新的矩阵,从而恢复明文。 四、实验内容和步骤 1、根据实验原理部分对替代密码算法的介绍,自己创建明文信息,并选择 一个密钥k,编写替代密码算法的实现程序,实现加密和解密操作。 2、根据实验原理部分对置换密码算法的介绍,自己创建明文信息,并选择一个密钥,编写置换密码算法的实现程序,实现加密和解密操作。 五、总结与思考 记录程序调试过程中出现的问题,分析其原因并找出解决方法。记录最终实现的程序执行结果。

DES加密算法与解密(带流程图)

一、DES加密及解密算法程序源代码: #include using namespace std; const static char IP_Table[] = { //IP_T able置换58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4, 62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8, 57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3, 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7 }; const static char Final_Table[] = { //最终置换40, 8, 48, 16, 56, 24, 64, 32, 39, 7, 47, 15, 55, 23, 63, 31, 38, 6, 46, 14, 54, 22, 62, 30, 37, 5, 45, 13, 53, 21, 61, 29, 36, 4, 44, 12, 52, 20, 60, 28, 35, 3, 43, 11, 51, 19, 59, 27, 34, 2, 42, 10, 50, 18, 58, 26,

33, 1, 41, 9, 49, 17, 57, 25 }; const static char S_Box[8][64] = { //s_box /* S1 */ {14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7, 0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8, 4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0, 15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13}, /* S2 */ {15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10, 3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5, 0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15, 13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9}, /* S3 */ {10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8, 13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1, 13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7, 1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12}, /* S4 */ {7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15, 13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9,

数据加密实验报告

实验报告 课程:计算机保密_ _ 实验名称:数据的加密与解密_ _ 院系(部):计科院_ _ 专业班级:计科11001班_ _ 学号: 201003647_ _ 实验日期: 2013-4-25_ _ 姓名: _刘雄 _ 报告日期: _2013-5-1 _ 报告评分:教师签字:

一. 实验名称 数据加密与解密 二.运行环境 Windows XP系统 IE浏览器 三.实验目的 熟悉加密解密的处理过程,了解基本的加密解密算法。尝试编制基本的加密解密程序。掌握信息认证技术。 四.实验内容及步骤 1、安装运行常用的加解密软件。 2、掌握加解密软件的实际运用。 *3、编写凯撒密码实现、维吉尼亚表加密等置换和替换加解密程序。 4、掌握信息认证的方法及完整性认证。 (1)安装运行常用的加解密软件,掌握加解密软件的实际运用 任务一:通过安装运行加密解密软件(Apocalypso.exe;RSATool.exe;SWriter.exe等(参见:实验一指导))的实际运用,了解并掌握对称密码体系DES、IDEA、AES等算法,及非对称密码体制RSA等算法实施加密加密的原理及技术。 ?DES:加密解密是一种分组加密算法,输入的明文为64位,密钥为56位,生成的密文为64位。 ?BlowFish:算法用来加密64Bit长度的字符串或文件和文件夹加密软件。 ?Gost(Gosudarstvennyi Standard):算法是一种由前苏联设计的类似DES算法的分组密码算法。它是一个64位分组及256位密钥的采用32轮简单迭代型加密算法. ?IDEA:国际数据加密算法:使用128 位密钥提供非常强的安全性; ?Rijndael:是带有可变块长和可变密钥长度的迭代块密码(AES 算法)。块长和密钥长度可以分别指定成128、192 或256 位。 ?MISTY1:它用128位密钥对64位数据进行不确定轮回的加密。文档分为两部分:密钥产生部分和数据随机化部分。 ?Twofish:同Blowfish一样,Twofish使用分组加密机制。它使用任何长度为256比特的单个密钥,对如智能卡的微处理器和嵌入在硬件中运行的软件很有效。它允许使用者调节加密速度,密钥安装时间,和编码大小来平衡性能。 ?Cast-256:AES 算法的一种。 (同学们也可自己下载相应的加解密软件,应用并分析加解密过程) 任务二:下载带MD5验证码的软件(如:https://www.wendangku.net/doc/6f17934707.html,/downloads/installer/下载(MySQL):Windows (x86, 32-bit), MSI Installer 5.6.11、1.5M;MD5码: 20f788b009a7af437ff4abce8fb3a7d1),使用MD5Verify工具对刚下载的软件生成信息摘要,并与原来的MD5码比较以确定所下载软件的完整性。或用两款不同的MD5软件对同一文件提取信息摘要,而后比较是否一致,由此可进行文件的完整性认证。

数值分析龙贝格实验报告

实验三 龙贝格方法 【实验类型】 验证性 【实验学时】 2学时 【实验内容】 1.理解龙贝格方法的基本思路 2.用龙贝格方法设计算法,编程求解一个数值积分的问题。 【实验前的预备知识】 1.计算机基础知识2.熟悉编程基本思想3.熟悉常见数学函数; 【实验方法或步骤】 龙贝格方法的基本思路龙贝格方法是在积分区间逐次二分的过程中,通过 对梯形之值进行加速处理,从而获得高精度的积分值。 1. 龙贝格方法的算法 步骤1 准备初值()f a 和()f b ,用梯形计算公式计算出积分近似值 ()()12b a T f a f b -=+??? ? 步骤2 按区间逐次分半计算梯形公式的积分近似值令 2i b a h -=,0,1,2,...i =计算12102122n n n i i h T T f x -+=??=+ ??? ∑,2i n = 步骤3 按下面的公式积分梯形公式:()223n n n n T T S T -=+ 辛普生公式:()2215n n n n S S C S -=+ 龙贝格公式:()2263n n n n C C R C -=+ 步骤4 精度控制 当2n n R R ε-<,(ε为精度)时,终止计算,并取2n R 为近似值否则将步长折 半,转步骤2。

[实验程序] #include #include # define Precision 0.00001//积分精度要求 # define e 2.71828183 #define MAXRepeat 10 //最大允许重复 double function(double x)//被积函数 { double s; s=2*pow(e,-x)/sqrt(3.1415926); return s; } double Romberg(double a,double b,double f(double x)) { int m,n,k; double y[MAXRepeat],h,ep,p,xk,s,q; h=b-a; y[0]=h*(f(a)+f(b))/2.0;//计算T`1`(h)=1/2(b-a)(f(a)+f(b)); m=1; n=1; ep=Precision+1; while((ep>=Precision)&&(m

AES算法加解密原理及安全性分析

AES算法加解密原理及安全性分析 刘帅卿 一、AES算法简介 AES算法是高级加密标准算法的简称,其英文名称为Advanced Encryption Standard。该加密标准的出现是因为随着对称密码的发展,以前使用的DES(Data Encryption Standard数据加密标准)算法由于密钥长度较小(56位),已经不适应当今数据加密安全性的要求,因此后来由Joan Daeman和Vincent Rijmen提交的Rijndael算法被提议为AES的最终算法。 AES是一个迭代的、对称密钥分组的密码,它可以使用128、192和256位密钥,并且用128位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换(permutations)和替换(substitutions)输入数据。加之算法本身复杂的加密过程使得该算法成为数据加密领域的主流。 二、AES算法的基本概念 1、有限域(GF) 由于AES算法中的所有运算都是在有限域当中进行的,所以在理解和实现该算法之前先得打好有限域这一基石才行。通常的数学运算都是在实数域中进行,而AES算法则是在有限域中进行,我们可以将有限域看成是有确定边界范围的正整数集合,在该集合当中,任意两个元素之间的运算结果都仍然落在该集合当中,也即满足运算封闭性。 那么如何才能保证这样的“有限性”(也即封闭性)呢? GF(2w)被称之为伽罗华域,是有限域的典型代表。随着w(=4,8,16,…)的取值不同所形成的有限域范围也不同。AES算法中引入了GF域当中对数学运算的基本定义:将两数的加减法定义为两者的异或运算;将两数的乘法定义为多

AES加密解密实验报告

信息安全工程课程 实验报告 AES加密解密的实现 课程名称:信息安全工程 学生姓名:黄小菲 学生学号: 3112041006 专业班级:系统工程2038班 任课教师:蔡忠闽 2012年11月22日

目录 1.背景 (1) 1.1 Rijndael密码的设计标准: (1) 1.2 设计思想 (1) 2.系统设计 (2) 2.1系统主要目标 (2) 2.2功能模块与系统结构 (2) 2.2.1字节替换SubByte (2) 2.2.2行移位ShiftRow (2) 2.2.3 列混合MixColumn (3) 2.2.4 轮密钥加AddRoundKey (4) 2.2.5 逆字节替换 (4) 2.2.6逆行移位InvShiftRow (4) 2.2.7 逆列混淆 (4) 3 加密模式 (5) 3.1 电子密码本ECB模式 (5) 3.2加密块链模式CBC模式 (6) 4 系统功能程序设计 (8) 4.1基本加密部分 (8) 4.1.1字节替换 (8) 4.1.2行移位 (8) 4.1.3列混合 (9) 4.1.4轮密钥加 (9) 4.1.5密钥扩展 (10) 4.1.6逆字节替换 (11) 4.1.7逆行移位 (11) 4.1.8逆列混合 (12) 4.1.9加密 (12) 4.1.10解密 (13) 5 实验结果 (14) 5.1 需要加密文件 (14) 5.2 实验加密解密结果 (15) 6 参考资料 (16)

1.背景 AES,密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。AES 有一个固定的128位的块大小和128,192或256位大小的密钥大小。Rijndael算法汇聚了安全性、效率高、易实现性和灵活性等优点,是一种较DES更好的算法。 该算法为比利时密码学家Joan Daemen和Vincent Rijmen所设计,结合两位作者的名字,以Rijndael之命名之,投稿高级加密标准的甄选流程。(Rijdael的发音近于"Rhine doll"。)AES在软体及硬件上都能快速地加解密,相对来说较易于实作,且只需要很少的记忆体。作为一个新的加密标准,目前正被部署应用到更广大的范围. 1.1 Rijndael密码的设计标准: ①抵抗所有已知的攻击。 ②在多个平台上速度快,编码紧凑。 ③设计简单。 当前的大多数分组密码,其轮函数是Feistel结构。 Rijndael没有这种结构。 Rijndael轮函数是由3个不同的可逆均匀变换 1.2 设计思想 ?分组和密钥长度可变,各自可独立指定为128、192、256比特。 ?状态 ?算法中间的结果也需要分组,称之为状态,状态可以用以字节为元素的矩阵 阵列表示,该阵列有4行,列数N b为分组长度除32 ?种子密钥 ?以字节为元素的矩阵阵列描述,阵列为4行,列数N k为密钥长度除32

Romberg龙贝格算法实验报告.

Romberg龙贝格算法实验报告 2017-08-09 课程实验报告 课程名称: 专业班级: CS1306班学号: U201314967 姓名:段沛云指导教师:报 告日期: 计算机科学与技术学院 目录 1 实验目的 (1) 2 实验原理 (1) 3 算法设计与流程框图 (2) 4 源程序 (4) 5 程序运行 (7) 6 结果分析 (7) 7 实验体会 (7) 1 实验目的 掌握Romberg公式的用法,适用范围及精度,熟悉Romberg算法的流程,并能够设计算法计算积分 31 得到结果并输出。 1x 2 实验原理 2.1 取k=0,h=b-a,求T0= 数)。 2.2 求梯形值T0( b-a

),即按递推公式(4.1)计算T0。 k 2 h [f(a)+f(b)],令1→k,(k记区间[a,b]的二分次2 2.3 求加速值,按公式(4.12)逐个求出T表的第k行其余各元素Tj(k-j) (j=1,2,….k)。 2.4 若|Tk+1-Tk| n-1 11T2n=[Tn+hn∑f(xi+)] 22i=0 1 Sn=T2n+(T2n-Tn) 31 Cn=S2n+(S2n-Sn) 151 Rn=C2n+(C2n-Cn) 63 3 算法设计与流程框图 算法设计:(先假定所求积分二分最大次数次数为20) 3.1 先求T[k][0] 3.2 再由公式T (k)m 4m(k+1)1)=mTm-1-mTm(k-1(k=1,2,) 求T[i][j] 4-14-1 3.3 在求出的同时比较T[k][k]与T[k-1][k-1]的大小,如果二者之差的绝对 值小于1e-5,就停止求T[k][k];此时的k就是所求的二分次数,而此时的T[k][k]就是最终的结果 3.4 打印出所有的T[i][j];程序流程图

AES加密算法实验报告

四川大学计算机学院、软件学院实验报告 学号::专业:班级:第10 周

在程序运行读取需要加密的图片时,需要进行图片的选取,本次实验中使用在弹窗中选取文件的方式,使用头文件commdlg.h来实现在文件夹中选择需要的文件的选取。 三、加密算法流程 AES加密算法流程如下 字节代替:用一个S盒完成分组的字节到字节的代替; 行移位:进行一次行上的置换; 列混合:利用有限域GF(28)上的运算特性的一个代替; 轮密钥加:当前分组和扩展密钥的一部分进行按位异或。

四、代码实现 cryptograph.h #include #include class plaintext { public: plaintext(); static void createplaintext(unsigned char a[]); static void SubBytes(unsigned char p[16]); static void inSubBytes(unsigned char p[16]); static void ShiftRows(unsigned char e[]); static void inShiftRows(unsigned char e[]); static void MatrixToByte(unsigned char e[]); static void inMatrixToByte(unsigned char e[]); static unsigned char FFmul(unsigned char a, unsigned char b); static void KeyAdding(unsigned char state[16], unsigned char k[][4]); static void KeyExpansion(unsigned char* key, unsigned char w[][4][4]); ~plaintext(); private: }; cryptograph.cpp #include"cryptography.h" using namespace std; static unsigned char sBox[] = {};/定义加密S盒/ unsigned char insBox[256] ={};//定义解密S盒 plaintext::plaintext() {

网络安全RSA算法的实现实验报告

网络安全基础教程报告 题目:RSA加密算法 学号:1108040205 专业及班级:计网1102班 姓名:雪飞 日期:2013.11.26

一、RSA算法介绍与应用现状 RSA公开密钥加密算法自20世纪70年代提出以来,已经得到了广泛认可和应用。发展至今,电子安全领域的各方面已经形成了较为完备的国际规。RSA作为最重要的公开密钥算法,在各领域的应用数不胜数。RSA在硬件方面,以技术成熟的IC应用于各种消费类电子产品。 RSA在软件方面的应用,主要集中在Internet上。加密连接、数字签名和数字证书的核心算法广泛使用RSA。日常应用中,有比较著名的工具包Open SSL(SSL,Security Socket Layer,是一个安全传输协议,在Internet上进行数据保护和身份确认。Open SSL是一个开放源代码的实现了SSL及相关加密技术的软件包,由加拿大的Eric Yang等发起编写的。Open SSL应用RSA实现签名和密钥交换,已经在各种操作系统得到非常广泛的应用。另外,家喻户晓的IE浏览器,自然也实现了SSL协议,集成了使用RSA技术的加密功能,结合MD5和SHA1,主要用于数字证书和数字签名,对于习惯于使用网上购物和网上银行的用户来说,几乎天天都在使用RSA技术。 RSA更出现在要求高度安全稳定的企业级商务应用中。在当今的企业级商务应用中,不得不提及使用最广泛的平台j2ee。事实上,在j2se的标准库中,就为安全和加密服务提供了两组API:JCA和JCE。JCA (Java Cryptography Architecture)提供基本的加密框架,如证书、数字签名、报文摘要和密钥对产生器;JCA由几个实现了基本的加密技术功能的类和接口组成,其中最主要的是java.security包,此软件包包含的是一组核心的类和接口,Java中数字签名的方法就集中在此软件包中。JCE(Java Cryptography Extension) 在JCA的基础上作了扩展,JCE也是由几个软件包组成,其中最主要的是javax.crypto包,此软件包提供了JCE加密技术操作API。javax.crypto中的Cipher类用于具体的加密和解密。在上述软件包的实现中,集成了应用RSA算法的各种数据加密规(RSA算法应用规介绍参见:.rsasecurity./rsalabs/node.asp?id=2146 ,这些API部支持的算法不仅仅只有RSA,但是RSA是数字签名和证书中最常用的),用户程序可以直接使用java标准库中提供的API 进行数字签名和证书的各种操作。 二、算法原理 1.选择两个不同的大素数p、q (目前两个数的长度都接近512bit是安全的); 2. 计算n = p*q。 3. 计算n的欧拉函数t=(p-1)(q-1)。 4. 选择整数e作为公钥,使e与t互素,且1

加解密体系介绍

加解密 (2) 1.概述 (2) 2.加密算法 (3) 2.1.对称加密 (3) 2.1.1.概述 (3) 2.1.2.常用算法 (4) 2.1.3.优缺点 (5) 2.2.非对称加密 (5) 2.2.1.概述 (5) 2.2.2.常用算法 (7) 2.2.3.优缺点 (7) 3.数字摘要 (8)

4.数字签名 (10) 4.1.概述 (10) 4.2.主要功能 (12) 4.3.原理特点 (13) 4.4.流程示例 (15) 加解密 1.概述 加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容.加密之所以安全,绝非因不知道加密解密算法方法,而是加密的密钥是绝对的隐藏,现在流行的RSA和AES加密算法都是完全公开的,一方取得已加密的数据,就算知道加密算法也好,若没有加密的密钥,也不能打开被加密保护的信息。单单隐蔽加密算法以保护信息,在学界和业界已有相当讨论,一般认为是不够安全的。公开的

加密算法是给黑客和加密家长年累月攻击测试,对比隐蔽的加密算法要安全得多。 2.加密算法 加密算法可以分为两类:对称加密和非对称加密。 2.1.对称加密 2.1.1.概述 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。 需要对加密和解密使用相同密钥的加密算法。由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。对称性加密也称为密钥加密。 所谓对称,就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。密钥是控制加密及解密过程的指令。算法是一组规则,规定如何进行加密和解密。

DES加密算法实验报告

苏州科技学院 实验报告 学生姓名:杨刘涛学号:1220126117 指导教师:陶滔 刘学书1220126114 实验地点:计算机学院大楼东309 实验时间:2015-04-20 一、实验室名称:软件实验室 二、实验项目名称:DES加解密算法实现 三、实验学时:4学时 四、实验原理: DES算法由加密、子密钥和解密的生成三部分组成。现将DES算法介绍如下。1.加密 DES算法处理的数据对象是一组64比特的明文串。设该明文串为m=m1m2…m64 (mi=0或1)。明文串经过64比特的密钥K来加密,最后生成长度为64比特的密文E。其加密过程图示如下:

图2-1:DES算法加密过程 对DES算法加密过程图示的说明如下: 待加密的64比特明文串m,经过IP置换(初始置换)后,得到的比特串的下标列表如下: 表2-1:得到的比特串的下标列表

该比特串被分为32位的L0和32位的R0两部分。R0子密钥K1(子密钥的生成将在后面讲)经过变换f(R0,K1)(f变换将在下面讲)输出32位的比特串 f1,f1与L0做不进位的二进制加法运算。运算规则为: f1与L0做不进位的二进制加法运算后的结果赋给R1,R0则原封不动的赋给L1。L1与R0又做与以上完全相同的运算,生成L2,R2……一共经过16次运算。最后生成R16和L16。其中R16为L15与f(R15,K16)做不进位二进制加法运算的结果,L16是R15的直接赋值。 R16与L16合并成64位的比特串。值得注意的是R16一定要排在L16前面。R16与L16合并后成的比特串,经过置换IP-1(终结置换)后所得比特串的下标列表如下: 表2-2:置换后所得比特串的下标列表 经过置换IP-1后生成的比特串就是密文e。 变换f(Ri-1,Ki): 它的功能是将32比特的输入再转化为32比特的输出。其过程如图2-2所示:

密码学实验报告(AES,RSA)

华北电力大学 实验报告| | 实验名称现代密码学课程设计 课程名称现代密码学 | | 专业班级:学生姓名: 学号:成绩: 指导教师:实验日期:

[综合实验一] AES-128加密算法实现 一、实验目的及要求 (1)用C++实现; (2)具有16字节的加密演示; (3)完成4种工作模式下的文件加密与解密:ECB, CBC, CFB,OFB. 二、所用仪器、设备 计算机、Visual C++软件。 三. 实验原理 3.1、设计综述 AES 中的操作均是以字节作为基础的,用到的变量也都是以字节为基础。State 可以用4×4的矩阵表示。AES 算法结构对加密和解密的操作,算法由轮密钥开始,并用Nr 表示对一个数据分组加密的轮数(加密轮数与密钥长度的关系如表2所示)。AES 算法的主循环State 矩阵执行1 r N 轮迭代运算,每轮都包括所有 4个阶段的代换,分别是在规范中被称为 SubBytes(字节替换)、ShiftRows(行位移变换)、MixColumns(列混合变换) 和AddRoundKey ,(由于外部输入的加密密钥K 长度有限,所以在算法中要用一个密钥扩展程序(Keyexpansion)把外部密钥 K 扩展成更长的比特串,以生成各轮的加密和解密密钥。最后执行只包括 3个阶段 (省略 MixColumns 变换)的最后一轮运算。 表2 AES 参数 比特。

3.2、字节代替(SubBytes ) AES 定义了一个S 盒,State 中每个字节按照如下方式映射为一个新的字节:把该字节的高4位作为行值,低4位作为列值,然后取出S 盒中对应行和列的元素作为输出。例如,十六进制数{84}。对应S 盒的行是8列是4,S 盒中该位置对应的值是{5F}。 S 盒是一个由16x16字节组成的矩阵,包含了8位值所能表达的256种可能的变换。S 盒按照以下方式构造: (1) 逐行按照升序排列的字节值初始化S 盒。第一行是{00},{01},{02},…,{OF}; 第二行是{10},{l1},…,{1F}等。在行X 和列Y 的字节值是{xy}。 (2) 把S 盒中的每个字节映射为它在有限域GF(k 2)中的逆。GF 代表伽罗瓦域,GF(82) 由一组从0x00到0xff 的256个值组成,加上加法和乘法。 ) 1(] [2)2(3488++++= x x x x X Z GF 。{00}被映射为它自身{00}。 (3) 把S 盒中的每个字节记成),,,,,,,,(012345678b b b b b b b b b 。对S 盒中每个字节的每位 做如下变换: i i i i i i c b b b b b i b ⊕⊕⊕⊕⊕='++++8mod )7(8mod )6(8mod )5(8mod )4( 上式中i c 是指值为{63}字节C 第i 位,即)01100011(),,,,,,,,(012345678=c c c c c c c c c 。符号(')表示更新后的变量的值。AES 用以下的矩阵方式描述了这个变换: ?? ? ?? ? ? ? ? ? ??? ? ????????????+???????????????????????????????????????? ????????????=??????????????????????????0110001111111000011111000011111000011111100011111100011111100011111100017654321076543210b b b b b b b b b b b b b b b b 最后完成的效果如图:

相关文档