关于asp.net中的加密解密方法

diudiu121 2009-01-10 01:14:46
如题,小弟目前一直被这个问题困扰着;再网上搜索了一堆代码,感觉不是很好!
加密需要安全,不容易被破解;通过对应的解密方法可以还原原来的值;
请大家一起出出注意,谢谢了~
...全文
738 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
mmy007 2010-07-26
  • 打赏
  • 举报
回复
不错!正想要呢
小白的AI 2009-01-22
  • 打赏
  • 举报
回复
up
gzMysky 2009-01-22
  • 打赏
  • 举报
回复
up
diudiu121 2009-01-13
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 hack8 的回复:]
1、目前比较好的加密算法当数 AES,楼上讲DES已经趋于被淘汰,
2、md5 sha都是哈希算法属于不可逆算法,一般用于身份认证或者签名认证
3、算法的强弱还取决于你选择密钥的强度,如果你选密钥较弱也会造成穷尽上的不安全
4、如果要采实现较好的安全,建议采用RSA+DH进行密钥的交换,数据传输可采用AES等高强度加密算法。
[/Quote]


能提供好的例子供大家学习下吗?多谢:)
阿彪兄 2009-01-11
  • 打赏
  • 举报
回复
md5一般可以了,还有就是可以用微软的安全认证系统,它的安全认证系统很不错。用的是散列算法
Tinary3v0 2009-01-11
  • 打赏
  • 举报
回复
椭圆曲线加密方法是目前来说对安全的了 楼主可以去搜索 使用的是非对称密钥
同等强度加密解密速度较快 但是编程实现比较难 Crypto++里面有这个东东。

如果不是对安全性要求那么高 直接使用.net自带的就够了。
hack8 2009-01-11
  • 打赏
  • 举报
回复
1、目前比较好的加密算法当数 AES,楼上讲DES已经趋于被淘汰,
2、md5 sha都是哈希算法属于不可逆算法,一般用于身份认证或者签名认证
3、算法的强弱还取决于你选择密钥的强度,如果你选密钥较弱也会造成穷尽上的不安全
4、如果要采实现较好的安全,建议采用RSA+DH进行密钥的交换,数据传输可采用AES等高强度加密算法。
wangping_li 2009-01-11
  • 打赏
  • 举报
回复
建议使用MD5
如果要比较的话都进行MD5加密后再比较


//Sourcein是要进行加密的字符串
public static string MD5(string Sourcein)
{
MD5CryptoServiceProvider MD5CSP = new MD5CryptoServiceProvider();
byte[] MD5Source = System.Text.Encoding.UTF8.GetBytes(Sourcein);
byte[] MD5Out = MD5CSP.ComputeHash(MD5Source);

return Convert.ToBase64String(MD5Out);
}
xierfly 2009-01-11
  • 打赏
  • 举报
回复
路过
wangping_li 2009-01-11
  • 打赏
  • 举报
回复
一般都用MD5的,是不可逆的
注:下面代码实现的是256位的AES算法

//AES加密函数
public static string Encrypt(string toEncrypt) {
byte[] keyArray = UTF8Encoding.UTF8.GetBytes("12345678901234567890123456789012");
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);

RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyArray;
rDel.Mode = CipherMode.ECB;
rDel.Padding = PaddingMode.PKCS7;

ICryptoTransform cTransform = rDel.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);

return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}

//AES解密函数
public static string Decrypt(string toDecrypt) {
byte[] keyArray = UTF8Encoding.UTF8.GetBytes("12345678901234567890123456789012");
byte[] toEncryptArray = Convert.FromBase64String(toDecrypt);

RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyArray;
rDel.Mode = CipherMode.ECB;
rDel.Padding = PaddingMode.PKCS7;

ICryptoTransform cTransform = rDel.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);

return UTF8Encoding.UTF8.GetString(resultArray);
}



mengxj85 2009-01-10
  • 打赏
  • 举报
回复
1.2楼已经给了Des,这个可以解密,要想安全些,可以考虑用MD5,不过不能解密
  • 打赏
  • 举报
回复
建议你如果使用现成的,最好使用几个算法一期加密,不然解密者会用算法对你的密文进行碰撞
或是自己修改一下加密算法
hongmaohouzi 2009-01-10
  • 打赏
  • 举报
回复
有加密,就需要解密,否则你无法解析出来,加了密的内容,就是不能让对方知道你的加密算法,如果对方得到了这个加密算法,你设计的再高明也是没用的,我的建议是,对你的信息采用多种加密方法并用,对加密过的信息再次加密(当然两次加密的算法是不能一样的)!
shumark 2009-01-10
  • 打赏
  • 举报
回复
Mark !
fanjingyxl 2009-01-10
  • 打赏
  • 举报
回复
自己写一套加密的算法
up
diudiu121 2009-01-10
  • 打赏
  • 举报
回复
非常感谢1,2楼的回复,能否分享下各自方法的优缺点呢?
冷月孤峰 2009-01-10
  • 打赏
  • 举报
回复
这里有一堆加密解密的类:
http://www.baidu.com/s?wd=c%23+%BC%D3%C3%DC%BD%E2%C3%DC%C0%E0
takako_mu 2009-01-10
  • 打赏
  • 举报
回复
发个New DES

using System;
using System.Security.Cryptography;
using System.IO;
using System.Text;

namespace Test
{
/// <summary>
/// NewDES 的摘要描述。
/// </summary>
public class NewDES
{
public NewDES()
{
//
// TODO: 在此加入建構函式的程式碼
//
}
//加密鑰匙
private static byte[] DESKey=new byte[]{11,23,93,102,72,41,18,12};
//解密鑰匙
private static byte[] DESIV=new byte[]{75,158,46,97,78,57,17,36};

public string Encode(string Encode_String)
{
DESCryptoServiceProvider objDES=new DESCryptoServiceProvider();
MemoryStream objMemoryStream=new MemoryStream();
CryptoStream objCryptoStream=new CryptoStream(objMemoryStream,objDES.CreateEncryptor(DESKey,DESIV),CryptoStreamMode.Write);
StreamWriter objStreamWriter=new StreamWriter(objCryptoStream);
objStreamWriter.Write(Encode_String);
objStreamWriter.Flush();
objCryptoStream.FlushFinalBlock();
objMemoryStream.Flush();
return Convert.ToBase64String(objMemoryStream.GetBuffer(),0,(int)objMemoryStream.Length);

}
public string Decode(string Encode_String)
{
DESCryptoServiceProvider objDES=new DESCryptoServiceProvider();
byte[] Input=Convert.FromBase64String(Encode_String);
MemoryStream objMemoryStream=new MemoryStream(Input);
CryptoStream objCryptoStream=new CryptoStream (objMemoryStream,objDES.CreateDecryptor(DESKey,DESIV),CryptoStreamMode.Read);
StreamReader objStreamReader=new StreamReader(objCryptoStream);
return objStreamReader.ReadToEnd();
}
}
}

加载更多回复(1)

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧