C# 加密解密(DES,3DES,MD5,Base64) 类
来源:互联网 发布:动圈动铁圈铁 知乎 编辑:程序博客网 时间:2024/06/02 17:27
http://www.cnblogs.com/malaohu/archive/2013/07/25/3214136.html
保存!
public
sealed
class
EncryptUtils
{
#region Base64加密解密
/// <summary>
/// Base64加密
/// </summary>
/// <param name="input">需要加密的字符串</param>
/// <returns></returns>
public
static
string
Base64Encrypt(
string
input)
{
return
Base64Encrypt(input,
new
UTF8Encoding());
}
/// <summary>
/// Base64加密
/// </summary>
/// <param name="input">需要加密的字符串</param>
/// <param name="encode">字符编码</param>
/// <returns></returns>
public
static
string
Base64Encrypt(
string
input, Encoding encode)
{
return
Convert.ToBase64String(encode.GetBytes(input));
}
/// <summary>
/// Base64解密
/// </summary>
/// <param name="input">需要解密的字符串</param>
/// <returns></returns>
public
static
string
Base64Decrypt(
string
input)
{
return
Base64Decrypt(input,
new
UTF8Encoding());
}
/// <summary>
/// Base64解密
/// </summary>
/// <param name="input">需要解密的字符串</param>
/// <param name="encode">字符的编码</param>
/// <returns></returns>
public
static
string
Base64Decrypt(
string
input, Encoding encode)
{
return
encode.GetString(Convert.FromBase64String(input));
}
#endregion
#region DES加密解密
/// <summary>
/// DES加密
/// </summary>
/// <param name="data">加密数据</param>
/// <param name="key">8位字符的密钥字符串</param>
/// <param name="iv">8位字符的初始化向量字符串</param>
/// <returns></returns>
public
static
string
DESEncrypt(
string
data,
string
key,
string
iv)
{
byte
[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key);
byte
[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);
DESCryptoServiceProvider cryptoProvider =
new
DESCryptoServiceProvider();
int
i = cryptoProvider.KeySize;
MemoryStream ms =
new
MemoryStream();
CryptoStream cst =
new
CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);
StreamWriter sw =
new
StreamWriter(cst);
sw.Write(data);
sw.Flush();
cst.FlushFinalBlock();
sw.Flush();
return
Convert.ToBase64String(ms.GetBuffer(), 0, (
int
)ms.Length);
}
/// <summary>
/// DES解密
/// </summary>
/// <param name="data">解密数据</param>
/// <param name="key">8位字符的密钥字符串(需要和加密时相同)</param>
/// <param name="iv">8位字符的初始化向量字符串(需要和加密时相同)</param>
/// <returns></returns>
public
static
string
DESDecrypt(
string
data,
string
key,
string
iv)
{
byte
[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key);
byte
[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);
byte
[] byEnc;
try
{
byEnc = Convert.FromBase64String(data);
}
catch
{
return
null
;
}
DESCryptoServiceProvider cryptoProvider =
new
DESCryptoServiceProvider();
MemoryStream ms =
new
MemoryStream(byEnc);
CryptoStream cst =
new
CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
StreamReader sr =
new
StreamReader(cst);
return
sr.ReadToEnd();
}
#endregion
#region MD5加密
/// <summary>
/// MD5加密
/// </summary>
/// <param name="input">需要加密的字符串</param>
/// <returns></returns>
public
static
string
MD5Encrypt(
string
input)
{
return
MD5Encrypt(input,
new
UTF8Encoding());
}
/// <summary>
/// MD5加密
/// </summary>
/// <param name="input">需要加密的字符串</param>
/// <param name="encode">字符的编码</param>
/// <returns></returns>
public
static
string
MD5Encrypt(
string
input, Encoding encode)
{
MD5 md5 =
new
MD5CryptoServiceProvider();
byte
[] t = md5.ComputeHash(encode.GetBytes(input));
StringBuilder sb =
new
StringBuilder(32);
for
(
int
i = 0; i < t.Length; i++)
sb.Append(t[i].ToString(
"x"
).PadLeft(2,
'0'
));
return
sb.ToString();
}
/// <summary>
/// MD5对文件流加密
/// </summary>
/// <param name="sr"></param>
/// <returns></returns>
public
static
string
MD5Encrypt(Stream stream)
{
MD5 md5serv = MD5CryptoServiceProvider.Create();
byte
[] buffer = md5serv.ComputeHash(stream);
StringBuilder sb =
new
StringBuilder();
foreach
(
byte
var
in
buffer)
sb.Append(
var
.ToString(
"x2"
));
return
sb.ToString();
}
/// <summary>
/// MD5加密(返回16位加密串)
/// </summary>
/// <param name="input"></param>
/// <param name="encode"></param>
/// <returns></returns>
public
static
string
MD5Encrypt16(
string
input, Encoding encode)
{
MD5CryptoServiceProvider md5 =
new
MD5CryptoServiceProvider();
string
result = BitConverter.ToString(md5.ComputeHash(encode.GetBytes(input)), 4, 8);
result = result.Replace(
"-"
,
""
);
return
result;
}
#endregion
#region 3DES 加密解密
public
static
string
DES3Encrypt(
string
data,
string
key)
{
TripleDESCryptoServiceProvider DES =
new
TripleDESCryptoServiceProvider();
DES.Key = ASCIIEncoding.ASCII.GetBytes(key);
DES.Mode = CipherMode.CBC;
DES.Padding = PaddingMode.PKCS7;
ICryptoTransform DESEncrypt = DES.CreateEncryptor();
byte
[] Buffer = ASCIIEncoding.ASCII.GetBytes(data);
return
Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
}
public
static
string
DES3Decrypt(
string
data,
string
key)
{
TripleDESCryptoServiceProvider DES =
new
TripleDESCryptoServiceProvider();
DES.Key = ASCIIEncoding.ASCII.GetBytes(key);
DES.Mode = CipherMode.CBC;
DES.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
ICryptoTransform DESDecrypt = DES.CreateDecryptor();
string
result =
""
;
try
{
byte
[] Buffer = Convert.FromBase64String(data);
result = ASCIIEncoding.ASCII.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
}
catch
(Exception e)
{
}
return
result;
}
#endregion
}
0 0
- C# 加密解密(DES,3DES,MD5,Base64) 类
- IOS 加密解密(AES、DES、base64、md5)
- DES+Base64 加密、解密
- C#使用MD5加密,DES加密解密的一个类
- C# .Net 的加密(DES加密解密,MD5,SHA1)
- android中的MD5、Base64、DES/3DES/ADES加解密
- md5加密 3-DES 加密 解密
- C# 字符串DES加/解密与MD5加密类
- MD5加密、DES加密,DES解密
- C# 3DES加密解密
- C# DES 加密解密类
- C# DES加密解密类
- C# DES加密/解密类
- DES加密解密 md5加密
- DES和Base64加密解密类
- ios 加密解密(包括base64,DES)
- C#.NET 加密解密:AES/DES/Base64/RSA/MD5/SHA256
- C#.NET 加密解密:AES/DES/Base64/RSA/MD5/SHA256
- MobileWeb适配(一)
- 科研心得体会
- AWWWB.COM网站克隆器
- Keil 界面配置保存和共享
- android studio使用遇到问题
- C# 加密解密(DES,3DES,MD5,Base64) 类
- 线程的详细说明
- WaitForMultipleObjects()函数
- 欢迎使用CSDN-markdown编辑器
- iOS webView加载本地html,及图片等问题
- hadoop2.x HDFS快照介绍
- Linux下完美卸载Oracle教程
- day08
- List之Union(),Intersect(),Except() 亦可以说是数学中的并集,交集,差集