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

2019-08-02 01:07

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

小结: 以上,完成了对64位数字序列的一次DES加密, 如果被加密数据的长度大于64位,若长度为64的整数倍,则无需补数据,若长度不为64的整数倍,则需先补齐使之为64的整数倍,然后按照64位对待加密数据进行分段,每64位为一段,分别用以上算法对每段数据进行加密,之后各段再按先前顺序组合在一起,即可得到这串数据的密文。

3处理64位的数据【解密】

3-1解密与加密的整体流程完全一样;

3-2不同点在于,加密中的“2-4-2、异或E[I-1]和K[I],即E[I-1] XOR K[I]”,到解密时需要变成“异或E[I-1]和K[17 - I],即E[I-1] XOR K[17 - I]”;

小结:根据以上第二步对加密流程做一点点调整之后,就是解密的过程。被解密数据的长度必须为64位的整数倍,否则不能进行解密;如果数据的长度大于64位,按照64位对待解密数据进行分段,每64位为一段,分别用以上算法对每段数据进行解密,之后各段再按先前顺序组合在一起,即可得到这串数据的明文。

4、单DES与常见的三DES 4-1单DES

数据要求:密钥为64位,数据长度为64位的整数倍。

加密与解密步骤: 处理同一串64位数据时,加密或者解密都是执行一次。 4-2常见的三DES

数据要求:密钥为128(KEY1+KEY2)位,数据长度为64位的整数倍。

加密与解密步骤: 处理同一串64位数据(设为A)时,加密或者解密都要执行三次单DES,具体如下:

加密: A 加密(KEY1)得到B à B解密(KEY2)得到Cà C加密(KEY1)得到D 解密: D 解密(KEY1)得到E à E加密(KEY2)得到Fà F解密(KEY1)得到A

7.2算法程序

7.2.1 算法的功能类代码

using System;

using System.Collections.Generic; using System.Linq; using System.Text;

using System.Threading.Tasks;

using System.Security.Cryptography;

30

using System.IO;

namespace mimaxue46.leiclass {

class DES {

//默认密钥向量

private byte[] Keys = { 0xEF, 0xAB, 0x56, 0x78, 0x90, 0x34, 0xCD, 0x12 }; ///

/// DES加密字符串 ///

/// ///

/// 加密成功返回加密后的字符串,失败返回源串 public string EncryptDES(string encryptString, string encryptKey) {

try {

byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8)); byte[] rgbIV = Keys;

byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString); DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider(); MemoryStream mStream = new MemoryStream();

CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);

cStream.Write(inputByteArray, 0, inputByteArray.Length); cStream.FlushFinalBlock();

return Convert.ToBase64String(mStream.ToArray()); } catch {

return encryptString; } }

///

/// DES解密字符串 ///

///

/// /// 解密成功返回解密后的字符串,失败返源串 public string DecryptDES(string decryptString, string decryptKey) {

try {

byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey.Substring(0, 8)); byte[] rgbIV = Keys;

byte[] inputByteArray = Convert.FromBase64String(decryptString); DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider(); MemoryStream mStream = new MemoryStream();

CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);

cStream.Write(inputByteArray, 0, inputByteArray.Length); cStream.FlushFinalBlock();

return Encoding.UTF8.GetString(mStream.ToArray()); } catch {

return decryptString; } }

} }

31

7.2.2 窗体类代码

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; using mimaxue46.leiclass; using System.IO;

namespace mimaxue46.FormsClass {

public partial class DES : Form {

public DES() {

InitializeComponent(); }

mimaxue46.leiclass.DES F = new leiclass.DES();

private void button1_Click(object sender, EventArgs e) {

if (textBox2.Text == \ || textBox2.Text == null) {

MessageBox.Show(\请输入秘钥\); } else

{ textBox3.Text = F.EncryptDES(textBox1.Text, textBox2.Text); } }

private void button2_Click(object sender, EventArgs e) {

textBox5.Text = F.DecryptDES(textBox4.Text, textBox2.Text); }

private void button3_Click(object sender, EventArgs e) {

textBox4.Text = textBox3.Text; }

private void DES_Load(object sender, EventArgs e) {

}

} }

32

7.3运行界面

33

8 RSA算法的计算机实现

8.1算法原理

找两素数p和q 取n=p*q

取t=(p-1)*(q-1)

取任何一个数e,要求满足e

这样最终得到三个数: n d e

设消息为数M (M

设c=(M**d)%n就得到了加密后的消息c

设m=(c**e)%n则 m == M,从而完成对c的解密。 注:**表示次方,上面两式中的d和e可以互换。

在对称加密中:

n d两个数构成公钥,可以告诉别人;

n e两个数构成私钥,e自己保留,不让任何人知道。

给别人发送的信息使用e加密,只要别人能用d解开就证明信息是由你发送的,构成了签名机制。 别人给你发送信息时使用d加密,这样只有拥有e的你能够对其解密。

rsa的安全性在于对于一个大数n,没有有效的方法能够将其分解 从而在已知n d的情况下无法获得e;同样在已知n e的情况下无法 求得d。

RSA简洁幽雅,但计算速度比较慢,通常加密中并不是直接使用RSA 来对所有的信息进行加密, 最常见的情况是随机产生一个对称加密的密钥,然后使用对称加密算法对信息加密,之后用

34


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

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

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

马上注册会员

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