C# 암호화 해독(DES, 3DES, MD5, Base64) 클래스
7686 단어 base64
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
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ssh를 통해 이미지 데이터와 같은 바이너리를 서버로 보냅니다.ssh로부터 웹 컨텐츠 등을 편집하고 있을 때, 약간의 화상을 서버상에 보내고 싶을 때가 있다. 또 하나 콘솔을 열어 거기에서 scp하거나 전송용의 어플리케이션을 기동하거나 해도 괜찮지만, 괜찮다. 몇 대의 서버를 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.