using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO; namespace MTR.Library.CommonHelper
{
public class DESEncryptHelper
{
/// <summary>
/// Encrypt string
/// </summary>
/// <param name="value">The string which to be encrypted.</param>
/// <returns>The value after being encrypted.</returns>
public static string Encrypt(string value)
{
return Encrypt(value, System.Configuration.ConfigurationManager.AppSettings["pwd"]);
} /// <summary>
/// Encrypt string
/// </summary>
/// <param name="value">The string which to be encrypted.</param>
/// <param name="password">The password.</param>
/// <returns>The value after being encrypted.</returns>
public static string Encrypt(string value, string password)
{
try
{
byte[] rgbKey = Encoding.UTF8.GetBytes(password.Substring(, ));
byte[] rgbIV = Encoding.UTF8.GetBytes(password.Substring(, ));
byte[] inputByteArray = Encoding.UTF8.GetBytes(value);
using (DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider())
{
using (MemoryStream mStream = new MemoryStream())
{
CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, , inputByteArray.Length);
cStream.FlushFinalBlock();
return Convert.ToBase64String(mStream.ToArray());
}
}
}
catch (Exception ex)
{
throw new Exception("Error when encrypting data", ex);
}
} /// <summary>
/// Decrypt string
/// </summary>
/// <param name="value">The string which to be decrypted.</param>
/// <returns>The value after being decrypted.</returns>
public static string Decrypt(string value)
{
return Decrypt(value, System.Configuration.ConfigurationManager.AppSettings["pwd"]);
} /// <summary>
/// Decrypt string
/// </summary>
/// <param name="value">The string which to be decrypted.</param>
/// <param name="password">The password.</param>
/// <returns>The value after being decrypted.</returns>
public static string Decrypt(string value, string password)
{
try
{
byte[] rgbKey = Encoding.UTF8.GetBytes(password.Substring(, ));
byte[] rgbIV = Encoding.UTF8.GetBytes(password.Substring(, ));
byte[] inputByteArray = Convert.FromBase64String(value);
using (DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider())
{
using (MemoryStream mStream = new MemoryStream())
{
CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, , inputByteArray.Length);
cStream.FlushFinalBlock();
return Encoding.UTF8.GetString(mStream.ToArray());
}
}
}
catch (Exception ex)
{
throw new Exception("Error when decrypting data", ex);
}
}
}
}

C# DES 加密解密的更多相关文章

  1. php使用openssl进行Rsa长数据加密(117)解密(128) 和 DES 加密解密

    PHP使用openssl进行Rsa加密,如果要加密的明文太长则会出错,解决方法:加密的时候117个字符加密一次,然后把所有的密文拼接成一个密文:解密的时候需要128个字符解密一下,然后拼接成数据. 加 ...

  2. des加密解密——java加密,php解密

    最近在做项目中,遇到des加密解密的问题. 场景是安卓app端用des加密,php这边需要解密.之前没有接触过des这种加密解密算法,但想着肯定会有demo.因此百度,搜了代码来用.网上代码也是鱼龙混 ...

  3. DES加密解密

    加密后生成Base64字符串,并去除'='字符. 加密后替换掉'+',这样加密后的字符串可以作为url参数传递. using System; using System.IO; using System ...

  4. 一个java的DES加密解密类转换成C#

    一个java的des加密解密代码如下: //package com.visionsky.util; import java.security.*; //import java.util.regex.P ...

  5. Golang之AES/DES加密解密

    AES/DES加密/解密涉及4个概念:1. Block, 也叫分组, 相应加密/解密的算法. 2. BlockMode, 模式, 相应加密/解密的处理.3. InitalVectory, 初始向量4. ...

  6. java 实现 DES加密 解密算法

    DES算法的入口参数有三个:Key.Data.Mode.其中Key为8个字节共64位,是DES算法的工作密钥:Data也为8个字节64位,是要被加密或被解密的数据:Mode为DES的工作方式,有两种: ...

  7. 兼容PHP和Java的des加密解密代码分享

    这篇文章主要介绍了兼容PHP和Java的des加密解密代码分享,适合如服务器是JAVA语言编写,客户端是PHP编写,并需要des加密解密的情况,需要的朋友可以参考下 作为一个iOS工程师来解决安卓的问 ...

  8. php实现和c#一致的DES加密解密

    原文:php实现和c#一致的DES加密解密 php实现和c#一致的DES加密解密,可以从网上搜到一大堆,但是测试后发现都没法用.以下正确代码是我经过苦苦才找到的.希望大家在系统整合时能用的上. 注意: ...

  9. 各种加密解密函数(URL加密解密、sha1加密解密、des加密解密)

    原文:各种加密解密函数(URL加密解密.sha1加密解密.des加密解密) 普通hash函数如md5.sha1.base64等都是不可逆函数.虽然我们利用php可以利用这些函数写出可逆函数来.但是跨语 ...

  10. php中des加密解密 匹配C#des加密解密 对称加密

    原文:php中des加密解密 匹配C#des加密解密 对称加密 网上找来的 php des加密解密 完全匹配上一篇C# 字符串加密解密函数  可以用于C#和php通信 对数据进行加密,其中$key 是 ...

随机推荐

  1. Qt之操作Excel

    Visual Basic for Applications(VBA)是一种Visual Basic的一种宏语言,主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软件. ...

  2. SQLLoader2(导入EXCEL或csv格式的文件)

    一.EXCEL文件导入:1.首先将EXCEL文件另存为CSV格式文件--->用UltraEdit工具打开时可看到字段之间以逗号分隔. ,EMPNO,ENAME,JOB,MGR,HIREDATE, ...

  3. js实现的对象数组根据对象的键值进行排序代码

    有时候会遇到做展示数组的排序,由大到小和由小到大的切换: var arr=[{id:1,webName:"蚂蚁部落"},{id:2,webName:"网易"}] ...

  4. C#设置程序自启动

    public static void SetAutoRun(string fileName, bool isAutoRun)        {            RegistryKey reg = ...

  5. poj1458 求最长公共子序列 经典DP

    Common Subsequence Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 45763   Accepted: 18 ...

  6. Niagara AX之在Station下显示Home节点

    默认的Station下是没有Home节点的,那么,这个Home节点是怎么添加上去的呢? 注意Home后面的描述(Description):“Navigation tree defined by nav ...

  7. netCDF

    NetCDF started in 1989 most used in geoscience community array-oriented self-describing header, desc ...

  8. MAC OS中使用ll,la命令

    在linux下习惯了使用ll.la等ls别名 用mac os发现没有这样的命令,很不方便. 其实只要在用户目录下建立一个脚本“.bash_profile”,并输入以下内容即可:alias ll='ls ...

  9. ASP.NET MVC 4.0 学习6-Model Binding

    一,ViewData,ViewBag與TempData ASP.NET MVC架構中,通過繼承在Controller中的ViewData,ViewBag和TempData和View頁面進行資料的存取, ...

  10. mac终端 使用摘要

    Root  (拥有对此计算机的所有权限) 查看当前用户:who 切换到root(默认系统是不会使用root的):sudo -s  然后输入密码 更改密码:passwd