数据加密之DES加密

DES加密即使用DESCryptoServiceProvider加密。DESCryptoServiceProvider在命名空间下:System.Security.Cryptography;

对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要2个密钥并交换使 用,如果企业内用户有n个,则整个企业共需要n×(n-1) 个密钥,密钥的生成和分发将成为企业信息部门的恶梦。对称加密算法的安全性取决于加密密钥的保存情况,但要求企业中每一个持有密钥的人都保守秘密是不可能 的,他们通常会有意无意的把密钥泄漏出去——如果一个用户使用的密钥被入侵者所获得,入侵者便可以读取该用户密钥加密的所有文档,如果整个企业共用一个加 密密钥,那整个企业文档的保密性便无从谈起

DES加密是可以解密的

 1  /// <summary>
 2         /// DES解密数据
 3         /// </summary>
 4         /// <param name="Text"></param>
 5         /// <param name="sKey"></param>
 6         /// <returns></returns>
 7         public static string Decrypt(string Text, string sKey)
 8         {
 9             DESCryptoServiceProvider des = new DESCryptoServiceProvider();
10             int len;
11             len = Text.Length / 2;
12             byte[] inputByteArray = new byte[len];
13             int x, i;
14             for (x = 0; x < len; x++)
15             {
16                 i = Convert.ToInt32(Text.Substring(x * 2, 2), 16);
17                 inputByteArray[x] = (byte)i;
18             }
19             des.Key = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
20             des.IV = ASCIIEncoding.ASCII.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
21             System.IO.MemoryStream ms = new System.IO.MemoryStream();
22             CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
23             cs.Write(inputByteArray, 0, inputByteArray.Length);
24             cs.FlushFinalBlock();
25             return Encoding.Default.GetString(ms.ToArray());
26         }
27
28         #endregion
29    /// <summary>
30         /// DES加密数据
31         /// </summary>
32         /// <param name="Text"></param>
33         /// <param name="sKey"></param>
34         /// <returns></returns>
35         public static string Encrypt(string Text, string sKey)
36         {
37             //DESCryptoServiceProvider命名空间: System.Security.Cryptography;
38             DESCryptoServiceProvider des = new DESCryptoServiceProvider();
39             byte[] inputByteArray;
40             inputByteArray = Encoding.Default.GetBytes(Text);
41             //FormsAuthentication命名空间:System.Web.Security;
42             des.Key = ASCIIEncoding.ASCII.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
43             des.IV = ASCIIEncoding.ASCII.GetBytes(FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, "md5").Substring(0, 8));
44             System.IO.MemoryStream ms = new System.IO.MemoryStream();
45             CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
46             cs.Write(inputByteArray, 0, inputByteArray.Length);
47             cs.FlushFinalBlock();
48             StringBuilder ret = new StringBuilder();
49             foreach (byte b in ms.ToArray())
50             {
51                 ret.AppendFormat("{0:X2}", b);
52             }
53             return ret.ToString();
54         }

这样调用即可

 1   /// <summary>
 2         /// 加密
 3         /// </summary>
 4         /// <param name="Text"></param>
 5         /// <returns></returns>
 6         public static string Encrypt(string Text)
 7         {
 8             return Encrypt(Text, "unity3d");
 9         }
10  /// <summary>
11         /// 解密
12         /// </summary>
13         /// <param name="Text"></param>
14         /// <returns></returns>
15         public static string Decrypt(string Text)
16         {
17             return Decrypt(Text, "unity3d");
18         }
时间: 2024-10-23 17:38:39

数据加密之DES加密的相关文章

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

PHP使用openssl进行Rsa加密,如果要加密的明文太长则会出错,解决方法:加密的时候117个字符加密一次,然后把所有的密文拼接成一个密文:解密的时候需要128个字符解密一下,然后拼接成数据. 加密: /** * 加密 * @param $originalData * @return string|void */ /*function encrypt($originalData){ // if (openssl_private_encrypt($originalData, $encryptD

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

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

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

DES加密实现(翻译自书籍《Wiley.Implementing.SSL.TLS.Using.Cryptography.and.PKI》)

理解BlockCipher加密算法 凯撒大帝被认为是最古老的对称加密算法.所谓的凯撒加密法(你也许可以从报纸上找到一个作为消遣来玩),它随机的给每一个字母分配一个数字.在这个简单的算法当中,字母到数字的映射就是key.现代加密算法比凯撒算法肯定复杂的多,以便抵御来自计算机的攻击.尽管基本原理是一样,替换一个字母或其它什么东西为另外一个字母或其它什么东西,后续都对替换后的东西进行处理,在几个世纪以来,更多的混淆和扩散(confusion and diffusion)要素被加入,从而创建了现代加密算

C#实现DES加密解密,AES加密解密

DES算法描述简介: DES是Data Encryption Standard(数据加密标准)的缩写.它是由IBM公司研制的一种加密算法,美国国家标准局于1977年公布把它作为非机要部门使用的数据加密标准:它是一个分组加密算法,他以64位为分组对数据加密.同时DES也是一个对称算法:加密和解密用的是同一个算法.它的密匙长度是56位(因为每个第8 位都用作奇偶校验),密匙可以是任意的56位的数,而且可以任意时候改变. /// <summary>   /// DES加密   /// </su

IOS、java支持DES加密

最近在考虑数据加密方面的需求,所以对数据加密简单的看了一下,当然不是看的原理,只是看看怎么能够实现.现在我们需要实现的是移动端和后台 (java)数据加解密的配合,开始的时候考虑的使用RSA,因为RSA是非对称加密,更加安全点,但是RSA加密的过程中,ios公钥加密的数据,后台 java是能够解密成功,但是后台java私钥加密的东西,前端ios,就没有解密成功,实验了很多方法,最终也没有成功,所以就放弃了,转向了安全性差 一点的DES加密. 对于DES.RSA的介绍,自己百度去吧,因为我也说不明

数据加密标准DES原理

数据加密标准(DES)是在20世纪70年代中期由美国IBM公司发展出来的,并被美国国家标准局公布为数据加密标准的一种分组加密算法. DES算法的分组大小为64位,所使用的加密或解密密钥也是64位.因为其中有8个位是用来做奇偶校验,所以64位中真正起密钥作用的只有56位.DES加密与解密所用的算法除了子密钥的顺序不同之外,其他部分则是完全相同. 1)Feistel网络 DES密码结构基于一个称为Feistel网络的结构.Feistel网络是由Horst Feistel在设计Lucifer分组密码时

【Android工具类】怎样保证Android与server的DES加密保持一致

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

DES加密解密的实现

public class EncryptDESString { //默认密钥向量 private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; /// <summary> /// DES加密字符串 /// </summary> /// <param name="encryptString">待加密的字符串</param> /// <p