加解密一般都很常用到

以前為了密碼加解密也收集了幾種

不過也忘了是哪看來的

放著以後常常都用的到也不需要找來找去.....

不過好像還有好多方式

如果有看到更好的就慢慢放上來.....

//Base64加密1
public string EncodeString(string toEncode)
{
  try
  {
    byte[] toEncodeAsBytes = Encoding.UTF8.GetBytes(toEncode);
    return Convert.ToBase64String(toEncodeAsBytes);
  }
  catch (Exception ex)
  {
    //thorow new Exception();
  }
}
//Base64加密2
public string base64Encode(string data)
{
    try
    {
        byte[] encData_byte = new byte[data.Length];
        encData_byte = System.Text.Encoding.UTF8.GetBytes(data);    
        string encodedData = Convert.ToBase64String(encData_byte);
        return encodedData;
    }
    catch(Exception e)
    {
        throw new Exception("Error in base64Encode" + e.Message);
    }
}
//Base64加密3
string strVal = "Test";
byte[] strByte = System.Text.Encoding.Default.GetBytes(a);
strVal = Convert.ToBase64String(strByte);
return strVal;

//Base64解密1
public string DecodeString(string toDecrypt)
{
  try
  {
    byte[] encodedDataAsBytes = Convert.FromBase64String(toDecrypt.Replace(" ", "+"));
    return Encoding.UTF8.GetString(encodedDataAsBytes);
  }
  catch (Exception ex)
  {
    //thorow new Exception();
  }
}
//Base64解密2
public string base64Decode(string data)
{
    try
    {
        System.Text.UTF8Encoding encoder = new System.Text.UTF8Encoding();  
        System.Text.Decoder utf8Decode = encoder.GetDecoder();
    
        byte[] todecode_byte = Convert.FromBase64String(data);
        int charCount = utf8Decode.GetCharCount(todecode_byte, 0, todecode_byte.Length);    
        char[] decoded_char = new char[charCount];
        utf8Decode.GetChars(todecode_byte, 0, todecode_byte.Length, decoded_char, 0);                   
        string result = new String(decoded_char);
        return result;
    }
    catch(Exception e)
    {
        throw new Exception("Error in base64Decode" + e.Message);
    }
}

//Base64解密3
string strVal  = "Test";
byte[] strByte = Convert.FromBase64String(a);
strVal = System.Text.Encoding.Default.GetString(strByte);
return strVal;

上面是最常用到的Base64

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;

public class ScrambledNumber
{
    public static string ScrambledKey = "Key值可自定";

    public static string Encrypt(string pToEncrypt)
    {
        return Encrypt(pToEncrypt, ScrambledKey);
    }

    public static string Decrypt(string pToDecrypt)
    {
        return Decrypt(pToDecrypt, ScrambledKey);
    }

    public static string Encrypt(string pToEncrypt, string sKey)
    {
        DESCryptoServiceProvider dESCryptoServiceProvider = new DESCryptoServiceProvider();
        byte[] bs1 = Encoding.Default.GetBytes(pToEncrypt);
        dESCryptoServiceProvider.Key = Encoding.ASCII.GetBytes(sKey);
        dESCryptoServiceProvider.IV = Encoding.ASCII.GetBytes(sKey);
        MemoryStream memoryStream = new MemoryStream();
        CryptoStream cryptoStream =
            new CryptoStream(memoryStream, dESCryptoServiceProvider.CreateEncryptor(), CryptoStreamMode.Write);
        cryptoStream.Write(bs1, 0, bs1.Length);
        cryptoStream.FlushFinalBlock();
        StringBuilder stringBuilder = new StringBuilder();
        byte[] bs2 = memoryStream.ToArray();
        for (int i = 0; i < bs2.Length; i++)
        {
            byte b = bs2[i];
            stringBuilder.AppendFormat("{0:X2}", b);
        }
        stringBuilder.ToString();
        return stringBuilder.ToString();
    }

    public static string Decrypt(string pToDecrypt, string sKey)
    {
        DESCryptoServiceProvider dESCryptoServiceProvider = new DESCryptoServiceProvider();
        byte[] bs = new byte[pToDecrypt.Length/2];
        for (int i = 0; i < pToDecrypt.Length/2; i++)
        {
            int j = Convert.ToInt32(pToDecrypt.Substring(i*2, 2), 16);
            bs[i] = (byte) j;
        }
        dESCryptoServiceProvider.Key = Encoding.ASCII.GetBytes(sKey);
        dESCryptoServiceProvider.IV = Encoding.ASCII.GetBytes(sKey);
        MemoryStream memoryStream = new MemoryStream();
        CryptoStream cryptoStream =
            new CryptoStream(memoryStream, dESCryptoServiceProvider.CreateDecryptor(), CryptoStreamMode.Write);
        cryptoStream.Write(bs, 0, bs.Length);
        cryptoStream.FlushFinalBlock();
        new StringBuilder();
        return Encoding.Default.GetString(memoryStream.ToArray());
    }
}

上面應該是DES加解密

string Pasword = FormsAuthentication.HashPasswordForStoringInConfigFile(要加密字串, "MD5");

string Pasword = FormsAuthentication.HashPasswordForStoringInConfigFile(要加密字串, "SHA1");

public static string md5encrypt(string phrase)
{
    UTF8Encoding encoder = new UTF8Encoding();
    MD5CryptoServiceProvider md5hasher = new MD5CryptoServiceProvider();
    byte[] hashedDataBytes = md5hasher.ComputeHash(encoder.GetBytes(phrase));
    return byteArrayToString(hashedDataBytes);
}
public static string sha1encrypt(string phrase)
{
    UTF8Encoding encoder = new UTF8Encoding();
    SHA1CryptoServiceProvider sha1hasher = new SHA1CryptoServiceProvider();
    byte[] hashedDataBytes = sha1hasher.ComputeHash(encoder.GetBytes(phrase));
    return byteArrayToString(hashedDataBytes);
}
public static string sha256encrypt(string phrase)
{
    UTF8Encoding encoder = new UTF8Encoding();
    SHA256Managed sha256hasher = new SHA256Managed();
    byte[] hashedDataBytes = sha256hasher.ComputeHash(encoder.GetBytes(phrase));
    return byteArrayToString(hashedDataBytes);
}
public static string sha384encrypt(string phrase)
{
    UTF8Encoding encoder = new UTF8Encoding();
    SHA384Managed sha384hasher = new SHA384Managed();
    byte[] hashedDataBytes = sha384hasher.ComputeHash(encoder.GetBytes(phrase));
    return byteArrayToString(hashedDataBytes);
}
public static string sha512encrypt(string phrase)
{
    UTF8Encoding encoder = new UTF8Encoding();
    SHA512Managed sha512hasher = new SHA512Managed();
    byte[] hashedDataBytes = sha512hasher.ComputeHash(encoder.GetBytes(phrase));
    return byteArrayToString(hashedDataBytes);
}
public static string byteArrayToString(byte[] inputArray)
{
    StringBuilder output = new StringBuilder("");
    for (int i = 0; i < inputArray.Length; i++)
    {
        output.Append(inputArray[i].ToString("X2"));
    }
    return output.ToString();
}

上面是SHA &MD5等等的方式

幾乎都是參考別人的可是.....忘了出處了真是不好意思

arrow
arrow
    全站熱搜

    鴨爸 發表在 痞客邦 留言(0) 人氣()