千家信息网

如何理解C#DES加密解密的实现

发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,这篇文章将为大家详细讲解有关如何理解C#DES加密解密的实现,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C# DES加密解密的实现,DES算法为密码
千家信息网最后更新 2024年11月24日如何理解C#DES加密解密的实现

这篇文章将为大家详细讲解有关如何理解C#DES加密解密的实现,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

C# DES加密解密的实现,DES算法为密码体制中的对称密码体制,由IBM公司研制的对称密码体制加密算法。其核心为密钥长度为56位,明文按64位进行分组,将分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。

C# DES加密解密的实现实例:

C# DES加密解密之名称空间 :

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

C# DES加密解密之方法 :

//加密方法    publicstring  Encrypt(string  pToEncrypt,  string  sKey)    {     DESCryptoServiceProvider  des  =  new  DESCryptoServiceProvider();     //把字符串放到byte数组中      //原来使用的UTF8编码,我改成Unicode编码了,不行     byte[]  inputByteArray  =  Encoding.Default.GetBytes(pToEncrypt);     //byte[]  inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt);

C# DES加密解密之建立加密对象的密钥和偏移量

 //原文使用ASCIIEncoding.ASCII方法的GetBytes方法     //使得输入密码必须输入英文文本     des.Key  =  ASCIIEncoding.ASCII.GetBytes(sKey);     des.IV  =  ASCIIEncoding.ASCII.GetBytes(sKey);     MemoryStream  ms  =  new  MemoryStream();     CryptoStream  cs  =  new  CryptoStream(  ms,  des.CreateEncryptor(),CryptoStreamMode.Write);     //Write  the  byte  array  into  the  crypto  stream     //(It  will  end  up  in  the  memory  stream)     cs.Write(inputByteArray,  0,  inputByteArray.Length);     cs.FlushFinalBlock();     //Get  the  data  back  from  the  memory  stream,  and  into  a  string     StringBuilder  ret  =  new  StringBuilder();     foreach(byte  b  in  ms.ToArray())       {       //Format  as  hex       ret.AppendFormat("{0:X2}",  b);       }     ret.ToString();     return  ret.ToString();    }

C# DES加密解密之解密方法

publicstring  Decrypt(string  pToDecrypt,  string  sKey)    {     DESCryptoServiceProvider  des  =  new  DESCryptoServiceProvider();      //Put  the  input  string  into  the  byte  array     byte[]  inputByteArray  =  new  byte[pToDecrypt.Length  /  2];     for(int  x  =  0;  x  <  pToDecrypt.Length  /  2;  x++)     {     int  i  =  (Convert.ToInt32(pToDecrypt.Substring(x  *  2,  2),  16));    inputByteArray[x]  =  (byte)i;     }

C# DES加密解密之建立加密对象的密钥和偏移量,此值重要,不能修改

 des.Key  =  ASCIIEncoding.ASCII.GetBytes(sKey);     des.IV  =  ASCIIEncoding.ASCII.GetBytes(sKey);     MemoryStream  ms  =  new  MemoryStream();     CryptoStream  cs  =  new  CryptoStream(ms,    des.CreateDecryptor(),CryptoStreamMode.Write);     //Flush  the  data  through  the  crypto  stream  into  the  memory  stream     cs.Write(inputByteArray,  0,  inputByteArray.Length);     cs.FlushFinalBlock();      //Get  the  decrypted  data  back  from  the  memory  stream     //建立StringBuild对象,  //CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象     StringBuilder  ret  =  new  StringBuilder();          return  System.Text.Encoding.Default.GetString(ms.ToArray());    }

关于如何理解C#DES加密解密的实现就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

0