欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c#多種加解密示例(md5加密解密)

 更新時(shí)間:2014年03月04日 16:27:21   作者:  
這篇文章主要介紹了c#多種加解密示例,包括了MD5加密,SHA1加密,DES加解密,需要的朋友可以參考下

復(fù)制代碼 代碼如下:

using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Security.Cryptography;
using System.Text;

/// <summary>
/// 加解密
/// </summary>
public static class CryptHelper
{
    #region RSA加密

    /// <summary>
    /// 用指定公鑰加密文本
    /// </summary>
    /// <param name="publicKey">公鑰</param>
    /// <param name="input">文本</param>
    /// <returns></returns>
    public static string RsaEncrypt(string publicKey, string input)
    {
        const string sFormat =
            "<RSAKeyValue><Modulus>{0}</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
        var provider = new RSACryptoServiceProvider();
        var arrPubKey = Hex2Bytes(publicKey);
        var pkB64 = Convert.ToBase64String(arrPubKey);
        var xmlStr = string.Format(sFormat, pkB64);
        var bytesInput = Encoding.UTF8.GetBytes(input);
        provider.FromXmlString(xmlStr);
        var encryptArray = provider.Encrypt(bytesInput, false);
        var hexStr = BitConverter.ToString(encryptArray).Replace("-", "");
        return hexStr.ToLower();
    }

    #endregion

    #region 公用函數(shù)

    /// <summary>
    /// 將字節(jié)轉(zhuǎn)換成16進(jìn)制數(shù)字
    /// </summary>
    /// <param name="bytes">字節(jié)數(shù)組</param>
    /// <returns></returns>
    public static string Bytes2Hex(byte[] bytes)
    {
        var buffer = new StringBuilder();
        foreach (var t in bytes)
        {
            buffer.AppendFormat("{0:x2}", t);
        }
        return buffer.ToString();
    }

    /// <summary>
    /// 將16進(jìn)制數(shù)組轉(zhuǎn)換成字節(jié)
    /// </summary>
    /// <param name="input">16進(jìn)制數(shù)組</param>
    /// <returns></returns>
    /// <exception cref="ArgumentOutOfRangeException"></exception>
    public static byte[] Hex2Bytes(string input)
    {
        if (string.IsNullOrEmpty(input)) return null;
        var offset = input.Length%2;
        if (offset == 1) input = "0" + input;
        int i;
        var list = new List<byte>();
        for (i = 0; i < input.Length; i += 2)
        {
            var temp = input.Substring(i, 2);
            byte bv;
            var success = byte.TryParse(temp, NumberStyles.HexNumber, null, out bv);
            if (!success) throw new ArgumentOutOfRangeException();
            list.Add(bv);
        }
        return list.ToArray();
    }

    #endregion

    #region SHA1加密

    /// <summary>
    /// SHA1加密 使用缺省密鑰給字符串加密
    /// </summary>
    /// <param name="sourceString"></param>
    /// <returns></returns>
    public static string Sha1Encrypt(string sourceString)
    {
        var data = Encoding.Default.GetBytes(sourceString);
        HashAlgorithm sha = new SHA1CryptoServiceProvider();
        var bytes = sha.ComputeHash(data);
        return BitConverter.ToString(bytes).Replace("-", "");
    }

    #endregion

    #region DES加解密

    /// <summary>
    /// DES加密
    /// </summary>
    /// <param name="pubKey"></param>
    /// <param name="input"></param>
    /// <returns></returns>
    public static string DesEncrypt(string pubKey, string input)
    {
        var des = new DESCryptoServiceProvider();
        var bytes = Encoding.UTF8.GetBytes(input);
        des.Key = Encoding.ASCII.GetBytes(pubKey);
        des.IV = Encoding.ASCII.GetBytes(pubKey);
        using (var ms = new MemoryStream())
        {
            using (var cryptoStream = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write))
            {
                cryptoStream.Write(bytes, 0, bytes.Length);
                cryptoStream.FlushFinalBlock();
            }
            var data = ms.ToArray();
            return BitConverter.ToString(data).Replace("-", "");
        }
    }

    /// <summary>
    /// DES解密
    /// </summary>
    /// <param name="pubKey"></param>
    /// <param name="input"></param>
    /// <returns></returns>
    public static string DesDecrypt(string pubKey, string input)
    {
        var des = new DESCryptoServiceProvider();
        var bytes = Hex2Bytes(input);
        des.Key = Encoding.ASCII.GetBytes(pubKey);
        des.IV = Encoding.ASCII.GetBytes(pubKey);
        using (var ms = new MemoryStream())
        {
            using (var cryptoStream = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write))
            {
                cryptoStream.Write(bytes, 0, bytes.Length);
                cryptoStream.FlushFinalBlock();
            }
            var data = ms.ToArray();
            return Encoding.UTF8.GetString(data);
        }
    }

    #endregion

    #region MD5加密

    /// <summary>
    /// MD5加密
    /// </summary>
    /// <param name="input">輸入</param>
    /// <returns></returns>
    public static string Md5Encrypt(string input)
    {
        MD5 md5 = new MD5CryptoServiceProvider();
        var data = Encoding.UTF8.GetBytes(input);
        var encs = md5.ComputeHash(data);
        return BitConverter.ToString(encs).Replace("-", "");
    }

    #endregion
}

相關(guān)文章

  • C#語(yǔ)法相比其它語(yǔ)言比較獨(dú)特的地方(三)

    C#語(yǔ)法相比其它語(yǔ)言比較獨(dú)特的地方(三)

    這篇文章主要介紹了C#語(yǔ)法相比其它語(yǔ)言比較獨(dú)特的地方(三),本文講解了在C++中允許從一個(gè)case貫穿到另一個(gè)case標(biāo)簽、as和is只會(huì)檢測(cè)待轉(zhuǎn)化類型的類型,而不會(huì)進(jìn)行其它操作等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • 使用Spire.Barcode程序庫(kù)生成二維碼的實(shí)例解析

    使用Spire.Barcode程序庫(kù)生成二維碼的實(shí)例解析

    這篇文章主要介紹了使用Spire.Barcode程序庫(kù)生成二維碼的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-12-12
  • C# PropertyGrid使用案例詳解

    C# PropertyGrid使用案例詳解

    這篇文章主要介紹了C# PropertyGrid使用案例詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 基于c# 接口的實(shí)例詳解

    基于c# 接口的實(shí)例詳解

    本篇文章是對(duì)c#中的接口進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • C#的通用DbHelper類(支持?jǐn)?shù)據(jù)連接池)示例詳解

    C#的通用DbHelper類(支持?jǐn)?shù)據(jù)連接池)示例詳解

    這篇文章主要介紹了C#的通用DbHelper類支持?jǐn)?shù)據(jù)連接池,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • C#操作注冊(cè)表的方法

    C#操作注冊(cè)表的方法

    以下從‘讀’‘寫’‘刪除’‘判斷’四個(gè)事例實(shí)現(xiàn)對(duì)注冊(cè)表的簡(jiǎn)單操作
    2007-03-03
  • 利用TaskManager爬取2萬(wàn)條代理IP實(shí)現(xiàn)自動(dòng)投票功能

    利用TaskManager爬取2萬(wàn)條代理IP實(shí)現(xiàn)自動(dòng)投票功能

    話說某天心血來潮想到一個(gè)問題,朋友圈里面經(jīng)常有人發(fā)投票鏈接,讓幫忙給XX投票,以前呢會(huì)很自覺打開鏈接幫忙投一票??墒沁@種事做多了就會(huì)考慮能不能使用工具來進(jìn)行投票呢,身為一名程序猿決定研究解決這個(gè)問題。感興趣的朋友一起學(xué)習(xí)吧
    2015-09-09
  • C# 常用日期時(shí)間函數(shù)(老用不熟)

    C# 常用日期時(shí)間函數(shù)(老用不熟)

    C# 常用日期時(shí)間函數(shù)(老用不熟) ,需要的朋友可以參考下。
    2009-09-09
  • C#實(shí)現(xiàn)中文日歷Calendar

    C#實(shí)現(xiàn)中文日歷Calendar

    這篇文章介紹了C#實(shí)現(xiàn)中文日歷Calendar的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • Unity3D使用UGUI開發(fā)原生虛擬搖桿

    Unity3D使用UGUI開發(fā)原生虛擬搖桿

    這篇文章主要為大家詳細(xì)介紹了Unity3D使用UGUI開發(fā)原生虛擬搖桿,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04

最新評(píng)論