优秀的毕业设计论文网
计算机 JAVA 电子信息 单片机 机械机电 模具 土木工程 建筑结构 论文
热门搜索词:网络 ASP.NET 汽车 电气 数控 PLC

.NET510 基于C#的文档加密器的实现

以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
  
资料介绍:


制、基于有限自动机理论的公钥体制等等。用抽象的观点来看,公钥密码体制就是一种陷门单向函数。我们说一个函数f 是单向函数,若对它的定义域中的任意x 都易于计算f(x),而对f 的值域中的几乎所有的y,即使当f 为已知时要计算f –1(y)在计算上也是不可行的。若当给定某些辅助信息(陷门信 息)时易于计算f –1(y),就称单向函数f 是一个陷门单向函数。公钥密码体制就是基于这一原理而设计的,将辅助信息(陷门信息)作为秘密密钥。这类密码的安全强度取决于它所依据的问题的计算复杂性。
目前比较流行的公钥密码体制主要有两类:一类是基于大整数因子分解问题的,其中最典型的代表是RSA 体制。另一类是基于离散对数问题的,如ElGamal 公钥密码体制和影响比 较大的椭圆曲线公钥密码体制。由于分解大整数的能力
〖本文来自:计算机毕业网  〗
法、Guillou-Quisquarter 数字签名算法、Schnorr 数字签名算法、Ong-Schnorr-Shamir 数字签名算法、美国的数字签名标准/算法(DSS/DSA),椭圆曲线数字签名算法和有限自动机数字签名算法等。特殊数字签名有盲签名、代理签名、群签名、不可否认签名、公平盲签名、门限签名、具有消息恢复功能的签名等,它与具体应用环境密切相关。显然,数字签名的应用涉及到法律问题,美国联邦政府基于有限域上的离散对数问题制定了自己的数字签名标准(DSS),部分州已制定了数字签名法。一些国家如法国和德国已经制定了数字签名法。

think58 [资料来源:http://think58.com]


1.3本课题研究的意义
古往今来,通信中的安全保密问题一直受到广泛关注。历史上,交战双方在通信安全、保密和密码破译方面的优势均被认为是取得战争胜利的关键因素之一。今天,人类已进入信息化 时代,现代通信涉及各个行业,信息安全已成为人人都关心的问题,这就促使密码学揭去了神秘的面纱,为更广泛的领域和大众 copyright think58

[资料来源:www.THINK58.com]

1.存放待解密文的内存指针(长度为readlen,可能经过填充;
2.存放用户输入的密钥内存的指针
3.待解密文的长度( 8字节的倍数)
功能:
生成解密密钥,把待解密文分割成64位的块,逐块完成16次迭代解密,解密后的明文存放在data所指向的内存中。
(三)int des3(char *data, char *key, int n ,int readlen)
参数:
1.存放待加密明文的内存指针(长度为readlen,可能经过填充;
2.存放用户输入的密钥内存的指针
3.用户指定进行多少层加密
4.待加密明文的长度(8字节的倍数)
功能:
生成加密密钥,把待加密的明文分割成64位的块,把第i-1层加密后的密文作为第i层的明文输入,根据用户指定的加密层数进行n层加密,最终生成的密文存放在data所指向内存中。
说明:
用户仅仅输入一条密钥,所有的加密密钥都是由这条密钥生成.
(四)int Ddes3(char *data, char*key, int n ,int readlen)
参数:
1.存放待解密文的内存指针(长度为readlen,可能经过填充;
2.存放用户输入的密钥内存的指针
3.用户指定进行多少层解密
4.待解密文的长度(8字节的倍数)
功能: think58.com [版权所有:http://think58.com]

为加密控件按钮添加事件处理程序,这段程序的功能是将选定的文件加密, 获得待加密文件名、获得保存文件名、创建文件流分别指向输入和输出文件,根据密码算出密钥并保存到选定的文件中去,代码如下:
private void encode_Click(object sender, EventArgs e)
        {//获得待加密文件名
            string inName  = this.textBox1.Text;
          //获得保存文件名
            string outName = this.textBox2.Text;
            byte[] desIV = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 };
            byte[] desKey ={ };
//根据密码算出密钥
            string keyString = this.textBox3.Text;
            if (keyString.Length >= 8) 内容来自think58 [资料来源:http://www.THINK58.com]
            {
               desKey = new byte[]{(byte)keyString[0],(byte)keyString[1],(byte)keyString[2],
              (byte)keyString[3],(byte)keyString[4],(byte)keyString[5],(byte)keyString[6],(byte)keyString[7]};
            }

本文来自think58 [资料来源:www.THINK58.com]

[资料来源:http://THINK58.com]

              if (keyString.Length == 6)
              {
                  desKey = new byte[]{(byte)keyString[0],(byte)keyString[1],(byte)keyString[2],
              (byte)keyString[3],(byte)keyString[4],(byte)keyString[5],0x07,0x08};
              } 本文来自think58

[资料来源:THINK58.com]

              if (keyString.Length ==7)
              {
                  desKey = new byte[]{(byte)keyString[0],(byte)keyString[1],(byte)keyString[2],
              (byte)keyString[3],(byte)keyString[4],(byte)keyString[5],(byte)keyString[6],0x07};
              }
//创建文件流分别指向输入和输出文件
              FileStream fin = new FileStream(inName, FileMode.Open, FileAccess.Read);
              FileStream fout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);
              fout.SetLength(0);

copyright think58 [资料来源:THINK58.com]


//每次的中间流〖本文来自:计算机毕业网  〗
              byte[] bin = new byte[100];
//代表已加密的流的大小
              int complete = 0;
 //每次写入的大小
              int len;
//代表要加密文件总的大小
              long totlen = fin.Length;
//创建加密流
              DES des = new DESCryptoServiceProvider();
              CryptoStream encStream = new CryptoStream(fout, des.CreateEncryptor
                  (desKey, desIV), CryptoStreamMode.Write);
//从输入文件中读取流,然后加密到输入文件中 think58

[资料来源:THINK58.com]


内容来自think58 [版权所有:http://think58.com]

[版权所有:http://think58.com]