用C#实现DES加密解密

简介:
MD5/Base64/DES是常用来对用户身份验证的算法,本人陆续公开了自己常用的这三种算法的源代码,不足之处,希望大家批评指正。
 
InBlock.gif using System; 
InBlock.gif using System.Security.Cryptography; 
InBlock.gif using System.Text; 
InBlock.gif using System.IO; 
InBlock.gif 
InBlock.gif namespace Common 
InBlock.gif...{ 
InBlock.gif        /** //// <summary> 
InBlock.gif         /// DESEncrypt加密解密算法。 
InBlock.gif         /// </summary> 
InBlock.gif         public  sealed  class DESEncrypt 
InBlock.gif        ...{ 
InBlock.gif                 private DESEncrypt() 
InBlock.gif                ...{ 
InBlock.gif                         // 
InBlock.gif                         // TODO: 在此处添加构造函数逻辑 
InBlock.gif                         // 
InBlock.gif                } 
InBlock.gif 
InBlock.gif                 private  static  string key =  "zhoufoxcn"
InBlock.gif 
InBlock.gif                /** //// <summary> 
InBlock.gif                 /// 对称加密解密的密钥 
InBlock.gif                 /// </summary> 
InBlock.gif                 public  static  string Key 
InBlock.gif                ...{ 
InBlock.gif                        get 
InBlock.gif                        ...{ 
InBlock.gif                                 return key; 
InBlock.gif                        } 
InBlock.gif                        set 
InBlock.gif                        ...{ 
InBlock.gif                                key = value; 
InBlock.gif                        } 
InBlock.gif                } 
InBlock.gif 
InBlock.gif                /** //// <summary> 
InBlock.gif                 /// DES加密 
InBlock.gif                 /// </summary> 
InBlock.gif                 /// <param name="encryptString"></param> 
InBlock.gif                 /// <returns></returns> 
InBlock.gif                 public  static  string DesEncrypt( string encryptString) 
InBlock.gif                ...{ 
InBlock.gif                         byte[] keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 8)); 
InBlock.gif                         byte[] keyIV = keyBytes; 
InBlock.gif                         byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString); 
InBlock.gif                        DESCryptoServiceProvider provider =  new DESCryptoServiceProvider(); 
InBlock.gif                        MemoryStream mStream =  new MemoryStream(); 
InBlock.gif                        CryptoStream cStream =  new CryptoStream(mStream, provider.CreateEncryptor(keyBytes, keyIV), CryptoStreamMode.Write); 
InBlock.gif                        cStream.Write(inputByteArray, 0, inputByteArray.Length); 
InBlock.gif                        cStream.FlushFinalBlock(); 
InBlock.gif                         return Convert.ToBase64String(mStream.ToArray()); 
InBlock.gif                } 
InBlock.gif 
InBlock.gif                /** //// <summary> 
InBlock.gif                 /// DES解密 
InBlock.gif                 /// </summary> 
InBlock.gif                 /// <param name="decryptString"></param> 
InBlock.gif                 /// <returns></returns> 
InBlock.gif                 public  static  string DesDecrypt( string decryptString) 
InBlock.gif                ...{ 
InBlock.gif                         byte[] keyBytes = Encoding.UTF8.GetBytes(key.Substring(0, 8)); 
InBlock.gif                         byte[] keyIV = keyBytes; 
InBlock.gif                         byte[] inputByteArray = Convert.FromBase64String(decryptString); 
InBlock.gif                        DESCryptoServiceProvider provider =  new DESCryptoServiceProvider(); 
InBlock.gif                        MemoryStream mStream =  new MemoryStream(); 
InBlock.gif                        CryptoStream cStream =  new CryptoStream(mStream, provider.CreateDecryptor(keyBytes, keyIV), CryptoStreamMode.Write); 
InBlock.gif                        cStream.Write(inputByteArray, 0, inputByteArray.Length); 
InBlock.gif                        cStream.FlushFinalBlock(); 
InBlock.gif                         return Encoding.UTF8.GetString(mStream.ToArray()); 
InBlock.gif                } 
InBlock.gif        } 
InBlock.gif














本文转自周金桥51CTO博客,原文链接:http://blog.51cto.com/zhoufoxcn/167095,如需转载请自行联系原作者
相关文章
|
14天前
|
Java 数据安全/隐私保护
des加密+base64编码,base64解码+des解密
des加密+base64编码,base64解码+des解密
17 0
|
4月前
|
算法 搜索推荐 Java
DES - 对称加密算法简要介绍与JAVA实现
DES - 对称加密算法简要介绍与JAVA实现
52 2
|
5月前
|
开发框架 网络协议 前端开发
一个对C#程序混淆加密,小巧但够用的小工具
一个对C#程序混淆加密,小巧但够用的小工具
83 1
|
3月前
|
算法 安全 数据安全/隐私保护
C/C++学习 -- 分组加密算法(DES算法)
C/C++学习 -- 分组加密算法(DES算法)
31 0
|
3月前
|
JavaScript 前端开发 算法
JavaScript学习 -- 对称加密算法DES
JavaScript学习 -- 对称加密算法DES
14 0
|
4月前
|
算法 C# 数据安全/隐私保护
C# | 上位机开发新手指南(十)加密算法——ECC
本篇文章我们将继续探讨另一种非对称加密算法——ECC。 严格的说,其实ECC并不是一种非对称加密算法,它是一种基于椭圆曲线的加密算法,广泛用于数字签名和密钥协商。 与传统的非对称加密算法(例如RSA)不同,ECC算法使用椭圆曲线上的点乘法来生成密钥对和进行加密操作,而不是使用大数分解等数学算法。这使得ECC算法具有相同的安全性和强度,但使用更少的位数,因此在资源受限的环境中具有优势。 ECC算法虽然使用公钥和私钥进行加密和解密操作,但是这些操作是基于点乘法实现的,而不是基于大数分解等算法实现的。因此,ECC算法可以被视为一种非对称加密算法的变体,但是它与传统的非对称加密算法有所不同。
129 0
C# | 上位机开发新手指南(十)加密算法——ECC
|
4月前
|
XML 算法 安全
C# | 上位机开发新手指南(九)加密算法——RSA
RSA的特性 非对称性 RSA算法使用公钥和私钥两个不同的密钥,公钥用于加密数据,私钥用于解密数据。公钥可以公开,任何人都可以使用,而私钥只有密钥持有人可以访问。 安全性 RSA算法基于大数分解难题,即将一个大的合数分解成其质数因子的乘积。由于目前没有有效的算法可以在合理的时间内对大质数进行分解,因此RSA算法被认为是一种安全的加密算法。 可逆性 RSA算法既可以用于加密,也可以用于解密。加密和解密都是可逆的过程,只要使用正确的密钥,就可以还原原始数据。 签名 RSA算法可以用于数字签名,用于验证数据的完整性和真实性。签名过程是将数据使用私钥进行加密,验证过程是将签名使用公钥进行解密。
101 0
C# | 上位机开发新手指南(九)加密算法——RSA
|
4月前
|
算法 搜索推荐 安全
C# | 上位机开发新手指南(八)加密算法——AES
AES——这是在加密算法中相当重要的一种加密方式! 虽然这个世界上已经存在了非对称加密算法(比如RSA、ECC等),但是在对称加密算法中,AES的地位依然相当重要。与非对称加密算法不同,对称加密算法使用的是相同的密钥对数据进行加密和解密,因此其加密和解密速度更快,而且更加高效。而在对称加密算法中,AES是目前最安全、最可靠的加密算法之一,其加密强度和运行效率都非常高。因此,无论是在个人计算机、移动设备,还是在服务器和云计算等领域,AES都被广泛应用于数据的加密和解密过程中。
88 0
C# | 上位机开发新手指南(八)加密算法——AES
|
4月前
|
存储 算法 安全
C# | 上位机开发新手指南(七)加密算法
加密算法是信息安全领域中的重要技术之一,可以保护数据在传输、存储和处理过程中的安全性。 学习加密算法可以帮助我们更好地理解和应用其他相关技术。例如,数字证书、数字签名、安全协议等都与加密算法密切相关,掌握加密算法可以为我们理解和应用这些技术提供帮助。
54 0
C# | 上位机开发新手指南(七)加密算法
|
4月前
|
XML 存储 JSON
C# 对象存储 (轻松实现序列化 | Xml | Json | 加密 | 压缩 | 注册表 | Redis)
开发时经常会遇到需要保存配置的情况,最常见的实现方式是将对象序列化成Json,再写入文件并保存到本地磁盘。 本文将使用开源库**ApeFree.DataStore**来替换原有的对象存储过程,实现一个可以随意切换存储方式的对象存储方法。 ApeFree.DataStore是一款可配置的对象存储库,支持在不同平台/介质中对内存中的对象进行存储与还原(如本地存储、注册表存储)。支持配置序列化格式(如Json、Xml),支持配置压缩算法(如GZip、Defalte),支持配置加密算法(如AES、RSA)。
65 0
C# 对象存储 (轻松实现序列化 | Xml | Json | 加密 | 压缩 | 注册表 | Redis)