using System;
using System.IO;
using System.Security.Cryptography;
using System.Text; namespace GT.Common.DES
{
/// <summary>
/// 3DES加解密类
/// </summary>
public class DESHelper
{ //构造一个对称算法
private SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();
#region 加密解密函数
/// <summary>
/// 字符串的加密
/// </summary>
/// <param name="Value">要加密的字符串</param>
/// <param name="sKey">密钥,必须32位</param>
/// <param name="sIV">向量,必须是8个字符</param>
/// <returns>加密后的字符串</returns>
public string EncryptString(string Value, string sKey,string sIV)
{
try
{
if (string.IsNullOrWhiteSpace(sKey))
{
sKey = key;
}
if (string.IsNullOrWhiteSpace(sIV))
{
sIV = iv;
}
ICryptoTransform ct;
MemoryStream ms;
CryptoStream cs;
byte[] byt;
mCSP.Key = Convert.FromBase64String(sKey);
byte[] biv=Encoding.Default.GetBytes (sIV); mCSP.IV = biv;
//指定加密的运算模式
mCSP.Mode = System.Security.Cryptography.CipherMode.ECB;
//获取或设置加密算法的填充模式
mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV);//创建加密对象
byt = Encoding.UTF8.GetBytes(Value);
ms = new MemoryStream();
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
cs.Write(byt, , byt.Length);
cs.FlushFinalBlock();
cs.Close();
return Convert.ToBase64String(ms.ToArray());
}
catch (Exception ex)
{
return ("Error in Encrypting " + ex.Message);
}
}
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="Value">加密后的字符串</param>
/// <param name="sKey">密钥,必须32位</param>
/// <param name="sIV">向量,必须是12个字符</param>
/// <returns>解密后的字符串</returns>
public string DecryptString(string Value, string sKey, string sIV)
{
try
{
if (string.IsNullOrWhiteSpace(sKey))
{
sKey = key;
}
if (string.IsNullOrWhiteSpace(sIV))
{
sIV = iv;
}
ICryptoTransform ct;//加密转换运算
MemoryStream ms;//内存流
CryptoStream cs;//数据流连接到数据加密转换的流
byte[] byt; //将3DES的密钥转换成byte
mCSP.Key = Convert.FromBase64String(sKey);
//将3DES的向量转换成byte
mCSP.IV = Encoding.Default.GetBytes(sIV);
mCSP.Mode = System.Security.Cryptography.CipherMode.ECB;
mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
ct = mCSP.CreateDecryptor(mCSP.Key, mCSP.IV);//创建对称解密对象
byt = Convert.FromBase64String(Value);
ms = new MemoryStream();
cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
cs.Write(byt, , byt.Length);
cs.FlushFinalBlock();
cs.Close();
return Encoding.UTF8.GetString(ms.ToArray());
}
catch (Exception ex)
{
return ("Error in Decrypting " + ex.Message);
}
}
#endregion #region KEY //<!--不要轻易修改,一定要保证跟生产环境的一致,防止丢失-->
//<!--秘钥32位-->
public static readonly string key = "aybcwdefgh1ntv2x3qr4u5o6igklszmp";
//<!--向量8位-->
public static readonly string iv = ""; #endregion } }

3DES加解密类的更多相关文章

  1. PHP版3DES加解密类

    <?php /** * * PHP版3DES加解密类 * * 可与java的3DES(DESede)加密方式兼容 * * @Author:蓝凤(ilanfeng.com) * * @versio ...

  2. 3DES加解密【示例】

    代码 /**  * 3DES加解密  */ public class DESedeUtils {     private static final String ALGORITHM_MD5 = &qu ...

  3. 3DES 加解密

    using System; using System.IO; using System.Security.Cryptography; using System.Text; namespace Comm ...

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

    原文:一个java的DES加解密类转换成C# 一个java的des加密解密代码如下: //package com.visionsky.util; import java.security.*; //i ...

  5. 3DES加解密 C语言

    3DES(或称为Triple DES),它相当于是对每个数据块应用三次DES加密算法.3*8字节密钥. 设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,P代表明文,C代 ...

  6. java 与 c# 3des 加解密

    java 与 c# 3des 加解密   主要差异如下: 1.  对于待加密解密的数据,各自的填充模式不一样 C#的模式有:ANSIX923.ISO10126.None.PKCS7.Zero,而Jav ...

  7. PHP和.NET通用的加密解密函数类,均使用3DES加解密 .

    以下为php代码 <PRE class=PHP name="code"> </PRE><PRE class=PHP name="code&q ...

  8. 3des加解密算法

    编号:1003时间:2016年4月1日09:51:11功能:openssl_3des加解密算法http://blog.csdn.net/alonesword/article/details/17385 ...

  9. php des 对称加解密类

    <?php header("Content-Type: text/html;charset=utf-8"); /** * des 对称加解密 */ class des { p ...

随机推荐

  1. 3D玫瑰花

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  2. 【VS开发】设备控制台 (DevCon.exe) 示例

    设备控制台 (DevCon.exe) 示例 本部分提供以下设备控制台 (DevCon.exe) 命令的示例: DevCon HwIDs 示例 1:查找所有硬件 ID 示例 2:使用模式查找硬件 ID ...

  3. Swool的安装与使用

    1.swoole的安装 //php最好用7.2以上的.直接去网站下载下来,然后与php一样编译安装. git下来后,因为没有config文件,故先在swool下载目录下执行: /.../php/bin ...

  4. Redhat7 安装 yum(换成免费版) 安装gcc

    最近上Linux系统基础课程,要在虚拟机上编译运行程序,这时候就需要安装gcc,网上一搜,各种什么在线,离线安装,其中在线安装很方面,一个命令 yum install gcc 即可解决 可我这么输入后 ...

  5. PTA(Basic Level)1060.爱丁顿数

    英国天文学家爱丁顿很喜欢骑车.据说他为了炫耀自己的骑车功力,还定义了一个"爱丁顿数" E ,即满足有 E 天骑车超过 E 英里的最大整数 E.据说爱丁顿自己的 E 等于87. 现给 ...

  6. Maven简单项目及命令使用

    项目结构如下 HelloWorld.java package pak1; public class HelloWorld { public String sayHello(){ return &quo ...

  7. LZH的多重影分身 qduoj 思维 差分

    LZH的多重影分身 qduoj 思维 差分 原题链接:https://qduoj.com/problem/591 题意 在数轴上有\(n\)个点(可以重合)和\(m\)条线段(可以重叠),你可以同时平 ...

  8. # jsp及servlet学习笔记

    目录 jsp及servlet学习笔记 JSP(Java Server Page Java服务端网页) 指令和动作: servlet(小服务程序) jsp及servlet学习笔记 JSP(Java Se ...

  9. BASH的保护性编程技巧

    BASH的保护性编程技巧   shell常用逻辑判断 -b file 若文件存在且是一个块特殊文件,则为真 -c file 若文件存在且是一个字符特殊文件,则为真 -d file 若文件存在且是一个目 ...

  10. 客户端相关知识学习(五)之什么是webView

    webview是什么?作用是什么?和浏览器有什么关系? Android系统中内置了一款高性能 webkit 内核浏览器,在 SDK 中封装为一个叫做 WebView 组件也就是说WebView是一个基 ...