拼吾爱程序人生

首页 » .Net编程 » C# » 自定义C#加密方法
cobra - 2008-5-14 12:07:00
文/oohacker  出处/CSDN

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

Code


使用方法很简单,如下所示:

Code


输出结果如下:
Hex MD5 Encryption:    eccca05fb779dcece81656890773b7bf
Hex SHA-1 Encryption:  67576ffe5410fb70651ef8fd550ecdb7a9901603

 您可能对 [C#] 的这些文章也感兴趣:

利用VisualC#实现Window管道技术
一种新的开发语言C#
.NETDelegates:AC#BedtimeStory中文版(下篇)
C#低级Windows API钩子拦截键盘输入
支付宝Payto接口的C#实现
VisualC#编写实现POP3的程序
C#写的ADSL拨号程序示例
Microsoft .NET 框架资源基础
C#进阶(四)
C#2.0之partial
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
道高一尺,魔高一丈,软件加密是一方面,还必须结合硬件的防范。
呵呵,我们做网站的流行一句话:人在江湖不要得罪人,否则骇客天天找上门。。。
1
查看完整版本: 自定义C#加密方法
Modify by pin5i DZNT_ExpandPackage 2.1.3237 2007-2008 pin5i.com
  Total Unique Visitors: