C#的3DES加密解密算法
- C#类如下:
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Security.Cryptography;
- using System.IO;
- namespace ConsoleApplication1
- {
- /// <summary>
- /// 加解密类
- /// </summary>
- public class EncryptHelper
- {
- //构造一个对称算法
- private SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();
- #region 加密解密函数
- /// <summary>
- /// 字符串的加密
- /// </summary>
- /// <param name="Value">要加密的字符串</param>
- /// <param name="sKey">密钥,必须32位</param>
- /// <param name="sIV">向量,必须是12个字符</param>
- /// <returns>加密后的字符串</returns>
- public string EncryptString(string Value, string sKey,string sIV)
- {
- try
- {
- ICryptoTransform ct;
- MemoryStream ms;
- CryptoStream cs;
- byte[] byt;
- mCSP.Key = Convert.FromBase64String(sKey);
- mCSP.IV = Convert.FromBase64String(sIV);
- //指定加密的运算模式
- 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, 0, byt.Length);
- cs.FlushFinalBlock();
- cs.Close();
- return Convert.ToBase64String(ms.ToArray());
- }
- catch (Exception ex)
- {
- //MessageBox.Show(ex.Message, "出现异常", MessageBoxButtons.OK, MessageBoxIcon.Warning);
- 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
- {
- ICryptoTransform ct;//加密转换运算
- MemoryStream ms;//内存流
- CryptoStream cs;//数据流连接到数据加密转换的流
- byte[] byt;
- //将3DES的密钥转换成byte
- mCSP.Key = Convert.FromBase64String(sKey);
- //将3DES的向量转换成byte
- mCSP.IV = Convert.FromBase64String(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, 0, byt.Length);
- cs.FlushFinalBlock();
- cs.Close();
- return Encoding.UTF8.GetString(ms.ToArray());
- }
- catch (Exception ex)
- {
- //MessageBox.Show(ex.Message, "出现异常", MessageBoxButtons.OK, MessageBoxIcon.Warning);
- return ("Error in Decrypting " + ex.Message);
- }
- }
- #endregion
- }
- }
- 调用方法如下:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ConsoleApplication1
- {
- class Program
- {
- static void Main(string[] args)
- {
- EncryptHelper helper = new EncryptHelper();
- //加密
- string oldValue = "13800138000";
- //加密后结果
- //密钥,必须32位
- string sKey = "qJzGEh6hESZDVJeCnFPGuxzaiB7NLQM5";
- //向量,必须是12个字符
- string sIV = "andyliu1234=";
- string newValue = helper.EncryptString(oldValue,sKey,sIV);
- Console.WriteLine("加密后:"+ newValue);
- //解密
- string desValue = helper.DecryptString(newValue,sKey,sIV);
- //
- Console.WriteLine("解密后:"+ desValue);
- Console.ReadLine();
- }
- }
- }
C#的3DES加密解密算法的更多相关文章
- iOS 3DES加密解密(一行代码搞定)
3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称.它相当于是对每个数据块应用三次DES加密算法.由于计 ...
- 简进祥==iOS 3DES加密解密
3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称.它相当于是对每个数据块应用三次DES加密算法.由于计 ...
- 【推荐】JAVA基础◆浅谈3DES加密解密
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- 兼容javascript和C#的RSA加密解密算法,对web提交的数据进行加密传输
Web应用中往往涉及到敏感的数据,由于HTTP协议以明文的形式与服务器进行交互,因此可以通过截获请求的数据包进行分析来盗取有用的信息.虽然https可以对传输的数据进行加密,但是必须要申请证书(一般都 ...
- 一组PHP可逆加密解密算法
对于大部分密码加密,我们可以采用md5.sha1等方法.可以有效防止数据泄露,但是这些方法仅适用于无需还原的数据加密. 对于需要还原的信息,则需要采用可逆的加密解密算法. 下面一组PHP函数是实现此加 ...
- RC4加密解密算法
RC4相对是速度快.安全性高的加密算法.在实际应用中,我们可以对安全系数要求高的文本进行多重加密,这样破解就有一定困难了.如下测试给出了先用RC4加密,然后再次用BASE64编码,这样双重锁定,保证数 ...
- C# Java 3DES加密解密 扩展及修正\0 问题
注: C#已亲测及做扩展, Java 部分未做验证 /// <summary> /// 3DES加密解密 /// ------------------------------------- ...
- java 实现 DES加密 解密算法
DES算法的入口参数有三个:Key.Data.Mode.其中Key为8个字节共64位,是DES算法的工作密钥:Data也为8个字节64位,是要被加密或被解密的数据:Mode为DES的工作方式,有两种: ...
- 数据的加密传输——单片机上实现TEA加密解密算法
各位大侠在做数据传输时,有没有考虑过把数据加密起来进行传输,若在串口或者无线中把所要传的数据加密起来,岂不是增加了通信的安全性.常用的加密解密算法比如DES.RSA等,受限于单片机的内存和运算速度,实 ...
随机推荐
- Unity 游戏存档 PlayerPrefs类的用法
unity3d提供了一个用于本地持久化保存与读取的类--PlayerPrefs.工作原理非常简单,以键值对的形式将数据保存在文件中,然后程序可以根据这个名称取出上次保存的数值. PlayerPr ...
- 可视化工具solo show
辗转一圈还是回到了我魂牵梦绕的可视化上来了. 在Gephi+Netbeans上折腾了将近一个星期后,我深深的体会到个人对于代码的驾驭能力尚有提升的空间^_^,路很长,方向很重要,三思而行. 转载请标明 ...
- 【JVM】JVM之类加载器
一.前言 首先,小小测试,看是否已经掌握了JVM类加载的过程 1.1.测试一 class Singleton { private static Singleton sin = new Singleto ...
- eclipse中关联文件设置方法
在前几次的试验中,只是做了处于应用程序最上层的界面设计,其实还不知程序在运行过程中到底调用了哪些函数,这些函数是怎么实现的,由于搭建环境时没有进行文件关联,所以在环境中无法实现ctrl键+左击鼠标的方 ...
- java设计模式(四)--单例模式
Singleton最熟悉不过了,下面学习单例模式.转载:http://zz563143188.iteye.com/blog/1847029 单例对象(Singleton)是一种常用的设计模式.在Jav ...
- 基于caffe的艺术迁移学习 style-transfer-windows+caffe
这个是在去年微博里面非常流行的,在git_hub上的代码是https://github.com/fzliu/style-transfer 比如这是梵高的画 这是你自己的照片 然后你想生成这样 怎么实现 ...
- ECharts+BaiduMap+HT for Web网络拓扑图应用
前一篇谈及到了ECharts整合HT for Web的网络拓扑图应用,后来在ECharts的Demo中看到了有关空气质量的相关报表应用,就想将百度地图.ECharts和HT for Web三者结合起来 ...
- Moon.Orm 5.0(MQL版)及之前版本的开源计划
开源综述:步步开源 Moon.Orm 5.0 (MQL版) 版本维护及下载 (跟踪发布) Moon.Orm 5.0系列文章 Moon.Orm 5.0性能问题,将发言权交给你! 一.5.0目前的情况,步 ...
- ES6笔记(2)-- let的块级作用域
系列文章 -- ES6笔记系列 一.函数级作用域 我们都知道,在ES6以前,JS只有函数级作用域,没有块级作用域这个概念 没有块级作用域,有利有弊,利于方便自由,弊于作用域内的变量容易被共享,例如这个 ...
- [译]针对科学数据处理的统计学习教程(scikit-learn教程2)
翻译:Tacey Wong 统计学习: 随着科学实验数据的迅速增长,机器学习成了一种越来越重要的技术.问题从构建一个预测函数将不同的观察数据联系起来,到将观测数据分类,或者从未标记数据中学习到一些结构 ...