谁知道把一个字符串加密和解密?
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




