cobra - 2008-5-14 12:07:00
文/oohacker 出处/CSDN
在程序中经常都要用到数据加密, 不过.NET中的加密方式稍微有那么一点复杂了, 有时候我们希望以更简单的方式处理加密, 那么下面的代码是一个简单的不错的例子:

Code
using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
using QyBBS.BBSConfiguration;
using QyBBS.DataAccess;
namespace OOHacker.Example
...{
public class MyEncrypter
...{
//=========================================================================
// 返回长为40位的SHA-1加密字符串
//=========================================================================
public static string HexSHA(string text)
...{
return EncryptTemplate(SHA1.Create(), text);
}
//=========================================================================
// 返回长为32位的MD5加密字符串
//=========================================================================
public static string HexMD5(string text)
...{
return EncryptTemplate(MD5.Create(), text);
}
//=========================================================================
// 加密模板
//=========================================================================
private static string EncryptTemplate(HashAlgorithm algo, string text)
...{
byte[] data = algo.ComputeHash(ASCIIEncoding.ASCII.GetBytes(text));
StringBuilder codes = new StringBuilder();
for (int i = 0; i < data.Length; ++i)
...{
codes.Append(data[i].ToString("x2"));
}
return codes.ToString();
}
}
}
使用方法很简单,如下所示:

Code
string strmd5 = MyEncrypter.HexMD5("oohacker");
string strsha = MyEncrypter.HexSHA("oohacker");
Console.WriteLine("Hex MD5 Encryption: {0}", strmd5);
Console.WriteLine("Hex SHA-1 Encryption: {0}", strsha);
输出结果如下:
Hex MD5 Encryption: eccca05fb779dcece81656890773b7bf
Hex SHA-1 Encryption: 67576ffe5410fb70651ef8fd550ecdb7a9901603
您可能对 [C#] 的这些文章也感兴趣:
cndiyssrs - 2008-6-18 13:28:00
应该是
data[i].ToSting
楼主修正下吧
cobra - 2008-6-18 13:43:00
原帖由 cndiyssrs 于 2008-6-18 13:28:00 发表
应该是
data.ToSting
楼主修正下吧
多谢提示:)
cndiyssrs - 2008-6-19 21:21:00
using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
using System.IO;
namespace MD5aSHA1
{
class Program
{
public class Encryption
{
public static string Md5Encrypt(string text) //字符串MD5加密
{
byte[] data = MD5.Create().ComputeHash(ASCIIEncoding.ASCII.GetBytes(text));
return Encrypt(data);
}
public static string Sha1Encrypt(string text) //字符串SHA1加密
{
byte[] data = SHA1.Create().ComputeHash(ASCIIEncoding.ASCII.GetBytes(text));
return Encrypt(data);
}
public static string FileEncrypt(string path, string type) //判断文件是否存在以及相关权限
{
try
{
FileStream FS = new FileStream(path, FileMode.Open, FileAccess.Read);
}
catch
{
return "Error";
}
string code = "";
if (type.ToLower() == "md5") code = FileMd5Encrypt(path);
else if (type.ToLower() == "sha1") code = FileSha1Encrypt(path);
return code;
}
private static string FileMd5Encrypt(string path) //文件MD5加密
{
FileStream FS = new FileStream(path, FileMode.Open, FileAccess.Read);
MD5CryptoServiceProvider MD5 = new MD5CryptoServiceProvider();
byte[] data = MD5.ComputeHash(FS);
return Encrypt(data);
}
private static string FileSha1Encrypt(string path) //文件SHA1加密
{
FileStream FS = new FileStream(path, FileMode.Open, FileAccess.Read);
SHA1CryptoServiceProvider SHA1 = new SHA1CryptoServiceProvider();
byte[] data = SHA1.ComputeHash(FS);
return Encrypt(data);
}
private static string Encrypt(byte[] data) //加密转码
{
StringBuilder codes = new StringBuilder();
for (int i = 0; i < data.Length; ++i)
{
codes.Append(data[i].ToString("x2"));
}
return codes.ToString().ToUpper();
}
}
static void Main(string[] args)
{
Console.WriteLine(Encryption.Md5Encrypt("admin"));
Console.Write(Encryption.FileEncrypt(@"c:\boot.inf","md5"));
Console.ReadLine();
}
}
}
cndiyssrs - 2008-6-19 21:22:00
刚接触C#
请指教
cobra - 2008-6-23 23:00:00
原帖由 cndiyssrs 于 2008-6-19 21:22:00 发表
刚接触C#
请指教
相互交流:)
该文原创者的想法是好的,通过自定义规则实现数据加密,但有点尚未考虑,即如何解密,我也跟他回复过,他称正在研究。。。
MD5加密是最普遍的加密手段之一,一般用于登录帐号的密码加密,但不适合更高要求的电子商务数据加密,那样用到电了认证和钥匙加密相结合的方式。
cndiyssrs - 2008-6-26 10:06:00
貌似更高级的安全需求的话不仅是密码加密了
QQ的密码就是双加密后传输验证的
海盗湾采取了SSL连接方式
个人感觉应该采取一套完整的加密方案才能达到商业化的要求
普通的话MD5或SHA1够了
cobra - 2008-6-26 12:03:00
道高一尺,魔高一丈,软件加密是一方面,还必须结合硬件的防范。
呵呵,我们做网站的流行一句话:人在江湖不要得罪人,否则骇客天天找上门。。。