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();
}
}
}