1. C#类如下:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Security.Cryptography;
  5. using System.IO;
  6.  
  7. namespace ConsoleApplication1
  8. {
  9. /// <summary>
  10. /// 加解密类
  11. /// </summary>
  12. public class EncryptHelper
  13. {
  14.  
  15. //构造一个对称算法
  16. private SymmetricAlgorithm mCSP = new TripleDESCryptoServiceProvider();
  17.  
  18. #region 加密解密函数
  19.  
  20. /// <summary>
  21. /// 字符串的加密
  22. /// </summary>
  23. /// <param name="Value">要加密的字符串</param>
  24. /// <param name="sKey">密钥,必须32位</param>
  25. /// <param name="sIV">向量,必须是12个字符</param>
  26. /// <returns>加密后的字符串</returns>
  27. public string EncryptString(string Value, string sKey,string sIV)
  28. {
  29. try
  30. {
  31. ICryptoTransform ct;
  32. MemoryStream ms;
  33. CryptoStream cs;
  34. byte[] byt;
  35. mCSP.Key = Convert.FromBase64String(sKey);
  36. mCSP.IV = Convert.FromBase64String(sIV);
  37. //指定加密的运算模式
  38. mCSP.Mode = System.Security.Cryptography.CipherMode.ECB;
  39. //获取或设置加密算法的填充模式
  40. mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
  41. ct = mCSP.CreateEncryptor(mCSP.Key, mCSP.IV);//创建加密对象
  42. byt = Encoding.UTF8.GetBytes(Value);
  43. ms = new MemoryStream();
  44. cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
  45. cs.Write(byt, 0, byt.Length);
  46. cs.FlushFinalBlock();
  47. cs.Close();
  48.  
  49. return Convert.ToBase64String(ms.ToArray());
  50. }
  51. catch (Exception ex)
  52. {
  53. //MessageBox.Show(ex.Message, "出现异常", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  54. return ("Error in Encrypting " + ex.Message);
  55. }
  56. }
  57.  
  58. /// <summary>
  59. /// 解密字符串
  60. /// </summary>
  61. /// <param name="Value">加密后的字符串</param>
  62. /// <param name="sKey">密钥,必须32位</param>
  63. /// <param name="sIV">向量,必须是12个字符</param>
  64. /// <returns>解密后的字符串</returns>
  65. public string DecryptString(string Value, string sKey, string sIV)
  66. {
  67. try
  68. {
  69. ICryptoTransform ct;//加密转换运算
  70. MemoryStream ms;//内存流
  71. CryptoStream cs;//数据流连接到数据加密转换的流
  72. byte[] byt;
  73. //将3DES的密钥转换成byte
  74. mCSP.Key = Convert.FromBase64String(sKey);
  75. //将3DES的向量转换成byte
  76. mCSP.IV = Convert.FromBase64String(sIV);
  77. mCSP.Mode = System.Security.Cryptography.CipherMode.ECB;
  78. mCSP.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
  79. ct = mCSP.CreateDecryptor(mCSP.Key, mCSP.IV);//创建对称解密对象
  80. byt = Convert.FromBase64String(Value);
  81. ms = new MemoryStream();
  82. cs = new CryptoStream(ms, ct, CryptoStreamMode.Write);
  83. cs.Write(byt, 0, byt.Length);
  84. cs.FlushFinalBlock();
  85. cs.Close();
  86.  
  87. return Encoding.UTF8.GetString(ms.ToArray());
  88. }
  89. catch (Exception ex)
  90. {
  91. //MessageBox.Show(ex.Message, "出现异常", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  92. return ("Error in Decrypting " + ex.Message);
  93. }
  94. }
  95.  
  96. #endregion
  97. }
  98. }
  1. 调用方法如下:
  1.  
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace ConsoleApplication1
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. EncryptHelper helper = new EncryptHelper();
  14.  
  15. //加密
  16. string oldValue = "13800138000";
  17. //加密后结果
  18. //密钥,必须32位
  19. string sKey = "qJzGEh6hESZDVJeCnFPGuxzaiB7NLQM5";
  20. //向量,必须是12个字符
  21. string sIV = "andyliu1234=";
  22. //print
  23. string newValue = helper.EncryptString(oldValue,sKey,sIV);
  24. Console.WriteLine("加密后:"+ newValue);
  25. //解密
  26. string desValue = helper.DecryptString(newValue,sKey,sIV);
  27. //
  28. Console.WriteLine("解密后:"+ desValue);
  29. Console.ReadLine();
  30.  
  31. }
  32. }
  33. }

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

  1. iOS 3DES加密解密(一行代码搞定)

    3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称.它相当于是对每个数据块应用三次DES加密算法.由于计 ...

  2. 简进祥==iOS 3DES加密解密

    3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称.它相当于是对每个数据块应用三次DES加密算法.由于计 ...

  3. 【推荐】JAVA基础◆浅谈3DES加密解密

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  4. 兼容javascript和C#的RSA加密解密算法,对web提交的数据进行加密传输

    Web应用中往往涉及到敏感的数据,由于HTTP协议以明文的形式与服务器进行交互,因此可以通过截获请求的数据包进行分析来盗取有用的信息.虽然https可以对传输的数据进行加密,但是必须要申请证书(一般都 ...

  5. 一组PHP可逆加密解密算法

    对于大部分密码加密,我们可以采用md5.sha1等方法.可以有效防止数据泄露,但是这些方法仅适用于无需还原的数据加密. 对于需要还原的信息,则需要采用可逆的加密解密算法. 下面一组PHP函数是实现此加 ...

  6. RC4加密解密算法

    RC4相对是速度快.安全性高的加密算法.在实际应用中,我们可以对安全系数要求高的文本进行多重加密,这样破解就有一定困难了.如下测试给出了先用RC4加密,然后再次用BASE64编码,这样双重锁定,保证数 ...

  7. C# Java 3DES加密解密 扩展及修正\0 问题

    注: C#已亲测及做扩展, Java 部分未做验证 /// <summary> /// 3DES加密解密 /// ------------------------------------- ...

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

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

  9. 数据的加密传输——单片机上实现TEA加密解密算法

    各位大侠在做数据传输时,有没有考虑过把数据加密起来进行传输,若在串口或者无线中把所要传的数据加密起来,岂不是增加了通信的安全性.常用的加密解密算法比如DES.RSA等,受限于单片机的内存和运算速度,实 ...

随机推荐

  1. Unity 游戏存档 PlayerPrefs类的用法

    unity3d提供了一个用于本地持久化保存与读取的类--PlayerPrefs.工作原理非常简单,以键值对的形式将数据保存在文件中,然后程序可以根据这个名称取出上次保存的数值.    PlayerPr ...

  2. 可视化工具solo show

    辗转一圈还是回到了我魂牵梦绕的可视化上来了. 在Gephi+Netbeans上折腾了将近一个星期后,我深深的体会到个人对于代码的驾驭能力尚有提升的空间^_^,路很长,方向很重要,三思而行. 转载请标明 ...

  3. 【JVM】JVM之类加载器

    一.前言 首先,小小测试,看是否已经掌握了JVM类加载的过程 1.1.测试一 class Singleton { private static Singleton sin = new Singleto ...

  4. eclipse中关联文件设置方法

    在前几次的试验中,只是做了处于应用程序最上层的界面设计,其实还不知程序在运行过程中到底调用了哪些函数,这些函数是怎么实现的,由于搭建环境时没有进行文件关联,所以在环境中无法实现ctrl键+左击鼠标的方 ...

  5. java设计模式(四)--单例模式

    Singleton最熟悉不过了,下面学习单例模式.转载:http://zz563143188.iteye.com/blog/1847029 单例对象(Singleton)是一种常用的设计模式.在Jav ...

  6. 基于caffe的艺术迁移学习 style-transfer-windows+caffe

    这个是在去年微博里面非常流行的,在git_hub上的代码是https://github.com/fzliu/style-transfer 比如这是梵高的画 这是你自己的照片 然后你想生成这样 怎么实现 ...

  7. ECharts+BaiduMap+HT for Web网络拓扑图应用

    前一篇谈及到了ECharts整合HT for Web的网络拓扑图应用,后来在ECharts的Demo中看到了有关空气质量的相关报表应用,就想将百度地图.ECharts和HT for Web三者结合起来 ...

  8. Moon.Orm 5.0(MQL版)及之前版本的开源计划

    开源综述:步步开源 Moon.Orm 5.0 (MQL版) 版本维护及下载 (跟踪发布) Moon.Orm 5.0系列文章 Moon.Orm 5.0性能问题,将发言权交给你! 一.5.0目前的情况,步 ...

  9. ES6笔记(2)-- let的块级作用域

    系列文章 -- ES6笔记系列 一.函数级作用域 我们都知道,在ES6以前,JS只有函数级作用域,没有块级作用域这个概念 没有块级作用域,有利有弊,利于方便自由,弊于作用域内的变量容易被共享,例如这个 ...

  10. [译]针对科学数据处理的统计学习教程(scikit-learn教程2)

    翻译:Tacey Wong 统计学习: 随着科学实验数据的迅速增长,机器学习成了一种越来越重要的技术.问题从构建一个预测函数将不同的观察数据联系起来,到将观测数据分类,或者从未标记数据中学习到一些结构 ...