2024年1月22日发(作者:)

07研究生密码学与网络安全试题

1:应用一种加密方法,将一段明文加密成密文,用任意一种语言编写出完整的程序。

2:制作一种数字水印方案,写出完整制作过程。(作品通过网上提供)

3:简单叙述分组编码技术的基本应用过程。

4:防火墙技术的应用

一种过滤型防火墙规则定义在转发控制表内容如下

Direction Type Src Port Dest Port Action

传输方向 协议类型 报文源地址 源主机端口 报文宿地址 宿主机端口 控制操作

访问要求:

1)网络123.45.0.0/16不愿其他Internet 主机访问其站点;

2)但它的一个子网123.45.6.0/24和某大学135.79.0.0/16有合作项目,因此允许该大学访问该子网(Allow );

3)然而135.79.99.0/24是黑客天堂,需要禁止(Deny)。

请根据上述要求完成规则设计原则,完成下表填写。

1

2

3

4

5

Direction

In

Out

In

Out

Both

Type

*

*

*

*

*

Src

Port

*

*

*

*

*

Dest

Port

*

*

*

*

*

Action

陕西科技大学答题纸

课程 密码学与网络安全 班级

学号 姓名

1.应用一种加密方法,将一段明文加密成密文,用任意一种语言编写出完整的程序。

答:(以下程序用C#编译,在VS2005下运行通过)

using System;

using c;

using entModel;

using ;

using g;

using ;

using ;

namespace mima1

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

char[,] mabiao=new char[11,26]; //定义二维全局数组,用以保存密码码表

private void Form1_Load(object sender, EventArgs e)

//生成窗口的同时,建立随机产生26×10的二维密码码表,在窗口的生命周期内,不会发生变化.

{

for(int i=0;i<11;i++)

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

{

mabiao[i, j] = (char)(j + 97);

}

Random r = new Random();

for (int i = 1; i < 11;i++ )

for (int j = 25; j >= 0; j--)

{

int address = (0, j);

char tmp = mabiao[i,address];

mabiao[i, address] = mabiao[i,j];

mabiao[i, j] = tmp;

}

}

private string jiami(string mingwen) //加密过程,10组码表轮转替换

{

string miwen="";

int count=1;

for(int i=0;i

{

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

{

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

{

if (!=)

if (!(mingwen[i * 8 + j].Equals("")) && (mingwen[i * 8 +

j]).Equals((char)(m + 97)))

miwen += mabiao[count, m];

}

}

if (count==10) count=0;

}

return miwen;

}

private string jiemi(string miwen) //解密过程,与加密过程原理相当

{

string mingwen = "";

int count = 1;

for (int i = 0; i < / 8+1; i++, count++)

{

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

{

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

{

if ( != )

if (!(miwen[i * 8 + j].Equals("")) && (miwen[i * 8 +

j]).Equals(mabiao[count, m]))

mingwen += (char)(m + 97);

}

}

if (count == 10) count = 0;

}

return mingwen;

}

private void button1_Click(object sender, EventArgs e) //点击此按钮,执行加密

{

= jiami();

}

private void button2_Click(object sender, EventArgs e) //显示码表,有利于检查排错

{

string show="码表如下:(n=8加密)n";

for (int i = 0; i < 11; i++)

{

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

{

show += mabiao[i, j].ToString()+" ";

}

show += "n";

}

(show,"码表");

}

private void button3_Click(object sender, EventArgs e) //点击此按钮,执行解密

{

= jiemi();

}

}

}

2.制作一种数字水印方案,写出完整制作过程。

答:以下是加网上最常见的多行斜体数字文印的方法:(操作工具为Photoshop CS2)

第一步,新建图片,设置适当的图片大小,选择文字工具,在图片上输入你要添加的文字,调节文字大小、字体以及文字角度,栅格化文字图层,保存为自定义的图案;

第二步,打开要加水印的图片,新建一个图层;只选择新建的图层,用刚才保存的图案进行填充;并调整图层透明度为20%~40%。

第三步,合并图层,并保存。

这样,图片的数字水印就制作完成了,当我们需要给很多文件加水印的时候,可以使用Photoshop中的动作功能以及批处理功能来实现,即用动作记录加水印的操作,再用批处理对目标文件夹内所有文件执行统一操作。这种制作水印的方法的缺陷在于它是可见水印,破坏了原有图像的数据。此外,我们还可以利用Photoshop自带的Digimarc工具(滤镜→Digimarc)很方便地制作简单的隐形水印。

3.简单叙述分组编码技术的基本应用过程。

答:分组密码分为三类:代替密码(Substitution)、移位密码(Transposition)和乘积密码。

分组密码就是将明文消息序列

m1,m2,…,mk,…

分成等长的消息组(m1,m2,…,mn),(mn+1,mn+2,…,m2n),…

在密钥控制下,按固定的算法Ek一组一组进行加密,加密后输出相等数量的密文组

(y1,…,ym),(ym+1,…,y2m),…

一个分组密码是一种映射

F2n×F2t→F2m

记为E(X,K)或EK(X),X∈F2n,K∈F2t,F2n称为明文空间,F2m称为密文空间,F2t称为密钥空间。n为明文分组长度,当n>m时,称为有数据压缩的分组密码;当n<m时,称为有数据扩展的分组密码;当n=m且一一映射时,EK(X)就是GF(2)n到GF(2)n的置换。通常最常见的就是最后一种情况。

先介绍第一种,代替密码。代替密码使用到的算法Ek,实际上是一组码表的集合。在每一个码表当中,每一个明文字符都有相应的另一个密文字符(组)与之相对应,比如a对应b,b对应d,或者a对应bd,b对应ac……等等,当采用a对应bd这种格式的时候,我们使用的是有扩展的密码。每一个对应的码表中包含的明文都是一组完整的字符集,所对应的密文则是没有重复的字符(字符组)集,这样,才能够保证每一个明文都能找到与之相对应的密文。代替密码是很简单的加密方法,如果我们把一组密钥称为一个码表,那么只使用一组密钥的单码表代替密码显然是很不安全的,所以产生了多码表代替密码,即利用一个以上的码表进行分组加密。这就是我们所说的分组代替密码。

移位密码则是一种更简便的加密方法。据说恺撒是率先使用加密函的古代将领之一,因此这种加密方法又被称为恺撒密码。移位密码的算法是这样的,假如位移量为n,那么对于明文当中的一个ASC码值为m的字符,则采用ASC码码值m+n或者m-n所对应的字符做替换,比如当位移量为2时,我们用a替换c,同样就可以得出b对应的一定是d,c对应的一定是e。由于它的码表是采用移位方法得到的,所以被命名为移位密码。显然的,相对于代替密码而言,移位密码更容易被破解,但是其码表占用的存储空间却非常非常小,它的码表只需要保存所移动的位数而已,而不需要像代替密码一样记录下所有的码表序列。

随着计算机数的发展,,早期的代替和移位密码已无安全可言。一个增加密码强度的显然的方法是合并代替和移位密码,这样的密码称为乘积密码。如果密文是由明文运用轮函数多次而得,这样的乘积密码又称为迭代分组密码。DES和今天的大多数分组密码都是迭代分组密码。

4.创建防火墙规则如下:

1

2

3

4

5

Direction

In

Out

In

Out

Both

Type

*

*

*

*

*

Src Port Dest

123.45.0.0/16

Port

*

Action

Deny

Deny

Allow

Allow

Deny

135.79.99.0/24 *

123.45.0.0/16

135.79.0.0/16

123.45.6.0/24

*

*

*

*

*

135.79.99.0/24 *

123.45.6.0/24

135.79.0.0/16

*

*

*

*

注:*指任意、任何(如所指的表示为任意的协议类型),其他的类推