110,533
社区成员
发帖
与我相关
我的任务
分享
public static class EncryptExtension {
public static string MD5(this string input) {
string returnValue = string.Empty;
byte[] inputBytes = Encoding.UTF8.GetBytes(input);
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
byte[] resultBytes = md5.ComputeHash(inputBytes);
foreach (byte b in resultBytes)
returnValue += b.ToString("X").PadLeft(2, '0');
md5.Clear();
return returnValue;
}
/// <summary>
/// RijndaelManaged加密
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static string Encrypt(this string input) {
if (input.IsEmpty())
return string.Empty;
return BaseEncrypt.Encrypt(input);
}
/// <summary>
/// 解密RijndaelManaged加密字符串
/// </summary>
/// <param name="input"></param>
/// <param name="originalText">解密后的明文字符串</param>
/// <returns></returns>
public static string Decrypt(this string input) {
if (input.IsEmpty())
return string.Empty;
try {
return BaseEncrypt.Decrypt(input);
}
catch { }
return string.Empty;
}
/// <summary>
/// 带时间戳的RijndaelManaged加密
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static string EncyptWithTime(this string input) {
if (input.IsEmpty())
return string.Empty;
int l = input.Length;
string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
Random rnd = new Random();
int P = rnd.Next(l);
input = input.Insert(P, time);
input = input.Encrypt();
input += string.Format("^{0}", P);
return input.Encrypt();
}
/// <summary>
/// 解密带时间戳的RijndaelManaged的加密串
/// </summary>
/// <param name="input"></param>
/// <param name="originalText">解密后的明文字符串</param>
/// <param name="time">时间戳</param>
/// <returns></returns>
public static bool TryDecryptWithTime(this string input, out string text, out DateTime time) {
text = string.Empty;
time = DateTime.MinValue;
if (!(text = input.Decrypt()).IsEmpty()) {
int position = text.LastIndexOf('^');
if (position != -1) {
int P = text.Substring(position + 1).ParseTo<int>();
if (P > 0) {
text = text.Substring(0, position);
if (!(text = text.Decrypt()).IsEmpty()) {
time = text.Substring(P, 19).ParseTo<DateTime>();
text = text.Substring(0, P) + text.Substring(P + 19);
return true;
}
}
}
}
return false;
}
}