Skip to content

Instantly share code, notes, and snippets.

@minhphuc429
Created February 4, 2016 12:55
Show Gist options
  • Save minhphuc429/25bd14ee0fcf76662666 to your computer and use it in GitHub Desktop.
Save minhphuc429/25bd14ee0fcf76662666 to your computer and use it in GitHub Desktop.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.IO;
using System.Net;
using System.Web;
using System.Security.Cryptography;
using System.Xml;
public class MySecurity
{
#region md5 encryption
public string MD5string(string v)
{
string temp = "";
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
ASCIIEncoding ac2 = new ASCIIEncoding();
byte[] b = new byte[256];
b = ac2.GetBytes(v);
b = md5.ComputeHash(b);
for (int i = 0; i <= b.Length - 1; i++)
{
temp = temp + b[i].ToString("x2").ToLower();
}
return temp;
}
#endregion md5 encryption
#region simple encrypt with key
//encrypt with key
public string EnCryptWithKey(string strEnCrypt, string key)
{
try
{
byte[] keyArr;
byte[] EnCryptArr = UTF8Encoding.UTF8.GetBytes(strEnCrypt);
MD5CryptoServiceProvider MD5Hash = new MD5CryptoServiceProvider();
keyArr = MD5Hash.ComputeHash(UTF8Encoding.UTF8.GetBytes(key));
TripleDESCryptoServiceProvider tripDes = new TripleDESCryptoServiceProvider();
tripDes.Key = keyArr;
tripDes.Mode = CipherMode.ECB;
tripDes.Padding = PaddingMode.PKCS7;
ICryptoTransform transform = tripDes.CreateEncryptor();
byte[] arrResult = transform.TransformFinalBlock(EnCryptArr, 0, EnCryptArr.Length);
return Convert.ToBase64String(arrResult, 0, arrResult.Length);
}
catch (Exception ex) { }
return "";
}
//decrypt with key
public string DeCryptWithKey(string strDecypt, string key)
{
try
{
byte[] keyArr;
byte[] DeCryptArr = Convert.FromBase64String(strDecypt);
MD5CryptoServiceProvider MD5Hash = new MD5CryptoServiceProvider();
keyArr = MD5Hash.ComputeHash(UTF8Encoding.UTF8.GetBytes(key));
TripleDESCryptoServiceProvider tripDes = new TripleDESCryptoServiceProvider();
tripDes.Key = keyArr;
tripDes.Mode = CipherMode.ECB;
tripDes.Padding = PaddingMode.PKCS7;
ICryptoTransform transform = tripDes.CreateDecryptor();
byte[] arrResult = transform.TransformFinalBlock(DeCryptArr, 0, DeCryptArr.Length);
return UTF8Encoding.UTF8.GetString(arrResult);
}
catch (Exception ex) { }
return "";
}
#endregion simple encrypt with key
#region hash encryption
//encrypt
public string EncryptHas(string ToEncrypt, bool useHasing, string key)
{
byte[] keyArray;
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(ToEncrypt);
if (useHasing)
{
MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key));
hashmd5.Clear();
}
else
{
keyArray = UTF8Encoding.UTF8.GetBytes(key);
}
TripleDESCryptoServiceProvider tDes = new TripleDESCryptoServiceProvider();
tDes.Key = keyArray;
tDes.Mode = CipherMode.ECB;
tDes.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = tDes.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
tDes.Clear();
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}
//decrypt
public string DecryptHas(string cypherString, bool useHasing, string key)
{
byte[] keyArray;
byte[] toDecryptArray = Convert.FromBase64String(cypherString);
if (useHasing)
{
MD5CryptoServiceProvider hashmd = new MD5CryptoServiceProvider();
keyArray = hashmd.ComputeHash(UTF8Encoding.UTF8.GetBytes(key));
hashmd.Clear();
}
else
{
keyArray = UTF8Encoding.UTF8.GetBytes(key);
}
TripleDESCryptoServiceProvider tDes = new TripleDESCryptoServiceProvider();
tDes.Key = keyArray;
tDes.Mode = CipherMode.ECB;
tDes.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = tDes.CreateDecryptor();
try
{
byte[] resultArray = cTransform.TransformFinalBlock(toDecryptArray, 0, toDecryptArray.Length);
tDes.Clear();
return UTF8Encoding.UTF8.GetString(resultArray, 0, resultArray.Length);
}
catch (Exception ex)
{
throw ex;
}
}
#endregion hash encryption
#region write file and encrypt
//Encrypt and write file
public void WriteFileAndEncrypt(string inputFileString, string tokenKey, string outputFilePath)
{
try
{
byte[] keyBytes;
keyBytes = Encoding.Unicode.GetBytes(tokenKey);
Rfc2898DeriveBytes derivedKey = new Rfc2898DeriveBytes(tokenKey, keyBytes);
RijndaelManaged rijndaelCSP = new RijndaelManaged();
rijndaelCSP.Key = derivedKey.GetBytes(rijndaelCSP.KeySize / 8);
rijndaelCSP.IV = derivedKey.GetBytes(rijndaelCSP.BlockSize / 8);
ICryptoTransform encryptor = rijndaelCSP.CreateEncryptor();
UTF8Encoding encoding = new UTF8Encoding();
byte[] inputFileData = encoding.GetBytes(inputFileString);
FileStream outputFileStream = new FileStream(outputFilePath, FileMode.Create, FileAccess.Write);
CryptoStream encryptStream = new CryptoStream(outputFileStream, encryptor, CryptoStreamMode.Write);
encryptStream.Write(inputFileData, 0, inputFileData.Length);
encryptStream.FlushFinalBlock();
rijndaelCSP.Clear();
encryptStream.Close();
outputFileStream.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
//Decrypt and Read file
public string ReadFileAndDecrypt(string inputFilePath, string tokenKey)
{
try
{
byte[] keyBytes = Encoding.Unicode.GetBytes(tokenKey);
Rfc2898DeriveBytes derivedKey = new Rfc2898DeriveBytes(tokenKey, keyBytes);
RijndaelManaged rijndaelCSP = new RijndaelManaged();
rijndaelCSP.Key = derivedKey.GetBytes(rijndaelCSP.KeySize / 8);
rijndaelCSP.IV = derivedKey.GetBytes(rijndaelCSP.BlockSize / 8);
ICryptoTransform decryptor = rijndaelCSP.CreateDecryptor();
FileStream inputFileStream = new FileStream(inputFilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
CryptoStream decryptStream = new CryptoStream(inputFileStream, decryptor, CryptoStreamMode.Read);
byte[] inputFileData = new byte[(int)inputFileStream.Length];
decryptStream.Read(inputFileData, 0, (int)inputFileStream.Length);
UTF8Encoding enc = new UTF8Encoding();
return enc.GetString(inputFileData);
}
catch (Exception ex)
{
return null;
}
}
#endregion write file and encrypt
#region AES 256bit encryption
//encrypt
public string EncryptAES(string PlainText, string Password,
string Salt = "ObamaSidaKaka", string HashAlgorithm = "SHA1",
int PasswordIterations = 2, string InitialVector = "OFRna73m*aze01xY",
int KeySize = 256)
{
if (string.IsNullOrEmpty(PlainText))
return "";
byte[] InitialVectorBytes = Encoding.ASCII.GetBytes(InitialVector);
byte[] SaltValueBytes = Encoding.ASCII.GetBytes(Salt);
byte[] PlainTextBytes = Encoding.UTF8.GetBytes(PlainText);
PasswordDeriveBytes DerivedPassword = new PasswordDeriveBytes(Password, SaltValueBytes, HashAlgorithm, PasswordIterations);
byte[] KeyBytes = DerivedPassword.GetBytes(KeySize / 8);
RijndaelManaged SymmetricKey = new RijndaelManaged();
SymmetricKey.Mode = CipherMode.CBC;
byte[] CipherTextBytes = null;
using (ICryptoTransform Encryptor = SymmetricKey.CreateEncryptor(KeyBytes, InitialVectorBytes))
{
using (MemoryStream MemStream = new MemoryStream())
{
using (CryptoStream CryptoStream = new CryptoStream(MemStream, Encryptor, CryptoStreamMode.Write))
{
CryptoStream.Write(PlainTextBytes, 0, PlainTextBytes.Length);
CryptoStream.FlushFinalBlock();
CipherTextBytes = MemStream.ToArray();
MemStream.Close();
CryptoStream.Close();
}
}
}
SymmetricKey.Clear();
return Convert.ToBase64String(CipherTextBytes);
}
//decrypt
public string DecryptAES(string CipherText, string Password,
string Salt = "ObamaSidaKaka", string HashAlgorithm = "SHA1",
int PasswordIterations = 2, string InitialVector = "OFRna73m*aze01xY",
int KeySize = 256)
{
if (string.IsNullOrEmpty(CipherText))
return "";
byte[] InitialVectorBytes = Encoding.ASCII.GetBytes(InitialVector);
byte[] SaltValueBytes = Encoding.ASCII.GetBytes(Salt);
byte[] CipherTextBytes = Convert.FromBase64String(CipherText);
PasswordDeriveBytes DerivedPassword = new PasswordDeriveBytes(Password, SaltValueBytes, HashAlgorithm, PasswordIterations);
byte[] KeyBytes = DerivedPassword.GetBytes(KeySize / 8);
RijndaelManaged SymmetricKey = new RijndaelManaged();
SymmetricKey.Mode = CipherMode.CBC;
byte[] PlainTextBytes = new byte[CipherTextBytes.Length];
int ByteCount = 0;
using (ICryptoTransform Decryptor = SymmetricKey.CreateDecryptor(KeyBytes, InitialVectorBytes))
{
using (MemoryStream MemStream = new MemoryStream(CipherTextBytes))
{
using (CryptoStream CryptoStream = new CryptoStream(MemStream, Decryptor, CryptoStreamMode.Read))
{
ByteCount = CryptoStream.Read(PlainTextBytes, 0, PlainTextBytes.Length);
MemStream.Close();
CryptoStream.Close();
}
}
}
SymmetricKey.Clear();
return Encoding.UTF8.GetString(PlainTextBytes, 0, ByteCount);
}
#endregion AES 256bit encryption
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment