最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c# 實現(xiàn)MD5,SHA1,SHA256,SHA512等常用加密算法源代碼

 更新時間:2012年12月12日 11:13:46   作者:  
c# 如何實現(xiàn)MD5,SHA1,SHA256,SHA512等常用加密算法,需要的朋友可以參考下
復(fù)制代碼 代碼如下:

using System;
using System.IO;
using System.Data;
using System.Text;
using System.Diagnostics;
using System.Security;
using System.Security.Cryptography;
/**//*
* .Net框架由于擁有CLR提供的豐富庫支持,只需很少的代碼即可實現(xiàn)先前使用C等舊式語言很難實現(xiàn)的加密算法。本類實現(xiàn)一些常用機密算法,供參考。其中MD5算法返回Int的ToString字串。返回數(shù)字字母型結(jié)果的算法參見之前Blog文章
*/
namespace 檔案數(shù)字化加工
{
/**//// <summary>
/// 類名:HashEncrypt
/// 作用:對傳入的字符串進行Hash運算,返回通過Hash算法加密過的字串。
/// 屬性:[無]
/// 構(gòu)造函數(shù)額參數(shù):
/// IsReturnNum:是否返回為加密后字符的Byte代碼
/// IsCaseSensitive:是否區(qū)分大小寫。
/// 方法:此類提供MD5,SHA1,SHA256,SHA512等四種算法,加密字串的長度依次增大。
/// </summary>
public class HashEncrypt
{
//private string strIN;
private bool isReturnNum;
private bool isCaseSensitive;
/**//// <summary>
/// 類初始化,此類提供MD5,SHA1,SHA256,SHA512等四種算法,加密字串的長度依次增大。
/// </summary>
/// <param name="IsCaseSensitive">是否區(qū)分大小寫</param>
/// <param name="IsReturnNum">是否返回為加密后字符的Byte代碼</param>
public HashEncrypt(bool IsCaseSensitive, bool IsReturnNum)
{
this.isReturnNum = IsReturnNum;
this.isCaseSensitive = IsCaseSensitive;
}
private string getstrIN(string strIN)
{
//string strIN = strIN;
if (strIN.Length == 0)
{
strIN = "~NULL~";
}
if (isCaseSensitive == false)
{
strIN = strIN.ToUpper();
}
return strIN;
}
public string MD5Encrypt(string strIN)
{
//string strIN = getstrIN(strIN);
byte[] tmpByte;
MD5 md5 = new MD5CryptoServiceProvider();
tmpByte = md5.ComputeHash(GetKeyByteArray(getstrIN(strIN)));
md5.Clear();
return GetStringValue(tmpByte);
}
public string SHA1Encrypt(string strIN)
{
//string strIN = getstrIN(strIN);
byte[] tmpByte;
SHA1 sha1 = new SHA1CryptoServiceProvider();
tmpByte = sha1.ComputeHash(GetKeyByteArray(strIN));
sha1.Clear();
return GetStringValue(tmpByte);
}
public string SHA256Encrypt(string strIN)
{
//string strIN = getstrIN(strIN);
byte[] tmpByte;
SHA256 sha256 = new SHA256Managed();
tmpByte = sha256.ComputeHash(GetKeyByteArray(strIN));
sha256.Clear();
return GetStringValue(tmpByte);
}
public string SHA512Encrypt(string strIN)
{
//string strIN = getstrIN(strIN);
byte[] tmpByte;
SHA512 sha512 = new SHA512Managed();
tmpByte = sha512.ComputeHash(GetKeyByteArray(strIN));
sha512.Clear();
return GetStringValue(tmpByte);
}
/**//// <summary>
/// 使用DES加密(Added by niehl 2005-4-6)
/// </summary>
/// <param name="originalValue">待加密的字符串</param>
/// <param name="key">密鑰(最大長度8)</param>
/// <param name="IV">初始化向量(最大長度8)</param>
/// <returns>加密后的字符串</returns>
public string DESEncrypt(string originalValue, string key, string IV)
{
//將key和IV處理成8個字符
key += "12345678";
IV += "12345678";
key = key.Substring(0, 8);
IV = IV.Substring(0, 8);
SymmetricAlgorithm sa;
ICryptoTransform ct;
MemoryStream ms;
CryptoStream cs;
byte[] byt;
sa = new DESCryptoServiceProvider();
sa.Key = Encoding.UTF8.GetBytes(key);
sa.IV = Encoding.UTF8.GetBytes(IV);
ct = sa.CreateEncryptor();
byt = Encoding.UTF8.GetBytes(originalValue);
ms = new MemoryStream();
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
cs.Write(byt, 0, byt.Length);
cs.FlushFinalBlock();
cs.Close();
return Convert.ToBase64String(ms.ToArray());
}
public string DESEncrypt(string originalValue, string key)
{
return DESEncrypt(originalValue, key, key);
}
/**//// <summary>
/// 使用DES解密(Added by niehl 2005-4-6)
/// </summary>
/// <param name="encryptedValue">待解密的字符串</param>
/// <param name="key">密鑰(最大長度8)</param>
/// <param name="IV">m初始化向量(最大長度8)</param>
/// <returns>解密后的字符串</returns>
public string DESDecrypt(string encryptedValue, string key, string IV)
{
//將key和IV處理成8個字符
key += "12345678";
IV += "12345678";
key = key.Substring(0, 8);
IV = IV.Substring(0, 8);
SymmetricAlgorithm sa;
ICryptoTransform ct;
MemoryStream ms;
CryptoStream cs;
byte[] byt;
sa = new DESCryptoServiceProvider();
sa.Key = Encoding.UTF8.GetBytes(key);
sa.IV = Encoding.UTF8.GetBytes(IV);
ct = sa.CreateDecryptor();
byt = Convert.FromBase64String(encryptedValue);
ms = new MemoryStream();
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
cs.Write(byt, 0, byt.Length);
cs.FlushFinalBlock();
cs.Close();
return Encoding.UTF8.GetString(ms.ToArray());
}
public string DESDecrypt(string encryptedValue, string key)
{
return DESDecrypt(encryptedValue, key, key);
}
private string GetStringValue(byte[] Byte)
{
string tmpString = "";
if (this.isReturnNum == false)
{
ASCIIEncoding Asc = new ASCIIEncoding();
tmpString = Asc.GetString(Byte);
}
else
{
int iCounter;
for (iCounter = 0; iCounter < Byte.Length; iCounter++)
{
tmpString = tmpString + Byte[iCounter].ToString();
}
}
return tmpString;
}
private byte[] GetKeyByteArray(string strKey)
{
ASCIIEncoding Asc = new ASCIIEncoding();
int tmpStrLen = strKey.Length;
byte[] tmpByte = new byte[tmpStrLen - 1];
tmpByte = Asc.GetBytes(strKey);
return tmpByte;
}
}
}

相關(guān)文章

  • C#正方形圖片的繪制方法

    C#正方形圖片的繪制方法

    這篇文章主要為大家詳細介紹了C#正方形圖片的繪制方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • c# 調(diào)用Surfer軟件,添加引用的具體操作方法

    c# 調(diào)用Surfer軟件,添加引用的具體操作方法

    本篇文章主要是對c#中調(diào)用Surfer軟件,添加引用的具體操作方法進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • C#數(shù)字圖象處理之膚色檢測的方法

    C#數(shù)字圖象處理之膚色檢測的方法

    這篇文章主要介紹了C#數(shù)字圖象處理之膚色檢測的方法,可實現(xiàn)針對膚色的檢測功能,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • C#中類與接口的區(qū)別個人總結(jié)

    C#中類與接口的區(qū)別個人總結(jié)

    這篇文章主要介紹了C#中類與接口的區(qū)別個人總結(jié),本文講解了類與接口的區(qū)別、接口的用處主要體現(xiàn)在下面幾個方面、一些接口的疑問等內(nèi)容,需要的朋友可以參考下
    2015-06-06
  • C# PictureBox圖片控件實現(xiàn)圖片交換

    C# PictureBox圖片控件實現(xiàn)圖片交換

    在c#中可以使用PictureBox控件來呈現(xiàn)圖像,本文主要介紹了C# PictureBox實現(xiàn)圖片交換,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C#繪制鼠標指針的示例代碼

    C#繪制鼠標指針的示例代碼

    這篇文章主要為大家詳細介紹了如何利用C#實現(xiàn)將鼠標的指針樣式給繪制成圖片,顯示或者保存下來,文中的示例代碼講解詳細,需要的可以參考一下
    2024-01-01
  • C#使用WMI實現(xiàn)監(jiān)聽進程的啟動和關(guān)閉

    C#使用WMI實現(xiàn)監(jiān)聽進程的啟動和關(guān)閉

    Windows Management Instrumentation(WMI)是用于管理基于 Windows 操作系統(tǒng)的數(shù)據(jù)和操作的基礎(chǔ)結(jié)構(gòu),本文將使用WMI實現(xiàn)監(jiān)聽進程的啟動和關(guān)閉,感興趣的可以了解下
    2024-01-01
  • C#簡單實現(xiàn)文件上傳功能

    C#簡單實現(xiàn)文件上傳功能

    這篇文章主要介紹了C#簡單實現(xiàn)文件上傳功能,利用MVC+EF+LigerUI 實現(xiàn)的upload上傳功能,感興趣的小伙伴們可以參考一下
    2016-03-03
  • 詳解C#中普通緩存的使用

    詳解C#中普通緩存的使用

    緩存的概念及優(yōu)缺點在這里就不多做介紹,當(dāng)然緩存包含多種有普通緩存、客戶端緩存、DNS緩存、反向代理緩存以及分布式緩存等等。今天主要聊一聊C#通過編碼來實現(xiàn)普通的緩存、話不多說直接上代碼。
    2021-05-05
  • C#使用哈希表實現(xiàn)XML文件查詢

    C#使用哈希表實現(xiàn)XML文件查詢

    這篇文章主要為大家詳細介紹了C#如何使用哈希表實現(xiàn)XML文件查詢功能,文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以參考下
    2024-02-02

最新評論

河津市| 万山特区| 宝兴县| 平阳县| 通道| 仁寿县| 江城| 寻甸| 子洲县| 库车县| 克什克腾旗| 西峡县| 四子王旗| 凉城县| 太湖县| 满洲里市| 苏州市| 大渡口区| 富宁县| 双峰县| 含山县| 老河口市| 资中县| 屏南县| 大庆市| 余江县| 永济市| 云阳县| 灌南县| 南皮县| 景东| 绥江县| 茌平县| 鄄城县| 池州市| 延川县| 尤溪县| 宿州市| 盐亭县| 车险| 长寿区|