CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

谁知道把一个字符串加密和解密?

楼主Happyboy_zjy(阳光男孩)2002-06-21 13:00:11 在 .NET技术 / C# 提问

C#中有这类的方法吗,能实现加解密吗? 问题点数:90、回复次数:7Top

1 楼zeaing()回复于 2002-06-21 13:44:49 得分 0

东西都在using   System.Security.Cryptography下面,  
  不过用起来有点复杂,可能一下子有点糊涂。  
  我举个例子吧。  
   
  string   plainText="Hello   World!";  
  string   xmlKeyString="<RSAKeyValue><Modulus>n+L1DjIfp6hCs5kDxcf9Wi4p/ITctUmkzFhC+10+ccMhv0XBYUBtX6NWy5ZuGg3jtU7xEBHbr3NTZQYNdMro7QFzdrKwl4gNMMK+1MNodnR/8IEWczY4X1oOiP2/hHaQNfnwhkgNIr7WvD5OBQpKtl7KQ65H1dhYnYOHg9agVPE=</Modulus><Exponent>AQAB</Exponent><P>ytNPaKZsCvC80Z5FyDp3ljqHDl6+8ArkoaZNmVeFmtQzJLm+ZJuTG7TFWlpPNxCP8EbgqFEjUuVnYr6aXag3Ow==</P><Q>yc3Kkglx7eWqMBxjC2iVINc7UX/CiIxTCByrklrGdzR9bRJ4S0kb8EZz+UQ8CClZz6DoNpAOutYp07TyU7SZww==</Q><DP>rXb/6S68JLczpctJPy/R6yfvLfkWL9IBK8dBgq351Cs7+mLpVL5BmGaIivfF3ABMOmFD7nBGV7VfMHJ3LzaY1Q==</DP><DQ>mjxf65eubL2Qgm7fwDNxbwUxQAveeZCOUW/gLd6VOzxx9HAeYqQA53ZhYw0kuLQqAUeg0zrtFx1iIH12jEVHEw==</DQ><InverseQ>DDAxAuhCxuhAytSWrx7a/jfXpXzAwuan1SED54/V9Lwm+eb9n7NHJY/q+vcXqSgYz75w9PPLUDsGyNFTd6Yfjg==</InverseQ><D>fKX+8KtJHHdEUSoo08e/j8/PseuO+dLJJPpmdftS1HQRWkIyqfQFkPsRjrTfb3aGoPJDY4jYoWcii+71DKmofuoe8mQNRJ0PVKki7HIIkRA61sHVEKUK/5skvaI/5kgRk4MGU/tHBjRZiC4Y0bXriesQnDgXR/iNCWsJ9rLZeQU=</D></RSAKeyValue>";  
   
  RSACryptoServiceProvider   rsa   =   new   RSACryptoServiceProvider();  
  rsa.FromXmlString(xmlKeyString);  
  byte[]   ciphertext   =   rsa.Encrypt(Encoding.UTF8.GetBytes(plainText),   true);  
  string   cipherString=   Convert.ToBase64String(ciphertext);Top

2 楼zeaing()回复于 2002-06-21 13:47:51 得分 10

c#里面有一堆加密解密的东西,不过这东西具体质量不清楚。我估计如果有很重要的软件要开发,可能还是要自己写算法和代码。  
   
  另外,还需要看你的需求是什么,到底你的加密解密要用在那里。有很多地方并不需要用rsa这种东西。有时候可能只要做一个md5就可以了。比如可以将用户的密码md5以后存放在数据库里面。Top

3 楼bearbaba(【笨笨熊】)回复于 2002-06-21 13:57:31 得分 0

最简单的办法,每个字符加个合理的值,(加密);每个字符减个合理的值,(解密)Top

4 楼redcaff_l(热的咖啡)回复于 2002-06-21 13:58:34 得分 50

给你一个例子看看:  
  public   string   crypString(string   s)  
  {  
  FileStream   fs     =   new   FileStream("EncryptedFile.txt",FileMode.Create,FileAccess.Write);  
  byte[]   bytearrayinput   =   (new   UnicodeEncoding()).GetBytes(s);  
  DESCryptoServiceProvider   des   =   new   DESCryptoServiceProvider();  
  ICryptoTransform   desencrypt   =   des.CreateEncryptor();  
  CryptoStream   cryptostream   =   new   CryptoStream(fs,desencrypt,CryptoStreamMode.Write);  
  cryptostream.Write(bytearrayinput,0,bytearrayinput.Length);  
  cryptostream.Close();  
  //加密结束,下面是解密  
  FileStream   fsread   =   new   FileStream("EncryptedFile.txt",FileMode.Open,FileAccess.Read);  
  ICryptoTransform   desdecrypt   =   des.CreateDecryptor();  
  CryptoStream   cryptostreamDecr   =   new   CryptoStream(fsread,desdecrypt,CryptoStreamMode.Read);  
  //返回的是已经解密的字符串  
  return   (new   StreamReader(cryptostreamDecr,   new   UnicodeEncoding())).ReadToEnd();  
  }  
   
  //如果你想直接返回加密的字符串,看下面的方法  
  public   string   crypString(string   s)  
  {  
  FileStream   fs     =   new   FileStream("EncryptedFile.txt",FileMode.Create,FileAccess.ReadWrite);  
  byte[]   bytearrayinput   =   (new   UnicodeEncoding()).GetBytes(s);  
  DESCryptoServiceProvider   des   =   new   DESCryptoServiceProvider();  
  ICryptoTransform   desencrypt   =   des.CreateEncryptor();  
  CryptoStream   cryptostream   =   new   CryptoStream(fs,desencrypt,CryptoStreamMode.Read);  
  return   (new   StreamReader(cryptostream,   new   UnicodeEncoding())).ReadToEnd();  
  }  
   
   
  Top

5 楼redcaff_l(热的咖啡)回复于 2002-06-21 14:23:26 得分 10

修改一下:  
  public   string   crypString(string   s)  
  {  
  FileStream   fs     =   new   FileStream("EncryptedFile.txt",FileMode.Create,FileAccess.ReadWrite);  
  byte[]   bytearrayinput   =   (new   UnicodeEncoding()).GetBytes(s);  
  DESCryptoServiceProvider   des   =   new   DESCryptoServiceProvider();  
  ICryptoTransform   desencrypt   =   des.CreateEncryptor();  
  CryptoStream   cryptostream   =   new   CryptoStream(fs,desencrypt,CryptoStreamMode.Read);  
  string   returnValue   =   (new   StreamReader(cryptostream,   new   UnicodeEncoding())).ReadToEnd();  
  cryptostream.Close();  
  return   returnValue;  
  }  
  Top

6 楼sxx412()回复于 2002-06-21 14:47:32 得分 20

 
   
  使用ASP.NET加密口令  
   
  作者:bben_h      
  2001-12-15   1:45:46    
   
  [被查看:845次]         (原创作品)    
   
  --------------------------------------------------------------------------------  
     
     
  当我们在网站上建立数据库时,保护用户的信息安全是非常必要的。多数用户不愿意让别人知道自己的信息,同时网管也不想因为安全问题而丢失网站的信誉。无论对于谁,安全问题都是非常重要的。    
  为了解决这个问题,我给大家提供一个简单实用,但是老套的方法,就是口令加密。在此我们使用ASP.NET技术对口令加密。简单的讲,就是将用户提供的口令加密之后,然后让它和存放于系统中的数据比较,如果相同,则通过验证。    
  在ASP中,并未提供加密的对象,我们只能使用外部的对象来进行加密。现在好了,在ASP.NET中提供了加密的解决方法。在名字空间System.Web.Security中包含了类FormsAuthentication,其中有一个方法HashPasswordForStoringInConfigFile。这个方法可以将用户提供的字符变成乱码,然后存储起来,甚至可以   存储在cookies中。    
  HashPasswordForStoringInConfigFile方法使用起来很简单,它支持"SHA1"和"MD5"加密算法。    
  下面的代码简单的演示了关于其用法:    
  <%@   Page   language="c#"   %>    
  <%@   Import   Namespace="System.Web.Security"   %>    
  <html>    
      <head>    
          <script   language="C#"   runat="server">    
          public   void   encryptString(Object   sender,   EventArgs   e)    
          {    
          SHA1.Text   =     FormsAuthentication.HashPasswordForStoringInConfigFile(txtPassword.Text,"SHA1");    
          MD5.Text   =FormsAuthentication.HashPasswordForStoringInConfigFile(txtPassword.Text,   "MD5")   ;    
          }    
          </script>    
      </head>    
      <body>    
          <form   runat="server"   ID="Form1">    
            <p>    
            <b>Original   Clear   Text   Password:   </b>    
            <br>    
            <asp:Textbox   id="txtPassword"   runat="server"   />    
            <asp:Button   runat="server"   text="Encrypt   String"   onClick="encryptString"   ID="Button1"   />    
            </p>    
            <p>    
              <b>Encrypted   Password   In   SHA1:   </b>    
              <asp:label   id="SHA1"   runat="server"   />    
            </p>    
            <p>    
              <b>Encrypted   Password   In   MD5:   </b>    
              <asp:label   id="MD5"   runat="server"   />    
            </p>    
          </form>    
      </body>    
  </html>        
   
   
   
  正如你所看到的这样简单易用。我们可以把这段加密程序封装在一个函数里便于重复的使用。代码如下:    
  public   string   EncryptPassword(string   PasswordString,string   PasswordFormat   )    
      {    
      if   (PasswordFormat="SHA1"){    
        EncryptPassword=FormsAuthortication.HashPasswordForStoringInConfigFile(PasswordString   ,"SHA1");    
      }    
        elseif   (PasswordFormat="MD5")    
        {     EncryptPassword=FormsAuthortication.HashPasswordForStoringInConfigFile(PasswordString   ,"MD5");    
        }    
      else    
        {    
        EncryptPassword="";    
        }    
       
  我们可以在数据库中添加一个字段,使用insert将加密的口令作为一个string存入数据库中。当用户登陆的时候,就可以将用户输入的口令加密结果和数据库中的正确结果比较,通过这种办法来验证口令的正确性了。在此,我就不往下写了,关于数据库的知识还得读者自己去学习。    
  Top

7 楼xdev(Gallant)回复于 2002-06-21 17:11:12 得分 0

还真多阿,    
   
      对称算法可以使用DES   和   Rijndael   ,尽量使用Rijndael   ,   AES标准  
  好像没有美国出口限制   阿  
       
        跟DES   不一样啊Top

相关问题

  • 字符串的加密与解密
  • 字符串加密和解密函数
  • 我要字符串加密解密源代码!
  • 有关对Encrypt函数加密字符串的解密问题。
  • c中字符串加密解密的问题
  • 能给MD5加密的字符串解密吗?
  • 跪求!!!字符串加密解密函数
  • 请教如何加密解密字符串
  • [求代码]对字符串加密与解密的函数
  • 如何对字符串加密解密?(des,md5等等都可以)

关键词

  • asp.net
  • c#

得分解答快速导航

  • 帖主:Happyboy_zjy
  • zeaing
  • redcaff_l
  • redcaff_l
  • sxx412

相关链接

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

广告也精彩

反馈

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