c# 加密 解密函数, 加密 解密 算法,自定义密钥
2017-03-15 08:33
666 查看
#region 字符串加密
/// <summary> /// 利用DES加密算法加密字符串(可解密) /// </summary> /// <param name="plaintext">被加密的字符串</param> /// <param name="key">密钥(只支持8个字节的密钥)</param> /// <returns>加密后的字符串</returns> private static string EncryptString(string plaintext, string key) { //访问数据加密标准(DES)算法的加密服务提供程序 (CSP) 版本的包装对象 DESCryptoServiceProvider des = new DESCryptoServiceProvider(); des.Key = ASCIIEncoding.ASCII.GetBytes(key); //建立加密对象的密钥和偏移量 des.IV = ASCIIEncoding.ASCII.GetBytes(key); //原文使用ASCIIEncoding.ASCII方法的GetBytes方法 byte[] inputByteArray = Encoding.Default.GetBytes(plaintext);//把字符串放到byte数组中 MemoryStream ms = new MemoryStream();//创建其支持存储区为内存的流 //定义将数据流链接到加密转换的流 CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); //上面已经完成了把加密后的结果放到内存中去 StringBuilder ret = new StringBuilder(); foreach (byte b in ms.ToArray()) { ret.AppendFormat("{0:X2}", b); } ret.ToString(); return ret.ToString(); } /// <summary> /// 利用DES解密算法解密密文(可解密) /// </summary> /// <param name="ciphertext">被解密的字符串</param> /// <param name="key">密钥(只支持8个字节的密钥,同前面的加密密钥相同)</param> /// <returns>返回被解密的字符串</returns> private static string DecryptString(string ciphertext, string key) { try { DESCryptoServiceProvider des = new DESCryptoServiceProvider(); byte[] inputByteArray = new byte[ciphertext.Length / 2]; for (int x = 0; x < ciphertext.Length / 2; x++) { int i = (Convert.ToInt32(ciphertext.Substring(x * 2, 2), 16)); inputByteArray[x] = (byte)i; } des.Key = ASCIIEncoding.ASCII.GetBytes(key); //建立加密对象的密钥和偏移量,此值重要,不能修改 des.IV = ASCIIEncoding.ASCII.GetBytes(key); MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); //建立StringBuild对象,createDecrypt使用的是流对象,必须把解密后的文本变成流对象 StringBuilder ret = new StringBuilder(); return System.Text.Encoding.Default.GetString(ms.ToArray()); } catch (Exception) { return "error"; } }
相关文章推荐
- C#实现AES加密和解密函数
- DES的两个简单的加密、解密函数(C#中使用)
- Java的密钥对,在C# 中使用加密解密
- 远程桌面,RDP文件密码加密、解密算法(C#)
- 自定义加密解密函数
- 在c#中加密数据和解密数据的函数
- AES加密、解密算法 C#版
- C# 算法加密解密
- C# 加密解密算法 .
- C#自定义RSA加密解密及RSA签名和验证类实例
- C#的加密解密算法,包括Silverlight的MD5算法
- C# 基于密钥的64位加密与解密方法(原创)
- C# 加密或解密算法 Cryptography CRC32 MD5 BASE64
- C# 加密、解密函数
- 一个简单的c#加密,签名,验签,解密算法.(2)
- (转)使用Vernam(维尔南/弗纳姆)算法实现文件加密解密[C#]
- PHP用私人密钥key对内容加解密算法,并且每次加密后的值不同
- [网络收集]C# 各种加密,解密算法【MD5,DES,线性,卷帘】
- OpenSSL EVP_des_ede3_cbc CBC方式的3个密钥的3DES算法 加密解密
- Mcrypt拓展的带密钥PHP加密和解密算法