CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

c#中如何给数据加密并解密

楼主keyanshang(bigbig.world)2004-09-03 13:53:28 在 .NET技术 / C# 提问

我的要求是:把用户输入的数据加密后存入数据库,把数据库中的数据读出来再解密给用户看。要加密解密部分的代码就好。多谢! 问题点数:5、回复次数:7Top

1 楼windinwing(潇笑)回复于 2004-09-03 14:02:35 得分 5

using   System;  
  using   System.Security.Cryptography;  
  using   System.Text;  
  using   System.IO;  
   
  namespace   Xiaoxiao.xDownLoad  
  {  
  ///   <summary>  
  ///   DES可逆加密  
  ///   </summary>  
  public   class   Des  
  {  
  public   Des()  
  {  
  //    
  //   TODO:   在此处添加构造函数逻辑  
  //  
  }  
   
  ///   <summary>  
  ///   加密。注意:sKey输入密码的时候,必须使用英文字符,区分大小写,且字符数量是8个,不能多也不能少,否则出错。  
  ///   </summary>  
  public   string   Encrypt(string   pToEncrypt,   string   sKey)  
  {  
  DESCryptoServiceProvider     des     =     new     DESCryptoServiceProvider();      
  //把字符串放到byte数组中      
  //原来使用的UTF8编码,我改成Unicode编码了,不行      
  byte[]     inputByteArray     =     Encoding.Default.GetBytes(pToEncrypt);      
  //byte[]     inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt);      
     
  //建立加密对象的密钥和偏移量      
  //原文使用ASCIIEncoding.ASCII方法的GetBytes方法      
  //使得输入密码必须输入英文文本      
  des.Key     =     ASCIIEncoding.ASCII.GetBytes(sKey);      
  des.IV     =     ASCIIEncoding.ASCII.GetBytes(sKey);      
  MemoryStream     ms     =     new     MemoryStream();      
  CryptoStream     cs     =     new     CryptoStream(ms,     des.CreateEncryptor(),CryptoStreamMode.Write);      
  //Write     the     byte     array     into     the     crypto     stream      
  //(It     will     end     up     in     the     memory     stream)      
  cs.Write(inputByteArray,     0,     inputByteArray.Length);      
  cs.FlushFinalBlock();      
  //Get     the     data     back     from     the     memory     stream,     and     into     a     string      
  StringBuilder     ret     =     new     StringBuilder();      
  foreach(byte     b     in     ms.ToArray())      
  {      
  //Format     as     hex      
  ret.AppendFormat("{0:X2}",     b);      
  }      
  return     ret.ToString();      
  }  
   
  ///   <summary>  
  ///   解密。  
  ///   </summary>  
  public   string   Decrypt(string   pToDecrypt,   string   sKey)  
  {  
  DESCryptoServiceProvider     des     =     new     DESCryptoServiceProvider();      
     
  //Put     the     input     string     into     the     byte     array      
  byte[]     inputByteArray     =     new     byte[pToDecrypt.Length     /     2];      
  for(int     x     =     0;     x     <     pToDecrypt.Length     /     2;     x++)      
  {      
  int     i     =     (Convert.ToInt32(pToDecrypt.Substring(x     *     2,     2),     16));      
  inputByteArray[x]     =     (byte)i;      
  }      
     
  //建立加密对象的密钥和偏移量,此值重要,不能修改      
  des.Key     =     ASCIIEncoding.ASCII.GetBytes(sKey);      
  des.IV     =     ASCIIEncoding.ASCII.GetBytes(sKey);      
  MemoryStream     ms     =     new     MemoryStream();      
  CryptoStream     cs     =     new     CryptoStream(ms,     des.CreateDecryptor(),CryptoStreamMode.Write);      
  //Flush     the     data     through     the     crypto     stream     into     the     memory     stream      
  cs.Write(inputByteArray,     0,     inputByteArray.Length);      
  cs.FlushFinalBlock();      
     
  //Get     the     decrypted     data     back     from     the     memory     stream      
  //建立StringBuild对象,CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象      
  StringBuilder     ret     =     new     StringBuilder();      
                             
  return     System.Text.Encoding.Default.GetString(ms.ToArray());      
  }  
   
  }  
  }  
  Top

2 楼keyanshang(bigbig.world)回复于 2004-09-03 14:05:41 得分 0

补充一下:简单的说就是如何把内存中的一个字符串加密,如何把加密后的字符串再解密为起初的字符串。Top

3 楼keyanshang(bigbig.world)回复于 2004-09-03 14:08:13 得分 0

这么快就有结果了,多谢上面的兄台,我研究一下先。Top

4 楼johnmaster(枫)回复于 2004-09-03 16:04:30 得分 0

不错,呵呵Top

5 楼keyanshang(bigbig.world)回复于 2004-09-04 10:23:47 得分 0

通过实验,代码完全正确,感谢上面仁兄的鼎力相助。Top

6 楼ihavenomoney(卿云灿兮,纠缦缦兮.日月光华,旦复旦兮)回复于 2004-09-07 16:28:29 得分 0

markTop

7 楼beijinboy(国产老顽童)回复于 2004-09-15 17:01:41 得分 0

markTop

相关问题

  • 数据加密解密
  • 数据库字段的加密解密?
  • 加密解密
  • 将数据加密后,写入数据库。写出数据库,再解密。
  • 关于数据加密解密的问题
  • 寻求一种数据库的加密解密算法
  • 寻求一种数据库的加密解密算法
  • 如何使用hash进行数据的加密和解密?
  • 紧急求救:des加密解密和数据库问题
  • [代码共享]用于数据加密解密的类

关键词

  • 加密
  • 解密
  • 数据
  • inputbytearray
  • skey
  • descryptoserviceprovider
  • ptoencrypt
  • asciiencoding
  • des
  • getbytes

得分解答快速导航

  • 帖主:keyanshang
  • windinwing

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo