当前位置:  编程技术>.net/c#/asp.net

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

    来源: 互联网  发布时间:2014-10-29

    本文导语:  代码如下:using System;using System.Collections.Generic;using System.Globalization;using System.IO;using System.Security.Cryptography;using System.Text; /// /// 加解密/// public static class CryptHelper{    #region RSA加密     ///     /// 用指定公钥加密文本    ///  ...

代码如下:

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

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

    ///
    /// 用指定公钥加密文本
    ///
    /// 公钥
    /// 文本
    ///
    public static string RsaEncrypt(string publicKey, string input)
    {
        const string sFormat =
            "{0}AQAB";
        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 公用函数

    ///
    /// 将字节转换成16进制数字
    ///
    /// 字节数组
    ///
    public static string Bytes2Hex(byte[] bytes)
    {
        var buffer = new StringBuilder();
        foreach (var t in bytes)
        {
            buffer.AppendFormat("{0:x2}", t);
        }
        return buffer.ToString();
    }

    ///
    /// 将16进制数组转换成字节
    ///
    /// 16进制数组
    ///
    ///
    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();
        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加密

    ///
    /// SHA1加密 使用缺省密钥给字符串加密
    ///
    ///
    ///
    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加解密

    ///
    /// DES加密
    ///
    ///
    ///
    ///
    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("-", "");
        }
    }

    ///
    /// DES解密
    ///
    ///
    ///
    ///
    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加密

    ///
    /// MD5加密
    ///
    /// 输入
    ///
    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
}


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • curses编程库中的form中的一个表单域是否可以设置多种颜色
  • 汇编到底有多种要...
  • 求教,我要把网页中applet的默认背景的灰色变成白色,该如何解决?试过多种方法,未果...
  • jQuery页面加载完毕再执行代码多种方法
  • Linux为什么要支持这么多种文件系统?
  • android图像绘制(一)多种方法做图像镜像
  • 求在HP_Unix中的设置定时器的多种方法
  • jquery获取下拉框值的多种方法
  • 支持多种数据库的解决方案?
  • shell编程:如何高效地删除文件中包含多种模式的行(模式存于另一文件中)
  • Fedoar 11 是否有多种版?
  • jquery跟js初始化加载的多种方法及区别介绍
  • 现在有好多种Linux,各有何特点,或者说它们有什么不同啊?我是菜鸟,见笑了。
  • 安装问题 排除多种可能但未找到原因
  • php求奇数偶数和多种方法
  • 通过shell进行数学运算的多种方式
  • java多种幻灯片切换特效(经典)
  • jquery自定义函数的多种方法
  • jquery 动态加载js的多种方法汇总
  • Jquery easyui如何支持验证多种类型


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3