信息安全与密码学上机报告 - 图文(2)

2019-08-02 01:07

}

private void button1_Click(object sender, EventArgs e) {

textBox3.Clear();

string[] aa = new string[26];

aa[0] = \; aa[1] = \; aa[2] = \; aa[3] = \; aa[4] = \; aa[5] = \; aa[6] = \; aa[7] = \; aa[8] = \; aa[9] = \;

aa[10] = \; aa[11] = \; aa[12] = \; aa[13] = \; aa[14] = \; aa[15] = \; aa[16] = \; aa[17] = \; aa[18] = \; aa[19] = \; aa[20] = \; aa[21] = \; aa[22] = \; aa[23] = \; aa[24] = \; aa[25] = \;

string[] aa2 = new string[26];

aa2[0] = \; aa2[1] = \; aa2[2] = \; aa2[3] = \; aa2[4] = \; aa2[5] = \; aa2[6] = \; aa2[7] = \; aa2[8] = \; aa2[9] = \;

aa2[10] = \; aa2[11] = \; aa2[12] = \; aa2[13] = \; aa2[14] = \; aa2[15] = \; aa2[16] = \; aa2[17] = \; aa2[18] = \; aa2[19] = \; aa2[20] = \; aa2[21] = \; aa2[22] = \; aa2[23] = \; aa2[24] = \; aa2[25] = \; try {

#region

int a = Convert.ToInt16(textBox1.Text);

string tx = textBox2.Text; int le = tx.Length;

int[] bb = new int[le];

string[] txt = new string[le]; for (int i = 0; i < le; i++) {

txt[i] = tx[i].ToString(); }//获得明文

string[] txt2 = new string[le]; for (int j = 0; j < le; j++) {

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

if (txt[j] == aa[m]) {

bb[j] = (m + a) % 26; txt2[j] = aa2[bb[j]]; } }

}//获得密文

string tx2 = \;

for (int n = 0; n < le; n++) {

tx2 += txt2[n]; }

textBox3.Text = tx2; #endregion } catch {

MessageBox.Show(\请输入正确格式的秘钥以及明文\); } }

5

private void button2_Click(object sender, EventArgs e) {

textBox6.Clear();

string[] aa = new string[26];

aa[0] = \; aa[1] = \; aa[2] = \; aa[3] = \; aa[4] = \; aa[5] = \; aa[6] = \; aa[7] = \; aa[8] = \; aa[9] = \;

aa[10] = \; aa[11] = \; aa[12] = \; aa[13] = \; aa[14] = \; aa[15] = \; aa[16] = \; aa[17] = \; aa[18] = \; aa[19] = \; aa[20] = \; aa[21] = \; aa[22] = \; aa[23] = \; aa[24] = \; aa[25] = \;

string[] aa2 = new string[26];

aa2[0] = \; aa2[1] = \; aa2[2] = \; aa2[3] = \; aa2[4] = \; aa2[5] = \; aa2[6] = \; aa2[7] = \; aa2[8] = \; aa2[9] = \;

aa2[10] = \; aa2[11] = \; aa2[12] = \; aa2[13] = \; aa2[14] = \; aa2[15] = \; aa2[16] = \; aa2[17] = \; aa2[18] = \; aa2[19] = \; aa2[20] = \; aa2[21] = \; aa2[22] = \; aa2[23] = \; aa2[24] = \; aa2[25] = \; try {

int a = Convert.ToInt16(textBox4.Text);

string tx = textBox5.Text; int le = tx.Length;

string[] txt = new string[le]; for (int i = 0; i < le; i++) {

txt[i] = tx[i].ToString(); }//获得密文

string[] txt2 = new string[le]; for (int j = 0; j < le; j++) {

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

if (txt[j] == aa2[m]) {

int n = m - a; if (n <= 0) {

n = n + 26;

txt2[j] = aa[n % 26]; } else {

txt2[j] = aa[n % 26]; }

} } }

string tx2 = \;

for (int n = 0; n < le; n++) {

tx2 += txt2[n]; }

textBox6.Text = tx2; }

catch {

MessageBox.Show(\请输入正确的秘钥以及密文\); }

6

} } }

1.2.2运行界面

7

2置换密码

2.1算法原理

在置换密码的情形下,我们也可以认为P和C是26个英文字母。在移位密码中使用Z26是因为加密和解密都是代数运算。但是在置换密码的情形下,可更简单的将加密和解密过程直接看作是一个字母表上的置换。

任取一置换?,便可得到一加密函数,见下表(小写字母表示明文,大写字母表示密文): a

b c d e f g h i j k l m X N Y A H P O G Z Q W B T n o p q r s t u v w x y z S F L R C V M U E K J D I 按照上表应有e?(a)?X,e?(b)?N,等等。解密函数是相应的逆置换。由下表给出:

A B C D E F G H I J K L M d l r y v o h E z x w p t

N

O P Q R S T U V W X Y Z b g f j q n m U s k a c i 8

因此,d?(A)?d,d?(B)?l,等等。

置换密码的一个密钥刚好对应于26个英文字母的一种置换。所有可能的置换有26!种,这个数值超过4.0?1026,是一个很大的数。因此,采用穷尽密钥搜索的攻击方法,即使使用计算机,也是计算上不可行的。

2.2实现过程

2.2.1 程序代码

using System;

using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text;

using System.Threading.Tasks; using System.Windows.Forms;

namespace mimaxue46.FormsClass {

public partial class zhihuan : Form {

public zhihuan() {

InitializeComponent(); }

private void button1_Click(object sender, EventArgs e) {

textBox2.Clear();

string[] aa = new string[26];

aa[0] = \; aa[1] = \; aa[2] = \; aa[3] = \; aa[4] = \; aa[5] = \; aa[6] = \; aa[7] = \; aa[8] = \; aa[9] = \;

aa[10] = \; aa[11] = \; aa[12] = \; aa[13] = \; aa[14] = \; aa[15] = \; aa[16] = \; aa[17] = \; aa[18] = \; aa[19] = \; aa[20] = \; aa[21] = \; aa[22] = \; aa[23] = \; aa[24] = \; aa[25] = \;

string[] bb = new string[26];

bb[0]=\; bb[1]=\; bb[2]=\; bb[3]=\; bb[4]=\; bb[5]=\; bb[6]=\; bb[7]=\; bb[8]=\; bb[9]=\;

bb[10]=\; bb[11]=\; bb[12]=\; bb[13]=\; bb[14]=\; bb[15]=\; bb[16]=\; bb[17]=\; bb[18]=\; bb[19]=\; bb[20]=\; bb[21]=\; bb[22]=\; bb[23]=\; bb[24]=\; bb[25]=\;//设置密码加密表

string tx = textBox1.Text; int le = tx.Length;

string[] txt = new string[le]; for (int m = 0; m < le; m++) {

txt[m] = tx[m].ToString(); } //明文

string[] txt2 = new string[le]; for (int i = 0; i < le;i++) {

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

9


信息安全与密码学上机报告 - 图文(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018年白刚玉行业现状及发展趋势分析(目录)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: