public sealed class EncryptUtils

    {

        #region Base64加密解密

        /// <summary>

        /// Base64加密

        /// </summary>

        /// <param name="input">需要加密的字符串</param>

        /// <returns></returns>

        public static string Base64Encrypt(string input)

        {

            return Base64Encrypt(input, new UTF8Encoding());

        }

        /// <summary>

        /// Base64加密

        /// </summary>

        /// <param name="input">需要加密的字符串</param>

        /// <param name="encode">字符编码</param>

        /// <returns></returns>

        public static string Base64Encrypt(string input, Encoding encode)

        {

            return Convert.ToBase64String(encode.GetBytes(input));

        }

        /// <summary>

        /// Base64解密

        /// </summary>

        /// <param name="input">需要解密的字符串</param>

        /// <returns></returns>

        public static string Base64Decrypt(string input)

        {

            return Base64Decrypt(input, new UTF8Encoding());

        }

        /// <summary>

        /// Base64解密

        /// </summary>

        /// <param name="input">需要解密的字符串</param>

        /// <param name="encode">字符的编码</param>

        /// <returns></returns>

        public static string Base64Decrypt(string input, Encoding encode)

        {

            return encode.GetString(Convert.FromBase64String(input));

        }

        #endregion

        #region DES加密解密

        /// <summary>

        /// DES加密

        /// </summary>

        /// <param name="data">加密数据</param>

        /// <param name="key">8位字符的密钥字符串</param>

        /// <param name="iv">8位字符的初始化向量字符串</param>

        /// <returns></returns>

        public static string DESEncrypt(string data, string key, string iv)

        {

            byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key);

            byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);

            DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();

            int i = cryptoProvider.KeySize;

            MemoryStream ms = new MemoryStream();

            CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);

            StreamWriter sw = new StreamWriter(cst);

            sw.Write(data);

            sw.Flush();

            cst.FlushFinalBlock();

            sw.Flush();

            return Convert.ToBase64String(ms.GetBuffer(), , (int)ms.Length);

        }

        /// <summary>

        /// DES解密

        /// </summary>

        /// <param name="data">解密数据</param>

        /// <param name="key">8位字符的密钥字符串(需要和加密时相同)</param>

        /// <param name="iv">8位字符的初始化向量字符串(需要和加密时相同)</param>

        /// <returns></returns>

        public static string DESDecrypt(string data, string key, string iv)

        {

            byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key);

            byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);

            byte[] byEnc;

            try

            {

                byEnc = Convert.FromBase64String(data);

            }

            catch

            {

                return null;

            }

            DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();

            MemoryStream ms = new MemoryStream(byEnc);

            CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);

            StreamReader sr = new StreamReader(cst);

            return sr.ReadToEnd();

        }

        #endregion

        #region MD5加密

        /// <summary>

        /// MD5加密

        /// </summary>

        /// <param name="input">需要加密的字符串</param>

        /// <returns></returns>

        public static string MD5Encrypt(string input)

        {

            return MD5Encrypt(input, new UTF8Encoding());

        }

        /// <summary>

        /// MD5加密

        /// </summary>

        /// <param name="input">需要加密的字符串</param>

        /// <param name="encode">字符的编码</param>

        /// <returns></returns>

        public static string MD5Encrypt(string input, Encoding encode)

        {

            MD5 md5 = new MD5CryptoServiceProvider();

            byte[] t = md5.ComputeHash(encode.GetBytes(input));

            StringBuilder sb = new StringBuilder();

            for (int i = ; i < t.Length; i++)

                sb.Append(t[i].ToString("x").PadLeft(, ''));

            return sb.ToString();

        }

        /// <summary>

        /// MD5对文件流加密

        /// </summary>

        /// <param name="sr"></param>

        /// <returns></returns>

        public static string MD5Encrypt(Stream stream)

        {

            MD5 md5serv = MD5CryptoServiceProvider.Create();

            byte[] buffer = md5serv.ComputeHash(stream);

            StringBuilder sb = new StringBuilder();

            foreach (byte var in buffer)

                sb.Append(var.ToString("x2"));

            return sb.ToString();

        }

        /// <summary>

        /// MD5加密(返回16位加密串)

        /// </summary>

        /// <param name="input"></param>

        /// <param name="encode"></param>

        /// <returns></returns>

        public static string MD5Encrypt16(string input, Encoding encode)

        {

            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();

            string result = BitConverter.ToString(md5.ComputeHash(encode.GetBytes(input)), , );

            result = result.Replace("-", "");

            return result;

        }

        #endregion

        #region 3DES 加密解密

        public static string DES3Encrypt(string data, string key)

        {

            TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();

            DES.Key = ASCIIEncoding.ASCII.GetBytes(key);

            DES.Mode = CipherMode.CBC;

            DES.Padding = PaddingMode.PKCS7;

            ICryptoTransform DESEncrypt = DES.CreateEncryptor();

            byte[] Buffer = ASCIIEncoding.ASCII.GetBytes(data);

            return Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, , Buffer.Length));

        }

        public static string DES3Decrypt(string data, string key)

        {

            TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();

            DES.Key = ASCIIEncoding.ASCII.GetBytes(key);

            DES.Mode = CipherMode.CBC;

            DES.Padding = System.Security.Cryptography.PaddingMode.PKCS7;

            ICryptoTransform DESDecrypt = DES.CreateDecryptor();

            string result = "";

            try

            {

                byte[] Buffer = Convert.FromBase64String(data);

                result = ASCIIEncoding.ASCII.GetString(DESDecrypt.TransformFinalBlock(Buffer, , Buffer.Length));

            }

            catch (Exception e)

            {

            }

            return result;

        }

        #endregion

    }

转自:http://www.cnblogs.com/malaohu/archive/2013/07/25/3214136.html

c# 加密转载 备忘的更多相关文章

  1. [转载]备忘:oh my zsh 的安装、更新、删除

    备忘:oh my zsh 的安装.更新.删除 傅易君 关注  0.8 2016.09.25 00:56* 字数 68 阅读 14920评论 0喜欢 4 查看系统当前 shell $ cat /etc/ ...

  2. MSSQL中建立分区表(转载备忘)

    转载自CSDN地址:http://bbs.csdn.net/topics/330087045 SQL Server 2005 分区表实践——建立分区表(partition table) 问题:有一个订 ...

  3. CSS转载备忘

    原文地址:http://www.cnblogs.com/coffeedeveloper/p/3145790.html#html 转载内容: 对CSS中的Position.Float属性的一些深入探讨 ...

  4. ASP.NET MVC中在Action获取提交的表单数据方法总结 (4种方法,转载备忘)

    有Index视图如下: 视图代码如下: <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Mas ...

  5. 关于在linux下清屏的几种技巧(转载-备忘)

    原文地址:http://www.cnblogs.com/5201351/p/4208277.html 在windows的DOS操作界面里面,清屏的命令是cls,那么在linux 里面的清屏命令是什么呢 ...

  6. 【转载备忘】PowerDesigner16.5基本使用

    这两天都在设计数据库,使用了powerdesigner进行设计的,然后摸索了好久,本来打算写一篇文章来记述一下的,写了一半,突然发现网上早就有比我写的好的文章了,所有删了之前写的,直接贴出来那个文章的 ...

  7. js-new、object.create、bind的模拟实现【转载备忘】

    //创建Person构造函数,参数为name,age function Person(name,age){ this.name = name; this.age = age; } function _ ...

  8. GIS部分理论知识备忘随笔

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.高斯克吕格投影带换算 某坐标的经度为112度,其投影的6度带和3度带 ...

  9. php 相关模块备忘

    在安装php的时候,不管是编译安装: ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc -- ...

随机推荐

  1. GSM Hacking:使用BladeRF、树莓派、YatesBTS搭建便携式GSM基站

    每次看到黑客在网上发布的那些GSM技术相关文章我都十分惊讶.然而在没有Software Defined Radios (SDRs)之前,玩GSM并不便宜,除此之外想要好好玩你得下大功夫. 拓展阅读 G ...

  2. php大力力 [014节] 八杆子打不着的非技术文章,哈哈

    今天似乎是个值得纪念的日子 一个创业失败者的忠告:请不要再参加创业活动 PHP mysql_connect() 函数 mysql默认用户 随意发几个链接,没任何意义

  3. Unity3D ShaderLab 模拟精灵动画

    Unity3D ShaderLab 模拟精灵动画 在上一篇,介绍了通过Shader 模拟纹理运动,那么更深一步讲,我们也可以把帧动画的精灵纹理运动通过shader实现. 虽然大家都是在游戏脚本中做更高 ...

  4. HDU 3047

    http://acm.hdu.edu.cn/showproblem.php?pid=3047 和hdu 3038以及poj那个食物链一样,都是带权并查集,此题做法和hdu 3038完全相同,具体操作看 ...

  5. Cache

    1.Cache中的块与主存储器中的块时按照什么样的规则建立对应关系的? 2.在这种对应关系下,主存地址又是如何变换成Cache地址的? Cache信息: 1.数据Cache和指令Cache是分开还是统 ...

  6. oledb 写入 office2010 以及发布到iis 遇到的奇怪问题总结

    这段时间在做Excel 导出升级,把之前的office2003 升级到 2010导出. 一 利用oledb 写入 Excel 2010 的时候,怎么也打不开文件,最后调查的原因是 需要修改连接字符串: ...

  7. linux安装phpredis扩展

    1.下载扩展安装包 wget   https://github.com/nicolasff/phpredis/downloads 2.解压 tar -zxvf nicolasff-phpredis-2 ...

  8. coreseek(sphinx)安装1(xml数据源配置和测试)

    1.下载coreseek-3.2.14-32版本.网址:http://www.coreseek.cn/products-install/install_on_windows/   (有详细的安装说明) ...

  9. 行为识别笔记:improved dense trajectories算法(iDT算法)(转载)

    iDT算法是行为识别领域中非常经典的一种算法,在深度学习应用于该领域前也是效果最好的算法.由INRIA的IEAR实验室于2013年发表于ICCV.目前基于深度学习的行为识别算法效果已经超过了iDT算法 ...

  10. 递归神经网络之理解长短期记忆网络(LSTM NetWorks)(转载)

    递归神经网络 人类并不是每时每刻都从头开始思考.正如你阅读这篇文章的时候,你是在理解前面词语的基础上来理解每个词.你不会丢弃所有已知的信息而从头开始思考.你的思想具有持续性. 传统的神经网络不能做到这 ...