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

c#多种加解密示例(md5加密解密),第1张

概述复制代码代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.Globalization;usingSystem.IO;usingSystem.Security.Cryptography;usingSystem.Text;

复制代码 代码如下:
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 公用函数

    /// <summary>
    /// 将字节转换成16进制数字
    /// </summary>
    /// <param name="bytes">字节数组</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进制数组转换成字节
    /// </summary>
    /// <param name="input">16进制数组</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,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(),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
}

总结

以上是内存溢出为你收集整理的c#多种加解密示例(md5加密解密)全部内容,希望文章能够帮你解决c#多种加解密示例(md5加密解密)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1261906.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-08
下一篇2022-06-08

发表评论

登录后才能评论

评论列表(0条)

    保存