C# DES加密

需要引用名称空间

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

具体代码:

 1     public class CryptoHelper
 2     {
 3         /// <summary>
 4         /// 使用DES加密
 5         /// </summary>
 6         /// <param name="plain">明文</param>
 7         /// <param name="key">加密钥匙</param>
 8         /// <param name="iv">向量</param>
 9         /// <returns>返回密文</returns>
10         public static string DesEncode(string plain, string key, string iv)
11         {
12             //把密钥转换成字节数组
13             byte[] keyBytes = Encoding.ASCII.GetBytes(key);
14
15             //把向量转换成字节数组
16             byte[] ivBytes = Encoding.ASCII.GetBytes(iv);
17
18             //声明1个新的DES对象
19             DESCryptoServiceProvider des = new DESCryptoServiceProvider();
20
21             //开辟一块内存流
22             MemoryStream msEncrypt = new MemoryStream();
23
24             //把内存流对象包装成加密流对象
25             CryptoStream csEncrypt = new CryptoStream(msEncrypt, des.CreateEncryptor(keyBytes, ivBytes), CryptoStreamMode.Write);
26
27             //把加密流对象包装成写入流对象
28             StreamWriter swEncrypt = new StreamWriter(csEncrypt);
29
30             //写入流对象写入明文
31             swEncrypt.WriteLine(plain);
32
33             //写入流关闭
34             swEncrypt.Close();
35
36             //加密流关闭
37             csEncrypt.Close();
38
39             //把内存流转换成字节数组,内存流现在已经是密文了
40             byte[] bytesCipher=msEncrypt.ToArray();
41
42             //内存流关闭
43             msEncrypt.Close();
44             //将字节数组转化成Base64字符串
45             return Convert.ToBase64String(bytesCipher);
46         }
47
48         public static string DesDeCode(string cipher, string key, string iv)
49         {
50             //将密文通过Base64位还原成字节数组
51             byte[] cipherByte = Convert.FromBase64String(cipher);
52
53             //把密钥转换成字节数组
54             byte[] keyBytes = Encoding.ASCII.GetBytes(key);
55
56             //把向量转换成字节数组
57             byte[] ivBytes = Encoding.ASCII.GetBytes(iv);
58
59             //声明1个新的DES对象
60             DESCryptoServiceProvider des = new DESCryptoServiceProvider();
61
62             //开辟一块内存流,并存放密文字节数组
63             MemoryStream msDecrypt = new MemoryStream(cipherByte);
64
65             //把内存流对象包装成解密流对象
66             CryptoStream csDecrypt = new CryptoStream(msDecrypt, des.CreateDecryptor(keyBytes, ivBytes), CryptoStreamMode.Read);
67
68             //把解密流对象包装成写入流对象
69             StreamReader srDecrypt = new StreamReader(csDecrypt);
70
71             //明文=读出流的读出内容
72             string strPlainText=srDecrypt.ReadLine();
73
74             //读出流关闭
75             srDecrypt.Close();
76
77             //解密流关闭
78             csDecrypt.Close();
79
80             //内存流关闭
81             msDecrypt.Close();
82
83             //返回明文
84             return strPlainText;
85         }
86     }
时间: 2024-10-31 16:46:39

C# DES加密的相关文章

C#DES加密解密字符串

1.添加引用 using System.Security.Cryptography; using System.IO; 2.添加默认密匙向量 //默认密钥向量 private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; 3.添加加密解密类 /// <summary> /// DES加密字符串 /// </summary> /// <param name="encry

DES加密解密算法

DES加密解密算法 // 仿射变换加解密.cpp : 定义控制台应用程序的入口点. // #include <stdio.h> #include <conio.h> static char key[10], key_a[5], code[8], key_b[5], temp[10], key_aa[8], key_bb[8], l[4], r[4], l_a[4], r_a[4], V[8] = { 0, 1, 0, 1, 0, 1, 0, 1 }, b[8]; char Code

Oracle定义DES加密解密及MD5加密函数

http://blog.csdn.net/xdweleven/article/details/38319351 (1)DES加密函数create or replace functionencrypt_des(p_text varchar2, p_key varchar2) return varchar2 is        v_text varchar2(4000);        v_enc varchar2(4000);        raw_input RAW(128) ;       

pyDes库 实现python的des加密

下载及简介地址:https://twhiteman.netfirms.com/des.html 如需要在python中使用des加密,可以直接使用pyDes库加密,该库提供了CBC和ECB两种加密方式. 1.Windows下安装 下载后pyDes-x.x.x.zip并解压后,里面有setup.py文件,使用命令 setup.py --help可查看详细使用. 你可以使用命令 python setup.py install 命令安装,也可以直接将压缩包内的pyDes.py拷贝到本地的python

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

最近在做项目中,遇到des加密解密的问题. 场景是安卓app端用des加密,php这边需要解密.之前没有接触过des这种加密解密算法,但想着肯定会有demo.因此百度,搜了代码来用.网上代码也是鱼龙混杂,好不容易测试在php这边测试加密和解密成功了.为确保安卓app端提交过来的加密参数能够解密出来,给定安卓人员一个字符串,让他们把des加密后的字符串给我,在php这边解密.结果一看,加密出来的字符串跟我这边加密出来的结果不一致,自然是解密不出来. 要来java的des算法代码,研究加密的过程,其

关于 Des加密(Android与ios 与后台java服务器之间的加密解密)

关于 Des加密(Android与ios  与后台java服务器之间的加密解密) http://blog.sina.com.cn/s/blog_7c8dc2d50101id91.html (2013-04-17 11:47:23)   分类: iPhone开发 最近做了一个移动项目,是有服务器和客户端类型的项目,客户端是要登录才行的,登录的密码要用DES加密,服务器是用Java开发的,客户端要同时支持多平台(Android.iOS),在处理iOS的DES加密的时候遇到了一些问题,起初怎么调都调不

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

这篇文章主要介绍了兼容PHP和Java的des加密解密代码分享,适合如服务器是JAVA语言编写,客户端是PHP编写,并需要des加密解密的情况,需要的朋友可以参考下 php <?php class DES { var $key; var $iv; //偏移量 function DES($key, $iv=0) { $this->key = $key; if($iv == 0) { $this->iv = $key; } else { $this->iv = $iv; } } //加

【Android开发经验】比DES加密更安全的算法——3DES加密算法

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 在前面的文章里面,我们讨论了DES算法,同时也明白了如何才能保证不同平台下的加密和解密结果的一致性.但是DES作为出现了很长时间的一种加密算法,随着计算机运算能力的加强,DES加密容易被暴力破解,其安全性变得有点低.于是,为了增强数据的安全性,3DES算法就应运而生了. 3DES,顾名思义,就是对DES加密算法的改进,3DES通过对每个数据进行3次DES加密,从而降低被破解的可能性. 如果我们要使用3DE

【Android开发经验】如何保证Android与服务器的DES加密保持一致

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 在我们的应用程序涉及到比较敏感的数据的时候,我们通常会对数据进行简单的加密.在与服务器之间的数据交互中,除了可以使用post请求来增强数据的安全性之外,我们可以使用常见的加密算法,对数据进行加密.今天主要介绍的是DES加密算法. 首先,DES属于一种对称的加密算法,所谓对称,就是说加密和解密使用的都是同一个密钥,那么在我们实际应用的时候,就是指服务器和客户端进行加密解密的时候,使用的是一个相同的密钥.除此

关于Objective-c和Java下DES加密保持一致的方式

转载自:http://www.cnblogs.com/janken/archive/2012/04/05/2432930.html 最近做了一个移动项目,是有服务器和客户端类型的项目,客户端是要登录才行的,登录的密码要用DES加密,服务器是用Java开发的,客户端要同时支持多平台(Android.iOS),在处理iOS的DES加密的时候遇到了一些问题,起初怎么调都调不成和Android端生成的密文相同.最终一个忽然的想法让我找到了问题的所在,现在将代码总结一下,以备自己以后查阅. 首先,Java