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

namespace Sheng.Common
{
    /// <summary>
    /// 加密帮助类
    /// </summary>
    public class EncryptHelper
    {
        /// <summary>
        /// MD5加密
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static string MD5DecryptString(string str)
        {
            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
            byte[] md5Source = System.Text.Encoding.UTF8.GetBytes(str);
            byte[] md5Out = md5.ComputeHash(md5Source);
            return Convert.ToBase64String(md5Out);
        }

/// <summary>
        /// DES加密字符串
        /// </summary>
        /// <param name="sInputString">输入字符</param>
        /// <param name="sKey">Key</param>
        /// <returns>加密结果</returns>
        public string DESEncryptString(string sInputString, string sKey)
        {
            try
            {
                byte[] data = Encoding.Default.GetBytes(sInputString);
                byte[] result;
                DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
                DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);                       //密钥
                DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);                        //初始化向量
                ICryptoTransform desencrypt = DES.CreateEncryptor();                //加密器对象
                result = desencrypt.TransformFinalBlock(data, 0, data.Length);      //转换指定字节数组的指定区域
                return BitConverter.ToString(result);
            }
            catch (Exception ex)
            {
                //ex.Message = "DES加密异常";
                throw ex;
            }
        }

/// <summary>
        /// DES解密字符串
        /// </summary>
        /// <param name="sInputString">输入字符</param>
        /// <param name="sKey">Key</param>
        /// <returns>解密结果</returns>
        public string DESDecryptString(string sInputString, string sKey)
        {
            try
            {
                //将字符串转换为字节数组
                string[] sInput = sInputString.Split("-".ToCharArray());
                byte[] data = new byte[sInput.Length];
                byte[] result;
                for (int i = 0; i < sInput.Length; i++)
                {
                    data[i] = byte.Parse(sInput[i], System.Globalization.NumberStyles.HexNumber);
                }

DESCryptoServiceProvider DES = new DESCryptoServiceProvider();
                DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
                DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
                ICryptoTransform desencrypt = DES.CreateDecryptor();
                result = desencrypt.TransformFinalBlock(data, 0, data.Length);
                return Encoding.Default.GetString(result);
            }
            catch (Exception ex)
            {
                //ex.Message = "DES解密异常";
                throw ex;
            }
        }
    }
}

转载于:https://www.cnblogs.com/Mr_Sheng/archive/2010/01/08/1642078.html

EncryptHelper相关推荐

  1. 【开源】分享一个前后端分离方案-前端angularjs+requirejs+dhtmlx 后端asp.net webapi

    一.前言 半年前左右折腾了一个前后端分离的架子,这几天才想起来翻出来分享给大家.关于前后端分离这个话题大家也谈了很久了,希望我这个实践能对大家有点点帮助,演示和源码都贴在后面. 二.技术架构 这两年a ...

  2. C# xml通过xslt转换为html输出

    html效果截图: 1.首先分析html代码结构: 结果如图: 2.调用接口返回的数据格式: 3.由第一步可看出每2个数据为一行并排显示,后台返回的数据总数可能为奇数个或偶数个,对应该生成的xml结构 ...

  3. pyDes 实现 Python 版的 DES 对称加密/解密--转

    https://my.oschina.net/leejun2005/blog/586451 手头有个 Java 版的 DES 加密/解密程序,最近想着将其 Python 重构下,方便后续脚本解析,捣鼓 ...

  4. 开始你的api:NetApiStarter

    在此之前,写过一篇 给新手的WebAPI实践 ,获得了很多新人的认可,那时还是基于.net mvc,文档生成还是自己闹洞大开写出来的,经过这两年的时间,netcore的发展已经势不可挡,自己也在不断的 ...

  5. .NET Core 微信公众号小程序6种获取UnionID方法,你知道哪几种?

    前言 获取UnionID是开发微信公众号/小程序中很有必要的一个环节,特别是针对一个公司拥有多个公众号小程序而推出的机制,实现打通账户一体化,用UnionID来区分多平台的唯一性. 官方的解释:如果开 ...

  6. Entity Framework 与 面向对象

    说要分享,我了个*,写了一半放草稿箱了两个星期都快发霉了,趁着周末写完发出来吧. 文章分为五部分: 基础.类讲述的是用到的一些EF与面向对象的基础: 业务是讲怎么划分设计业务: 设计模式和工作模式讲述 ...

  7. 字符串加密与解密_一种可以用在程序加密的功能

    本篇博客会有两篇代码,均为C# 编写而成.其中一篇为先行的各种加密技术如何使用(转载出处会在文末注明):另一篇为利用以上加密技术做出的一个类库,可以使程序捆绑在运行此程序的硬件并限定使用时间,十分高效 ...

  8. WeChat - 微信公众号开发之.Net Core接入

    .net进行微信公众号开发的例子好像比较少,这里做个笔记 首先,我们需要让微信能访问到我们的项目,所以要么需要有一个可以部署项目的连接到公网下的服务器,要么可以通过端口转发将请求转发到我们的项目,总之 ...

  9. C#实现带盐值加密,适配JAVA Shiro加密

    C#实现带盐值加密,适配JAVA Shiro加密 前言 核心代码 Java代码 C#代码 注意 前言 工业领域上位机软件与管理系统通常使用不同编程语言实现,比如我们的上位机软件通常使用C#,而MES. ...

最新文章

  1. 约束布局ConstraintLayout看这一篇就够了
  2. 如何兼容並蓄Android Studio 與 Eclipse 的優點, 減少顧此失彼的缺憾
  3. CSS实现英文或拼音单词首字母大写
  4. 一个页面中多个window.onload = function(){}冲突问题解决思路
  5. 概念介绍(机器学习)
  6. 万国数据联合阿里云发布混合云系列产品 助力企业落地云端
  7. careercup-树与图 4.6
  8. 170405、java版MD5工具类
  9. 基于key/value+Hadoop HDFS 设计的存储系统的shell命令接口
  10. appium for java教程_appium自动化测试入门(java版)
  11. 简单调整配置深度Linux-15迅速开始学习工作
  12. 显卡dos测试软件,A+N卡测试说明_早期显卡DOS版本
  13. 超强大的数学计算器——WolframAlpha(含安卓下载连接)
  14. 《智能养老》总体设计方案
  15. 实验四、SPOOLing技术
  16. 测试开发工作者日记:(楚汉传奇-it职场)2020.6.24-6.27
  17. linux kernel 网络协议栈之GRO(Generic receive offload)
  18. [安全攻防进阶篇] 二.如何学好逆向分析、逆向路线推荐及吕布传游戏逆向案例
  19. unity基础知识----unity界面菜单翻译
  20. 开关电源波纹的产生、测量及抑制,一篇全搞定!

热门文章

  1. 公布几个流氓软件分析报告——哇哇资讯精灵
  2. linux网卡驱动对XDP支持情况
  3. 修改GDAL库支持IRSP6数据
  4. 高并发服务器开源项目,高并发服务器框架详解 - osc_qgfjs4a5的个人空间 - OSCHINA - 中文开源技术交流社区...
  5. MFC 教程【2_MFC和Win32 】
  6. java 双击触发事件,用RxJava2的方式实现点击事件
  7. python def函数报错详解_JSer 快速入门 Python 之函数详解
  8. 【数据结构的魅力】005.链表问题专项
  9. android自定义协议,Android / iOS-自定义URI /协议处理
  10. Bandit UCB推导