当前位置:文档之家› 密码学实验指导

密码学实验指导

密码学实验指导
密码学实验指导

密码学实验指导

目录

实验一凯撒密码算法实验 1 实验二维吉利亚密码算法实验 5 实验三普莱费尔密码算法实验 9 实验四 IDEA密码算法实验 17 实验五 BCH纠错编码算法任务书 27

实验一凯撒密码算法实验

1 实验目的

通过实验熟练掌握凯撒密码算法,学会凯撒密码算法程序设计,提高C++程序设计能力。

2 实验学时:2

实验类别:验证实验■综合性实验□设计性实验□

3 实验环境

软件环境Windows Xp/Windows 2000

Visual c++/Turbo c++ 3.0

硬件系统Pentium 4 3.0G 512MRAM 计算机等

4 算法原理

按照a~z依次对应0~25编码,变量K存放密钥-正整数。变量M存放一明文字符ASCII码,变量C存放M中的数据经加密后得到的一密文字符的ASCII码。

加密算法:C≡(M+K)mod 26,如此继续下去,实现逐个字符进行加密。

5 实验步骤与内容

1)编写程序

2)编辑录入

3)记录调试及进行情况

4)程序结构说明文档

5)程序使用说明文档

6 思考密钥K的有效的最小取值范围

7 实验总结与体会

8 要求提交完整的实验报告

9 参考程序代码

#include

#include

using namespace std;

//获取密钥函数getKey()

int getKey()

{

int key;

cout<<"请输入密钥:";

cin>>key;

return key;

}

//将明文中的字符全部转化为大写的函数change()

void change(char s[])

{

int i;

for(i=0;i

{

if(s[i]>96&&s[i]<122)

s[i] = s[i]-32;

}

}

//判断输入的明文格式是否有误的函数getError()

//有误则返回0,否则就返回1

int getError(char s[])

{

int i,error;

for(i=0;i

{

if((s[i]>65&&s[i]<=82)||(s[i]>96&&s[i]<=122))

{

error = 1;

}

else {

error = 0;

break;

}

}

return error;

}

//将明文转化为密文的函数getCode

void getCode(char s[],char ss[],int key) {

int i,j;

cout<<"译出的密文:";

for(i = 0;i

{

for(j = 0;j<26;j++)

{

if(ss[i]==s[j])

{

cout<

}

}

}

cout<

}

void main()

{

char ss[26],incode[1000];

int i,key,asc=65;

for(i = 0;i<26;i++)

{

ss[i] = asc++;

}

key = getKey();

cout<<"请输入密文:\n";

getchar('\n');

gets(incode);

if(getError(incode)==0)

{

cout<<"您的输入有误!请重新输入!\n";

exit(1);

}

change(incode);

getCode(ss,incode,key);

}

实验二维吉利亚密码算法实验

1 实验目的

通过实验熟练掌握维吉利亚密码算法,学会维吉利亚密码算法程序设计,提高C++程序设计能力。

2 实验学时:2

实验类别:验证实验■综合性实验□设计性实验□

3 实验环境

软件环境Windows Xp/Windows 2000

Visual c++/Turbo c++ 3.0

硬件系统Pentium 4 3.0G 512MRAM 计算机等

4 算法原理

按照a~z依次对应0~25编码,数组K密钥字符串的ASCII码,数组M存放一组明文字符串ASCII码,且length(M)=length(K)=n,数组C存放M中的数据经加密后得到的一组密文字符串的ASCII码。

加密算法:C(i)≡(M(i)+K(i))mod 26 (i=1,2,……,n)

5 实验步骤与内容

1)编写程序

2)编辑录入

3)记录调试及进行情况

4)程序结构说明文档

5)程序使用说明文档

6 实验总结与体会

7 要求提交完整的实验报告

8 参考程序代码

//Vigenere.cpp文件源代码

#include

#include

using namespace std;

//将字符串小写变为大写

void change(char s[])

{

int i;

for(i=0;i

{

if(s[i]>96&&s[i]<122)

s[i] = s[i]-32;

}

}

void makeCode(char incode[],char ss[],char key[],int intkey[]) {

cout<<"译出的密文为:";

for(int i = 0;i

{

for(int j = 0;j<26;j++)

{

//逐个比较

if(incode[i]==ss[j])

{

//逐个输出密文

cout<

}

}

if((i+1)%strlen(key)==0)

{

cout<<" ";

}

}

}

void main()

{

char ss[26];

int i,j;

//按照A~Z(大写)依次对应存储在char数组ss[] for(i = 0;i<26;i++)

{

ss[i] = i+65;

}

char select;

do{

char incode[1000];

cout<<"请输入明文:";

cin>>incode;

//将明文小写变为大写

change(incode);

char key[100];

int intkey[100];

cout<<"请输入密钥:";

cin>>key;

//将密钥小写变为大写

change(key);

//将密钥对应的下标存放在数组intkey[]中for(i = 0;i

{

for(j = 0;j<26;j++)

{

//逐个比较

if(key[i]==ss[j])

{

intkey[i] = j;

}

}

}

实验三普莱费尔密码算法实验

1 实验目的

通过实验熟练掌握普莱费尔密码算法,学会普莱费尔码算法程序设计,提高C++程序设计能力。

2 实验学时:4

实验类别:验证实验■综合性实验□设计性实验□

3 实验环境

软件环境Windows Xp/Windows 2000

Visual c++/Turbo c++ 3.0

硬件系统Pentium 4 3.0G 512MRAM 计算机等

4 算法原理

将明文中的双字母组合作为一个单元对待,并将这些单元转换为密文双字母组合。Playfair密码基于一个5*5字母矩阵,该矩阵使用一个关键词(密钥)来构造,其构造方法是:从左至右,从上至下依次填入关键词的字母(去除重复的字母),然后再以字母表顺序依次填入其他的字母。字母I和J被算作一个字母(即J被当作I处理)。对每一对明文字母p1,p2的加密方法如下。

(1)若p1,p2在同一行时,则对应的密文c1,c2分别是仅靠p1,p2右端的字母。其中第一行被看做是最后一行的右方(解密时反向)。

(2)若p1,p2在同一列时,则对应的密文c1,c2分别是仅靠p1,p2下方的字母。其中第一列被看做是最后一列的下方(解密时反向)。

(3)若p1,p2既不在同一行,也不在同一列时,则c1,c2是由p1和p2确定的矩

形的其他两角的字母,并且c1和p1,c2和p2同行(解密时处理方法相同)。(4)若p1=p2,则插入一个字母(比如Q,需要事先约定)于重复字母之间,并用前述方法处理。

(5)若明文字母数为奇数时,则在明文的末端添加某个事先约定的字母作为填充。

5 实验步骤与内容

1)编写程序

2)编辑录入

3)记录调试及进行情况

4)程序结构说明文档

5)程序使用说明文档

6 实验总结与体会

7 要求提交完整的实验报告

8 参考程序代码

#include

#include

using namespace std;

//寻找字符'J'

int foundj(string s)

{

for(int i=0;i

{

if(s[i]=='J')

{

return i;

}

}

}

//将字符串小写变为大写

void change(char s[])

{

int i;

for(i=0;i

{

if(s[i]>96&&s[i]<122)

s[i] = s[i]-32;

}

}

//去掉密钥中重复的字符

void dele(char key[],string codekey) {

int flagk;

for(int i = 1;i

{

flagk = 0;

for(int j=0;j

{

if(key[i]==key[j])

{

flagk=1;

break;

}

}if(flagk ==0)

codekey+=key[i];

}

for(i = 0;i

key[i] = '\0';

change(key);

}

//寻找字符a对应的行下标和列下标

void search(char a,int &i1,int &j1,char cod[5][5]){ int i,j;

for(i=0;i<5;i++){

for(j=0;j<5;j++)

if(a==cod[i][j])

{

i1=i;

j1=j;

}

}

}

//加密矩阵

void juzhen(string codekey,char cod[][5],int m) {

for(int i=0;i

for(int j=0;j<5;j++)

cod[i][j]=codekey[i*5+j];

for(i=0;i

{

for(int j=0;j<5;j++)

cout<

cout<

}

}

//加密算法

string jiami(string codestr,char cod[5][5]){ int i;

int i1,j1,i2,j2;

string pt;

pt=codestr;

for(i=0;i

search(codestr[i], i1,j1,cod);

search(codestr[i+1],i2,j2,cod);

//处于不同的行列,取对角

if(i1!=i2&&j1!=j2)

{

pt[i]=cod[i1][j2];

pt[i+1]=cod[i2][j1];

}

//处于同一行,取行紧靠的数据

if(i1==i2&&j1!=j2)

{

pt[i]=cod[i1][(j1+1)%5];

pt[i+1]=cod[i2][(j2+1)%5];

}

//处于同列,取列紧靠的数据

if(i1!=i2&&j1==j2)

{

pt[i]=cod[(i1+1)%5][j2];

pt[i+1]=cod[(i2+1)%5][j1];

}

i=i+2;

}

return pt;

}

void main()

{

cout<<"--------------普莱费尔密码加密-------------"<

int j,k=0;

cout<<"请输入密钥:";

char key[1000],key1[1000];

string codekey;

cin>>key;

codekey+=key[0];

dele(key,codekey);//删除相同字符

char code[26];

for(int i=0;i

{

code[i]=key[i];

}

//key赋给codekey

for(i = 0;i

codekey+=key[i];

//26个大写字母赋给code

for(i = 0;i<26;i++)

code[i] = i+65;

//codekey连接code

for(i = 0;i<26;i++)

codekey +=code[i];

//key赋给key1

for(i=0;i

{

key1[i] = key[i];

}

key1[i] = '\0';

//排序key1

for(i=0;i

{

for(int j = i+1;j

{

if(key1[i]>key[j])

{

char t = key1[i];

key1[i] = key1[j];

key1[j] = t;

}

}

}

//删除key1中相同字符

for(i=0;i

{

for(j=key1[i]-65-k;j

code[j] = code[j+1];

}

k++;

}

code[26-strlen(key1)] = '\0';

codekey = key;

codekey+=code;

//处理i和j

for(i=foundj(codekey);i

codekey[i] = codekey[i+1];

}

//加密矩阵

char cod[5][5];

cout<<"加密矩阵为:"<

juzhen(codekey,cod,5);

//输入明文转化为大写

cout<<"请输入明文:";

string str,codstr;

cin>>str;

for(i=0;i

{

if(str[i]>96&&str[i]<122)

str[i] = str[i]-32;

}

//加密

codstr=jiami(str,cod);

cout<<"对应的密文为:---->>"<

实验四 IDEA 密码算法实验

1 实验目的

通过实验熟练掌握IDEA 密码算法,学会IDEA 算法程序设计,提高C++程序设计能力。

2 实验学时:4

实验类别:验证实验■ 综合性实验□

设计性实验□

3 实验环境

软件环境

Windows Xp/Windows 2000 Visual c++/Turbo c++ 3.0

硬件系统

Pentium 4 3.0G 512MRAM 计算机等

4 算法原理

64比特的数据块分成4个子块1X ,2X ,3X 和4X ,每一个子块16比特,作为第1轮的输入,全部共8轮迭代。运算步骤如下:

(1) 1X 和第1个子密钥块作乘法运算。 (2) 2X 和第2个子密钥块作加法运算。 (3) 3X 和第3个子密钥块作加法运算。 (4) 4X 和第4个子密钥块作乘法运算。 (5) (1)和(3)结果作异或运算。 (6) (2)和(4)结果作异或运算。

(7) (5)的结果与第5个子密钥块作乘法运算。 (8) (6)和(7)结果作加法运算。

(9) (8)的结果与第6个子密钥块作乘法运算。 (10) (7)和(9) 结果作加法运算。 (11) (1)和(9)结果作异或运算。 (12) (3)和(9) 结果作异或运算。 (13) (2)和(10) 结果作异或运算。

(14) (4)和(10) 结果作异或运算。结果的输出为(11),(13),(12),(14)。 除最后一轮(第8轮)外,第2和第3块交换。第8轮结束后,最后输出的变换有:

(1) 1X 和第1个子密钥块作乘法运算。 (2) 2X 和第2个子密钥块作加法运算。 (3) 3X 和第3个子密钥块作加法运算。 (4) 4X 和第4个子密钥块作乘法运算。

子密钥块每轮6个,最后输出变换4个,共52个。首先将128比特的密钥分成8个子密钥,每个子密钥16比特。这8个子密钥正好是第1轮的6个及第2轮的前两个。再将密钥左旋25比特,再将它分成8个子密钥。前4个是第2轮的子密钥,后4个是第3轮子密钥。将密钥再左旋25比特,产生后8个子密钥。依此类推,直到算法结束。

设密钥12821k k k k =分成8段,依次为

,1621)1(1k k k Z =

,321817)

1(2k k k Z =

……

,968281)1(6k k k Z =

,1129897)2(1k k k Z =

128114113)2(2k k k Z =

再将k 向左旋移位25比特 25211282726k k k k k k

分8段,前4段是第2轮的子密钥)2(3Z ,)2(4Z ,)2(5Z ,)2(6Z ;后4段依次是)3(1Z ,)3(2

Z ,)3(3Z ,)3(4Z 。继续以上步骤,直到52个子密钥生成完毕。 5 实验步骤与内容

4) 编写程序 5) 编辑录入

6) 记录调试及进行情况 4)程序结构说明文档 5)程序使用说明文档

6 实验总结与体会

实验二 古典密码

实验2 古典密码 1.实验目的 (1)了解古典密码中的基本加密运算。 (2)了解几种典型的古典密码体制。 (3)掌握古典密码的统计分析方法。 2.实验内容 (1)古典密码体制 ①简单移位加密(单表代换) 该加密方法中,加密时将明文中的每个字母向前推移K位。经典恺撒密码加密变换就是这种变换,取k=3。 步骤1:打开CAP4软件,并加载实验一附带的“mw.txt”,如图2-1所示。 图2-1加载文件

步骤2:采用恺撒加密方法手工加密“mw.txt”;打开CAP4菜单栏“Cipher”菜单项选择“simple shift”选项,并选择移位值“shift value”为3,加密步骤1中加载的文件,如图2-2所示。 图2-2 参数设置 图2-3加密文件

步骤3:比较二者的加密结果是否相同。 步骤4:点击CAP4软件中的“Simple analysis”下的“shift”键,观察恺撒加密法的可能密钥值,并分析其攻击的难度,如图2-4所示。 图2-4密钥分析 ②仿射密码加密(单表代换) 在仿射密码加密(affine cipher)中,字母表中的字母被赋予一个数字,例如,a=0,b=1,c=2,…,z=25.仿射密码加密法的密钥为0~25之间的数字对(a,b)。a与26的最大公约数必须为1,这就是说能整除a和26的数只有1.现在假设m为明文字母的数字,而c为密文字母的数字,那么,这两个数字之间有如下关系: c=(am+b)(mod 26) m=a-1(c-b)(mod 26) 其中,(mod 26)的操作是:除以26,得其余数。 例如,选取密钥为(7,3)。因为7与26互素,也就是只有公约数1,所以(7,3)可以作为仿射密码的加密钥。将“hot”转换成数字7、14、19,利用仿射等式生成: c(H)=(7×7+3) mod 26=52 mod 26=0,即为字母“a“。 c(O)=(7×14+3) mod 26=101 mod 26=23,即为字母“x“. c(T)=(7×19+3) mod 26=136 mod 26=6,即为字母”g”. 这样,对于这个密钥,”hot”变成了“axg“.

现代密码学实验报告

现代密码学 实验报告 学生姓名 学号 专业班级计算机科学与技术指导教师段桂华 学院信息科学与工程学院完成时间2016年4月

实验一密码算法实验 [实验目的] 1.掌握密码学中经典的对称密码算法AES、RC4的算法原理。 2.掌握AES、RC4的算法流程和实现方法。 [实验预备] 1.AES算法的基本原理和特点。 2.流密码RC4的密钥流生成以及S盒初始化过程。 [实验内容] 1. 分析AES、RC4的实现过程。 2. 用程序设计语言将算法过程编程实现。 3. 完成字符串数据的加密运算和解密运算 输入十六进制明文:11223344556677889900AABBCCDDEEFF 输入十六进制密钥:13579BDF02468ACE1234567890ABCDEF [实验步骤] 1. 预习AES、RC4算法。 2. 写出算法流程,用程序设计语言将算法过程编程实现。 3. 输入指定的明文、密钥进行实验,验证结果。 4. 自己选择不同的输入,记录输出结果。 写出所编写程序的流程图和运行界面、运行结果。 一、AES算法 1、AES算法简介 AES 是一种可用来保护电子数据的新型加密算法。特别是,AES 是可以使用128、192 和 256 位密钥的迭代式对称密钥块密码,并且可以对 128 位(16 个字节)的数据块进行加密和解密。与使用密钥对的公钥密码不同的是,对称密钥密码使用同一个密钥来对数据进行加密和解密。由块密码返回的加密数据与输入数据具有相同的位数。迭代式密码使用循环结构来针对输入数据反复执行排列和置换运算。 2、算法实现及流程 以加密函数为例,如下所示,首先对密钥进行预处理密钥扩展,然后明文进行Nr(Nr与密钥长度有关)次迭代运算,包括字节替换SubBytes、移位行运算ShiftRows、混合列运算MixColumns、以及轮秘钥加密AddRoundKey。

测试技术实验指导书及实验报告2006级用汇总

矿压测试技术实验指导书 学号: 班级: 姓名: 安徽理工大学 能源与安全学院采矿工程实验室

实验一常用矿山压力仪器原理及使用方法 第一部分观测岩层移动的部分仪器 ☆深基点钻孔多点位移计 一、结构简介 深基点钻孔多点位移计是监测巷道在掘进和受采动影响的整个服务期间,围岩内部变形随时间变化情况的一种仪器。 深基点钻孔多点位移包括孔内固定装置、孔中连接钢丝绳、孔口测读装置组成。每套位移计内有5~6个测点。其结构及其安装如图1所示。 二、安装方法 1.在巷道两帮及顶板各钻出φ32的钻孔。 2.将带有连接钢丝绳的孔内固定装置,由远及近分别用安装圆管将其推至所要求的深度。(每个钻孔布置5~6个测点,分别为;6m、5m、4m、3m、2m、lm或12m、10m、8m、6m、4m、2m)。 3.将孔口测读装置,用水泥药圈或木条固定在孔口。 4。拉紧每个测点的钢丝绳,将孔口测读装置上的测尺推至l00mm左右的位置后,由螺丝将钢丝绳与测尺固定在一起。 三、测试方法 安装后先读出每个测点的初读数,以后每次读得的数值与初读数之差,即为测点的位移值。当读数将到零刻度时,松开螺丝,使测尺再回到l00mm左右的位置,重新读出初读数。 ☆顶板离层指示仪 一、结构简介: 顶板离层指示仪是监测顶板锚杆范围内及锚固范围外离层值大小的一种监测仪器,在顶板钻孔中布置两个测点,一个在围岩深部稳定处,一个在锚杆端部围岩中。离层值就是围岩中两测点之间以及锚杆端部围岩与巷道顶板表面间的相对位移值。顶板离层指示仪由孔内固定装置、测量钢丝绳及孔口显示装置组成如图1所示。

二、安装方法: 1.在巷道顶板钻出φ32的钻孔,孔深由要求而定。 2.将带有长钢丝绳的孔内固定装置用安装杆推到所要求的位置;抽出安装杆后再将带有短钢丝绳的孔内固定装置推到所要求的位置。 3.将孔口显示装置用木条固定在孔口(在显示装置与钻孔间要留有钢丝绳运动的间隙)。 4.将钢丝绳拉紧后,用螺丝将其分别与孔口显示装置中的圆管相连接,且使其显示读数超过零刻度线。 三、测读方法: 孔口测读装置上所显示的颜色,反映出顶板离层的范围及所处状态,显示数值表示顶板的离层量。☆DY—82型顶板动态仪 一、用途 DY-82型顶板动态仪是一种机械式高灵敏位移计。用于监测顶底板移近量、移近速度,进行采场“初次来压”和“周期来压”的预报,探测超前支撑压力高 峰位置,监测顶板活动及其它相对位移的测量。 二、技术特征 (1)灵敏度(mm) 0.01 (2)精度(%) 粗读±1,微读±2.5 (3)量程(mm) 0~200 (4)使用高度(mm) 1000~3000 三、原理、结构 其结构和安装见图。仪器的核心部件是齿条6、指针8 以及与指针相连的齿轮、微读数刻线盘9、齿条下端带有读 数横刻线的游标和粗读数刻度管11。 当动态仪安装在顶底板之间时,依靠压力弹簧7产生的 弹力而站立。安好后记下读数(初读数)并由手表读出时间。 粗读数由游标10的横刻线在刻度管11上的位置读出,每小 格2毫米,每大格(标有“1”、“22'’等)为10毫米,微读数 由指针8在刻线盘9的位置读出,每小格为0.01毫米(共200 小格,对应2毫米)。粗读数加微读数即为此时刻的读数。当 顶底板移近时,通过压杆3压缩压力弹簧7,推动齿条6下 移,带动齿轮,齿轮带动指针8顺时针方向旋转,顶底板每 移近0.01毫米,指针转过1小格;同时齿条下端游标随齿条 下移,读数增大。后次读数减去前次读数,即为这段时间内的顶底板移近量。除以经过的时间,即得

密码学基础课程设计指导书

《现代密码学基础》课程设计指导书 杨柳编 湖南科技大学计算机科学与工程学院 2014年12月

一、概述 本课程在简要复习数学基础知识之后,探讨了密码学研究的基本问题:通过不安全的通信媒介如何进行安全通信。也可以理解为关心任何希望限制不诚实者达到目的的问题,把度量和评价一个密码体制(协议)的安全性作为一个重点。就目前来说,密码学的研究领域已从消息加密扩大到了数字签名、消息认证、身份识别、抗欺骗协议等。无疑,在整个教学过程中非常重视密码学的基础,当然包括数学基础。并针对实际的密码体制(协议)强调设计与分析(攻击),对现代密码学的主要研究问题都进行了介绍。 对于密码学这样的课程,同学们一定要从理论、技术、应用三个方面进行学习与思考。密码体制(协议)无疑是我们的学习重点,密码体制(协议)也可以单纯地理解为计算机算法,从而有设计、分析、证明、实现的问题。实现密码体制(协议)就是我们经常讲的八个字:模型、算法、程序、测试。 二、课程设计步骤 课程设计步骤要求如下: 1.模型 从数学的角度看,解决任何问题都要建立一个数学模型,对于密码学来说更是如此。我们还可以认为,数据结构中的存储结构也是模型。于是这一部分的任务就是建立起问题的逻辑结构和存储结构,为算法设计和编码实现打下基础。 2.算法 这一部分对同学们的要求是能看懂书上的常用算法,并对其中的参数可以进行调整和设置,能实现和应用它们。 3.程序 编码实现得到程序。 4. 测试 5. 提交课程设计报告

三、课程设计报告编写要求 课程设计报告开头标明课程设计题目、设计者的班级、姓名、学号和完成日期,内容包括:模型、算法、程序、测试四个部分。 四、设计要求 可以只做第7题,不做第7题的要做第1题-第6题。 五、课程设计题目 大整数运算包的设计与实现 1.问题描述 大整数运算是现代密码学算法实现的基础,重要性不言而喻。大整数我们指的是二进制位512、1024和2048的数,一般的语言不支持。 2.基本要求 以类库头文件的形式实现。 3.实现提示 在选择了大整数的存储结构之后,主要实现以下运算: ①模加; ②模减; ③模乘; ④模整除; ⑤模取余。这五种运算模拟手算实现。 ⑥幂模:利用“平方-乘法”算法实现。 ⑦GCD:利用欧几里得算法实现。 ⑧乘法逆: 利用扩展的欧几里得算法实现。 ⑨素数判定与生成:概率性素数产生方法产生的数仅仅是伪素数,其缺点在于,

古典密码学实验

一、实验背景与目的 通过实现简单的古典密码算法,理解密码学的相关概念如明文(plaintext)、密文(ciphertext)、加密密钥(encryption key)、解密密钥(decryption key)、加密算法(encryption algorithm)、解密算法(decryption algorithm)等。 二、实验环境 Visual C++6.0 三、实验内容 (1)用C\C++语言实现仿射变换(Affine)加/解密算法;2) (2)用C\C++语言实现统计26个英文字母出现的频率的程序; (3)利用仿射变换加/解密程序对一段较长的英文文章进行加密,再利用统计 软件对明文和密文中字母出现的频率进行统计并作对比,观察有什么规 律。 其中a, b为密钥, 25 , 0≤ ≤b a ,且gcd(a, 26)=1 实验要求:加/解密程序对任意满足条件的a、b都能够处理。仿射变换: 加密: ()26 mod , b am m E c b a + = = 解密: ()()26 mod 1 , b c a c D m b a - = =- 四、实验原理 一个仿射变换对应于一个矩阵和一个向量的乘法,而仿射变换的复合对应于普通的矩阵乘法,只要加入一个额外的行到矩阵的底下,这一行全部是0除了最右边是一个1,而列向量的底下要加上一个1。仿射变换原理在基于MQ问题的多变元公钥密码中,公钥一般是方程组,但是这种没有处理的方程组很容易受到插值法的攻击,例如:首先在q元有限域上选取个变量以及个变量。构造方程组:这里面公钥信息方程组就是:其中是明文信息,而则是密文。可以看出这样的公钥信息很容易受到插值法的攻击,下面使用仿射将

混凝土结构实验指导书及实验报告(学生用)

土木工程学院 《混凝土结构设计基本原理》实验指导书 及实验报告 适用专业:土木工程周淼 编 班级::学 号: 理工大学 2018 年9 月

实验一钢筋混凝土梁受弯性能试验 一、实验目的 1.了解适筋梁的受力过程和破坏特征; 2.验证钢筋混凝土受弯构件正截面强度理论和计算公式; 3.掌握钢筋混凝土受弯构件的实验方法及荷载、应变、挠度、裂缝宽度等数据的测试技术 和有关仪器的使用方法; 4.培养学生对钢筋混凝土基本构件的初步实验分析能力。 二、基本原理当梁中纵向受力钢筋的配筋率适中时,梁正截面受弯破坏过程表现为典型的三个阶段:第一阶段——弹性阶段(I阶段):当荷载较小时,混凝土梁如同两种弹性材料组成的组合梁,梁截面的应力呈线性分布,卸载后几乎无残余变形。当梁受拉区混凝土的最大拉应力达到混凝土的抗拉强度,且最大的混凝土拉应变超过混凝土的极限受拉应变时,在纯弯段某一薄弱截面出现首条垂直裂缝。梁开裂标志着第一阶段的结束。此时,梁纯弯段截面承担的弯矩M cr称为开裂弯矩。第二阶段——带裂缝工作阶段(II阶段):梁开裂后,裂缝处混凝土退出工作,钢筋应力急增,且通过粘结力向未开裂的混凝土传递拉应力,使得梁中继续出现拉裂缝。压区混凝土中压应力也由线性分布转化为非线性分布。当受拉钢筋屈服时标志着第二阶段的结束。此时梁纯弯段截面承担的弯矩M y称为屈服弯矩。第三阶段——破坏阶段(III阶段):钢筋屈服后,在很小的荷载增量下,梁会产生很大的变形。裂缝的高度和宽度进一步发展,中和轴不断上移,压区混凝土应力分布曲线渐趋丰满。当受压区混凝土的最大压应变达到混凝土的极限压应变时,压区混凝土压碎,梁正截面受弯破坏。此时,梁承担的弯矩M u 称为极限弯矩。适筋梁的破坏始于纵筋屈服,终于混凝土压碎。整个过程要经历相当大的变形,破坏前有明显的预兆。这种破坏称为适筋破坏,属于延性破坏。 三、试验装置

密码学基础实验报告模板

西安邮电大学 通信与信息工程学院 密码学报告 专业班级: 学生姓名: 学号(班内序号): 2015年 12月 25 日 —————————————————————————— 装 订 线———————————————————————————————— 报告份数:

实验一棋盘密码 一.实验目的 编写实现棋盘密码体制的程序并进行验证 二.实验要求 1.能对明文中出现的26个英文字母(包括大小写)及标点符号等加密。2.从键盘输入密钥并输出棋盘进行验证。 3.能对给定的明文或密文进行正确的加密和解密。 三.实验原理 古代最早的棋盘密码体制是这样的:将26个字母排列在一个5*5的方格里,其中i 和j填在同一个里,每个字母对应一数αβ,其中αβ分别是该字母所在的行、列标号。这样就可以将明文的字母集合转换成密文的数字集合。 四.实验步骤 1.编写实现棋盘密码体制的程序,包括加密和解密。 2.运行程序,输入棋盘密钥。 3.选择加密,并输入明文,根据棋盘验证加密结果是否正确。 4.选择解密,并输入密文,根据棋盘验证解密结果是否正确。 5.流程图: 五.实验结果

实验二仿射密码 一.实验目的 编写实现仿射密码体制的程序并进行验证。 二、实验要求 1 给出仿射密码的的加密程序。 2 要求密钥从键盘输入。 3 掌握仿射密码的密码译制,弄清其加密过程。 三、实验原理 令P = C = Z26 , K = { (a,b) ∈Z26 * Z26 },对任意的(a , b) ∈K,定义:加密:y = e k(x) = (a * x + b) mod 26, 解密:d k(y) = a -1 ( y - b) mod 26 . a , b 为密钥,密钥空间为26 ×26。 在加密的过程中,要使所加密有唯一的解,必须满足a 与26互素。这是由下面的定理得出。 定理:设 a ∈Z m , a 为任意的,b ∈Z m ,同余方程: a * x ≡ b mod m 有唯一解的充要条件是:a 与m 互素。 四、实验流程

土工实验指导书及实验报告

土工实验指导书及实验报告编写毕守一 安徽水利水电职业技术学院 二OO九年五月

目录 实验一试样制备 实验二含水率试验 实验三密度试验 实验四液限和塑限试验 实验五颗粒分析试验 实验六固结试验 实验七直接剪切试验 实验八击实试验 土工试验复习题

实验一试样制备 一、概述 试样的制备是获得正确的试验成果的前提,为保证试验成果的可靠性以及试验数据的可比性,应具备一个统一的试样制备方法和程序。 试样的制备可分为原状土的试样制备和扰动土的试样制备。对于原状土的试样制备主要包括土样的开启、描述、切取等程序;而扰动土的制备程序则主要包括风干、碾散、过筛、分样和贮存等预备程序以及击实等制备程序,这些程序步骤的正确与否,都会直接影响到试验成果的可靠性,因此,试样的制备是土工试验工作的首要质量要素。 二、仪器设备 试样制备所需的主要仪器设备,包括: (1)孔径0.5mm、2mm和5mm的细筛; (2)孔径0.075mm的洗筛; (3)称量10kg、最小分度值5g的台秤; (4)称量5000g、最小分度值1g和称量200g、最小分度值0.01g的天平;

(5)不锈钢环刀(内径61.8mm、高20mm;内径79.8mm、高20mm或内径61.8mm、高40mm); (6)击样器:包括活塞、导筒和环刀; (7)其他:切土刀、钢丝锯、碎土工具、烘箱、保湿器、喷水设备、凡士林等。 三、试样制备 (一)原状土试样的制备步骤 1、将土样筒按标明的上下方向放置,剥去蜡封和胶带,开启土样筒取土样。 2、检查土样结构,若土样已扰动,则不应作为制备力学性质试验的试样。 3、根据试验要求确定环刀尺寸,并在环刀内壁涂一薄层凡士林,然后刃口向下放在土样上,将环刀垂直下压,同时用切土刀沿环刀外侧切削土样,边压边削直至土样高出环刀,制样时不得扰动土样。 4、采用钢丝锯或切土刀平整环刀两端土样,然后擦净环刀外壁,称环刀和土的总质量。 5、切削试样时,应对土样的层次、气味、颜色、夹杂物、裂缝和均匀性进行描述。 6、从切削的余土中取代表性试样,供测定含水率以及颗粒分析、界限含水率等试验之用。

应用密码学实验指导书

《应用加密算法与认证技术》实验指导书 实验一加密模式(一) [实验目的] 1.了解密码算法的分组链接模式。 2.掌握和理解ECB模式、CBC模式的结构和算法原理。 [实验内容] 1. 分析ECB模式和CBC模式的加密过程。 2. 用程序设计语言将算法过程编程实现。 3. 输入明文:I do like this book 加密算法E:异或⊕,密钥为cryption; 移位,密钥为5 两种填充模式:(1)0 (2)密文挪用 初始化向量IV:goodluck 用两种模式进行加密,输出相应的密文。 [实验步骤] 1. 预习ECB模式和CBC模式加密模式的算法。 2. 写出算法流程,用程序设计语言将算法过程编程实现。 3. 输入指定的明文、密钥或初始化向量,选择相应的填充模式,输出密文,验证结果。 4. 自己选择不同的输入,记录输出结果。 [问题讨论] 1. 总结两种加密模式的特点,错误扩散进行分析; 2. 分析实验中在编辑、编译、运行等各环节中所出现的问题及解决方法。 实验二加密模式(二) [实验目的] 1.了解密码算法的分组链接模式。

2.掌握和理解CFB模式、OFB模式的结构和算法原理。 [实验内容] 1. 分析CFB模式和OFB模式的加密过程。 2. 用程序设计语言将算法过程编程实现。 3. 输入明文:I do like this book 加密算法E:异或⊕,密钥为cryption; 移位,密钥为5 两种填充模式:(1)0 (2)密文挪用 初始化向量IV:goodluck 输出反馈位数n:8或16 用两种模式进行加密,输出相应的密文。 [实验步骤] 1. 预习CFB模式和OFB模式加密模式的算法。 2. 写出算法流程,用程序设计语言将算法过程编程实现。 3. 输入指定的明文、密钥或初始化向量,选择相应的填充模式,输出密文,验证结果。 4. 自己选择不同的输入,记录输出结果。 [问题讨论] 1. 总结两种加密模式的特点,错误扩散进行分析; 2. 分析实验中在编辑、编译、运行等各环节中所出现的问题及解决方法。 实验三素性检测 [实验目的] 1.公钥密码算法需要素数,任何合理规模的网络也需要许多这样的素数,了解如何对产生的随机数进行素性检测的方法。 2.掌握和理解Solovag-Strassen算法、Lehmann算法和Rabin-Miller素性检测算法的原理。 [实验内容]

CAD上机实验指导书及实验报告

北京邮电大学世纪学院 实验、实习、课程设计报告撰写格式与要求 (试行) 一、实验报告格式要求 1、有实验教学手册,按手册要求填写,若无则采用统一实验报告封面。 2、报告一律用钢笔书写或打印,打印要求用A4纸;页边距要求如下:页边距上下各为2.5厘米,左右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值(缩放100%,间距:标准)。 3、统一采用国家标准所规定的单位与符号,要求文字书写工整,不得潦草;作图规范,不得随手勾画。 4、实验报告中的实验原始记录,须经实验指导教师签字或登记。 二、实习报告、课程设计报告格式要求 1、采用统一的封面。 2、根据教学大纲的要求手写或打印,手写一律用钢笔书写,统一采用国家标准所规定的单位与符号,要求文字书写工整,不得潦草;作图规范,不得随手勾画。打印要求用A4纸;页边距要求如下:页边距上下各为2.5厘米,左右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值(缩放100%,间距:标准)。 三、报告内容要求 1、实验报告内容包括:实验目的、实验原理、实验仪器设备、实验操作过程、原始数据、实验结果分析、实验心得等方面内容。 2、实习报告内容包括:实习题目、实习任务与要求、实习具体实施情况(附上图表、原始数据等)、实习个人总结等内容。 3、课程设计报告或说明书内容包括:课程设计任务与要求、总体方案、方案设计与分析、所需仪器设备与元器件、设计实现与调试、收获体会、参考资料等方面内容。 北京邮电大学世纪学院 教务处 2009-8

实验报告 课程名称计算机绘图(CAD) 实验项目AutoCAD二维绘图实验 专业班级 姓名学号 指导教师实验成绩 2016年11月日

密码学基础-实验指导书

五邑大学本科生实验指导书 《密码学基础》实验指导书 课程名称:密码学基础 课程编号: 课程性质:专业选修课 课程总学时:48 实验总学时:8 任课教师:高伟峰

一、实验教学目的和基本要求 《密码学基础》是计算科学与技术本科专业开设的一门专业选修课,本课程的主要目标是让学生学习和了解密码学的一些基本概念,理解和掌握一些常用密码算法,包括加密和解密、认证理论及算法、安全计算原理及算法,学会进行效率分析和安全性分析。密码学是信息安全的核心技术,是实现安全通信的基础,所以实验和理论一样都很重要,实验能够让学生通过多个密码算法的程序设计实现,更好地掌握密码算法设计的机理和方法,熟悉网络攻击和防范方法。同时,基于密码系统设计的基本方法和基本步骤,帮助学生理解密码学在信息安全中的地位,并引导了解密码学领域及信息安全领域的新进展、新方向。具体要求如下: 1.要求学生在上机前对本次实验的原理、内容、方案进行充分准备。 2.每次实验必须按要求的格式撰写《实验报告》,内容大体包括:实验目的、实验内容、实验及算法原理、程序清单、结果分析、总结。 3.实验成绩作为平时成绩的一部分。 二、实验内容及学时分配 实验一 古典密码学实验(2学时) 一、实验目的 通过实现简单的古典密码算法,理解密码学的相关概念如明文(plaintext )、密文(ciphertext )、加密密钥(encryption key)、解密密钥(decryption key )、加密算法(encryption algorithm)、解密算法(decryption algorithm)等。 二、实验内容 1)用C\C++语言实现仿射变换(Affine )加/解密算法;2)用C\C++语言实现统计26个英文字母出现的频率的程序;3)利用仿射变换加/解密程序对一段较长的英文文章进行加密,再利用统计软件对明文和密文中字母出现的频率进行统计并作对比,观察有什么规律。 放射变换: 加密:()26mod ,b am m E c b a +== 解密:()()26mod 1 ,b c a c D m b a -==- 其中a, b 为密钥,25,0≤≤b a ,且gcd(a, 26)=1 实验要求:加/解密程序对任意满足条件的a 、b 都能够处理。

现代密码学-RC4校验 实验报告

现代密码学 实 验 报 告 院系:理学院 班级:信安二班 姓名: 学号:

前言 密码学(Cryptology)是研究秘密通信的原理和破译秘密信息的方法的一门学科。密码学的基本技术就是对数据进行一组可逆的数学变换,使未授权者不能理解它的真实含义。密码学包括密码编码学(Cryptography)和密码分析学(Cryptanalyst)两个既对立又统一的主要分支学科。研究密码变化的规律并用之于编制密码以保护信息安全的科学,称为密码编码学。研究密码变化的规律并用之于密码以获取信息情报的科学,称为密码分析学,也叫密码破译学。 密码学在信息安全中占有非常重要的地位,能够为信息安全提供关键理论与技术。密码学是一门古老而深奥的学问,按其发展进程,经历了古典密码和现代密码学两个阶段。现代密码学(Modern Cryptology)通常被归类为理论数学的一个分支学科,主要以可靠的数学方法和理论为基础,为保证信息的机密性、完整性、可认证性、可控性、不可抵赖性等提供关键理论与技术。

RC4密码算法算法实现 实验目的: 理解流密码的概念及相关结构; 理解并能够编写基本的流密码体制; 熟练应用C/C++编程实现RC4密码算法体制。 实验内容: 编程实现RC4加/解密算法。 实验原理: RC4算法是一种序列密码体制或称流密码体制,其加密密钥和解密密钥相同RC4的 密钥长度可变,但为了确保哪去安全强度,目前RC4至少使用128位的密钥。 用1~256个字节(8~2048位)的可变长度密钥初始化一个256个字节的状态向量S,S的元素记为S[0],S[1],…,S[255],从始至终置换后的S包含从0到255的所有8位数。对于加密和解密,字节K是从S的255个元素中按一种系统化的方式选出的一个元素生成的。每生成一个K的值,S中的元素个体就被重新置换一次。 实验代码: Encrypt.h文件: #ifndef _ENCRYPT_RC4_ #define _ENCRYPT_RC4_ #include

《流体力学》课程实验(上机)指导书及实验报告格式

《流体力学》课程实验指导书袁守利编 汽车工程学院 2005年9月

前言 1.实验总体目标、任务与要求 1)学生在学习了《流体力学》基本理论的基础上,通过伯努利方程实验、动量方程实 验,实现对基本理论的验证。 2)通过实验,使学生对水柱(水银柱)、U型压差计、毕托管、孔板流量计、文丘里流量计等流体力学常用的测压、测流量装置的结构、原理和使用有基本认识。 2.适用专业 热能与动力工程 3.先修课程 《流体力学》相关章节。 4.实验项目与学时分配 5. 实验改革与特色 根据实验内容和现有实验条件,在实验过程中,采取学生自己动手和教师演示相结合的方法,力求达到较好的实验效果。

实验一伯努利方程实验 1.观察流体流经实验管段时的能量转化关系,了解特定截面上的总水头、测压管水头、压强水头、速度水头和位置水头间的关系,从而加深对伯努利方程的理解和认识。 2.掌握各种水头的测试方法和压强的测试方法。 3.掌握流量、流速的测量方法,了解毕托管测速的原理。 二、实验条件 伯努利方程实验仪 三、实验原理 1.实验装置: 图一伯努利方程实验台 1.水箱及潜水泵 2.上水管 3.电源 4.溢流管 5.整流栅 6.溢流板 7.定压水箱 8.实验 细管9. 实验粗管10.测压管11.调节阀12.接水箱13.量杯14回水管15.实验桌 2.工作原理 定压水箱7靠溢流来维持其恒定的水位,在水箱下部装接水平放置的实验细管8,水经实验细管以恒定流流出,并通过调节阀11调节其出水流量。通过布置在实验管四个截面上的四组测压孔及测压管,可以测量到相应截面上的各种水头的大小,从而可以分析管路中恒定流动的各种能量形式、大小及相互转化关系。各个测量截面上的一组测压管都相当于一组毕托管,所以也可以用来测管中某点的流速。 电测流量装置由回水箱、计量水箱和电测流量装置(由浮子、光栅计量尺和光电子

古典加密实验报告

古典密码算法 一、实验目的 学习常见的古典密码学算法,通过编程实现替代密码算法和置换密码算法,加深对古典密码体制的了解,为深入学习密码学奠定基础。 二、实验要求 分析替代密码算法和置换密码算法的功能需求,详细设计实现替代密码算法和置换密码算法的数据结构和流程,给出测试用例和测试步骤,得出测试和结论。替代密码算法和置换密码算法的实现程序必须提供加密和解密两个接口:int encrypt()和int decrypt()。当加密或者解密成功时返回CRYPT_OK,失败时返回CRYPT_ERROR。 三、实验原理 古典密码算法曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密。它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密。下面介绍两种算法:替代密码和置换密码。 1.替代密码的原理是使用替代法进行加密,就是将明文由其它的字母、数字或符合所代替后形成密文。这里每个明文字母对应的密文字母可能是一个,也可能是多个。接收者对密文进行逆向替换即可得到明文。 2.置换密码算法的原理是不改变明文字符,而是按照某一规则重新排列消息中的比特或字符顺序,才而实现明文信息的加密。置换密码有时又称为换位密码。 我实验过程中替代密码是单表替换,用字母的下一个字母代替:for(j = 0; j < i; j++)

{ if(96 < Mingwen[j]&&Mingwen[j] < 123) { Miwen[j] = 'a' + (Mingwen[j] - 'a' + 1) % 26; } else { Miwen[j] = 'A' + (Mingwen[j] - 'A' + 1) % 26; } } 置换加密主要是对密钥进行整理,还有就是动态分配二维数组,将明文和密文填充置的过程,换密码关键代码如下: for(a = 0; a < k; a++) { for(b = 0; b < hang; b++) { Miwen[i] = p[b][ord[j]]; i++; } j++; } for(a = 0; a < 26; a++) { for(b = 0; b < k; b++) { if(key1[b] == alphatable[a]) { ord[b] = ind++; } } } 具体加密见下图:

密码学实验报告(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 最后完成的效果如图:

电磁场实验指导书及实验报告

CENTRAL SOUTH UNIVERSITY 题目利用Matlab模拟点电荷电场的分布姓名xxxx 学号xxxxxxxxxx 班级电气xxxx班 任课老师xxxx 实验日期2010-10

电磁场理论 实验一 ——利用Matlab 模拟点电荷电场的分布 一.实验目的: 1.熟悉单个点电荷及一对点电荷的电场分布情况; 2.学会使用Matlab 进行数值计算,并绘出相应的图形; 二.实验原理: 根据库伦定律:在真空中,两个静止点电荷之间的作用力与这两个电荷的电量乘积成正比,与它们之间距离的平方成反比,作用力的方向在两个电荷的连线上,两电荷同号为斥力,异号为吸力,它们之间的力F 满足: R R Q Q k F ? 212 = (式1) 由电场强度E 的定义可知: R R kQ E ? 2 = (式2) 对于点电荷,根据场论基础中的定义,有势场E 的势函数为 R kQ U = (式3) 而 U E -?= (式4) 在Matlab 中,由以上公式算出各点的电势U ,电场强度E 后,可以用Matlab 自带的库函数绘出相应电荷的电场分布情况。 三.实验内容: 1. 单个点电荷 点电荷的平面电力线和等势线 真空中点电荷的场强大小是E=kq /r^2 ,其中k 为静电力恒量, q 为电量, r 为点电荷到场点P(x,y)的距离。电场呈球对称分布, 取电量q> 0, 电力线是以电荷为起点的射线簇。以无穷远处为零势点, 点电荷的电势为U=kq /r,当U 取

常数时, 此式就是等势面方程.等势面是以电荷为中心以r 为半径的球面。 平面电力线的画法 在平面上, 电力线是等角分布的射线簇, 用MATLAB 画射线簇很简单。取射线的半径为( 都取国际制单位) r0=, 不同的角度用向量表示( 单位为弧度) th=linspace(0,2*pi,13)。射线簇的终点的直角坐标为: [x,y]=pol2cart(th,r0)。插入x 的起始坐标x=[x; *x].同样插入y 的起始坐标, y=[y; *y], x 和y 都是二维数组, 每一列是一条射线的起始和终止坐标。用二维画线命令plot(x,y)就画出所有电力线。 平面等势线的画法 在过电荷的截面上, 等势线就是以电荷为中心的圆簇, 用MATLAB 画等势 线更加简单。静电力常量为k=9e9, 电量可取为q=1e- 9; 最大的等势线的半径应该比射线的半径小一点 r0=。其电势为u0=k8q /r0。如果从外到里取7 条等势线, 最里面的等势线的电势是最外面的3 倍, 那么各条线的电势用向量表示为: u=linspace(1,3,7)*u0。从- r0 到r0 取偶数个点, 例如100 个点, 使最中心点的坐标绕过0, 各点的坐标可用向量表示: x=linspace(- r0,r0,100), 在直角坐标系中可形成网格坐标: [X,Y]=meshgrid(x)。各点到原点的距离为: r=sqrt(X.^2+Y.^2), 在乘方时, 乘方号前面要加点, 表示对变量中的元素进行乘方计算。各点的电势为U=k8q. /r, 在进行除法运算时, 除号前面也要加点, 同样表示对变量中的元素进行除法运算。用等高线命令即可画出等势线 contour(X,Y,U,u), 在画等势线后一般会把电力线擦除, 在画等势线之前插入如下命令hold on 就行了。平面电力线和等势线如图1, 其中插入了标题等等。越靠近点电荷的中心, 电势越高, 电场强度越大, 电力线和等势线也越密。

密码学实验讲义及实验报告2014

密码学基础 实验指导书 黑龙江大学计算机科学技术学院 2013年3月

目录 前言........................................................................................................................... - 2 -要求与评分标准....................................................................................................... - 3 -1要求. (3) 2评分标准 (3) 实验1 古典密码的实现(3学时) .................................................................... - 4 -实验2 对称密钥密码体制的实现(6学时) .................................................... - 4 -实验3 公开密钥密码算法的实现(6学时) .................................................... - 5 -实验4 数字签名算法的实现(3学时) ............................................................ - 5 -附录1:实验报告格式 ........................................................................................... - 7 -

密码学基础教学大纲完整版

《密码学基础》课程教学大纲 (课程代码:07310620) 课程简介 密码学基础是信息安全专业的一门技术基础课程,该课程的学习将为后续的信息安全课程打下基础,同时也为将来从事信息安全研究和安全系统的设计提供 必要的基础。该课程主要讲授流密码(古典密码学)分组密码学、公钥密码学、 密钥分配与管理、信息认证和杂凑算法、数字签名以及网络加密与认证等几个部分,在其中将学习各种加解密、散列函数、单向函数、签名模式及伪随机发生器 等多种密码学工具,以及如何应用这些工具设计一个实现基本信息安全目标的系 统(目前学时不够,没有安排)。基本密码学工具的掌握和应用这些工具构造安 全服务就是本课程的基本目标。 本课程具有如下特点: (一)依赖很强的数学基础 本课程需要数论、近世代数、概率论、信息论、计算复杂性等数学知识作为 学习的基础。这些数学基础的讲解既要体现本身的体系性,同时还要兼顾密码学背景。 (二)可扩展性强 各种具体方法的学习不是本课程的最终目标,背后的基本原理以及应用这些原理设计新工具的能力才是本课程的最终目标。 (三)课程内容复杂且涉及面广 由于密码学内容丰富,且包含许多复杂的知识点,所以本课程的讲授以线为主,即在基本主线的勾勒基础上对授课内容及复杂程度做出取舍。 本课程先修课程有:数据结构、近世代数、概率论、高等数学、高级语言程 序设计等。后续课程有信息安全扫描技术、PKI技术、病毒学等专业课程。 课程教材选用国内信息安全优秀教材杨波编著的《现代密码学》(清华大学出版社),同时参考国外优秀教材:《经典密码学与现代密码学》,Richard Spillman,清华大学出版社、Douglas R. Stinson著,冯登国译的《密码学原理和实践》,电子工业出版社,2003年2月第二版。另外还向学生推荐国内的一些具有特色的操作系统教材如胡向东编写的《应用密码学教程》(电子工业出版社)等。 实验教材选用自编的实验指导书,同时参考上海交大的“信息安全综合实验系统实验指导书”,除了这些教材之外,学校的图书馆为师生提供了相关的学术 期刊和图书。 课程教学体系:理论课程(34学时)课程实验(16学时)。达到从算法 验证、综合设计、到创新应用知识的逐步提高、全面培养的目的。相应的教学 材料由教学大纲、实验大纲、实验指导书等。实践环节的实验条件有:计算机 科学技术系的实验中心(实施课程实验)。 课程教学安排 序号内容课时数备注 一密码学概述 2 二古典密码学算法(一) 2

密码学实验报告

《—现代密码学—》 实验指导书 适用专业:计算机科学与技术 江苏科技大学计算机科学学院 2011年11 月 实验一古典密码 实验学时:2学时 实验类型:验证 实验要求:必修 一、实验目的

编程实现古典密码的加解密方法。 二、实验内容 (1)移位密码的加密和解密函数。 (2)仿射密码的加密和解密函数。 (3)维吉尼亚密码的加密和解密函数。 三、实验原理、方法和手段 (1)移位密码 对于明文字符x ,加密密钥k ,加密方法为 ,1,2,,25y x k k =+= 解密方法为 ,1,2,,25x y k k =-= (2)仿射密码 对于明文字符x ,加密密钥(,)a b ,加密方法为 ,gcd(,26)1,1,2,,25y ax b a b =+== 解密方法为 1()x a y b -=- (3)维吉尼亚密码 选取密钥字Key ,将明文按照密钥字长度分组,将明文与密钥字对应字符相加并对26求余,即为密文字符。 i i i y x k =+ 解密过程为 i i i x y k =- 四、实验组织运行要求 本实验采用集中授课形式,每个同学独立完成上述实验要求。 五、实验条件 每人一台计算机独立完成实验,有如下条件: (1)硬件:微机;

(2)软件:VC++6.0、VC++.Net 2005。 六、实验步骤 (1)将各函数编写完成; (2)在主函数中调用各函数,实现加密和解密。 七、实验报告 实验报告主要包括实验目的、实验内容、实验原理、源程序及结果。移位密码加密: #include #define n 3 //移位位数 void change(char string[]) { int i; for(i=0;string[i]!='\0';i++) { if(string[i]>='a'&&string[i]<='z') string[i]=(string[i]+n>='z'?string[i]+n-26:string[i]+n); } } void main() { char str[100]; printf("请输入一段明文"); gets(str); change(str); printf("密文为:\n"); puts(str); }

相关主题
文本预览
相关文档 最新文档