设为首页
给我留言
首页       关于蓬缘    克隆建站    模版建站    建站流程    建站疑虑    支付方式    网站推广    网站优化    建站学院    联系我们    
蓬缘网络技术工作室真心为您服务!霸州网站建设 + 霸州网页设计 + 霸州企业建站 + 霸州FLASH设计 + 霸州网站开发 + 平面设计,专业技术人员一对一服务让建站更加专业更加放心……二十四小时服务热线: 15932615201 13810319167。欢迎来电咨询……霸州网站建设工作室|霸州网站制作|霸州建站|霸州网站改版|霸州企业建站|霸州专业建站|蓬缘网络技术工作室 - 我要网站 - http://www.woyaowangzhan.com……霸州蓬缘网络技术工作室是专业的建站团队,提供专业的霸州建站服务:1、霸州专业网站建设(霸州网站设计)2、霸州网站推广(百度、Google、搜狐、阿里巴巴等)3、霸州网站优化(SEO、百度推广优化)4、霸州域名注册(.com/.cn/.net等)5、霸州虚拟主机(ASP、.net等)6、霸州政府建站7、霸州门户网站…… 现在时间是
建站学堂
 
使用DES加密解密代码,支持中文加解密
[ 2008-10-27 11:05:00 ] 作者: 来源:

  核心提示:...

C#
-----------------------------------------------
//名称空间
using System;
using System.Security.Cryptography;
using System.IO;
using System.Text;


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


           //建立加密对象的密钥和偏移量
           //原文使用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();
}


//解密方法
public    string 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;
           }


           //建立加密对象的密钥和偏移量,此值重要,不能修改
           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());
}
-------------------------------------------------------
vb.Net :
-------------------------------------------------------
Imports System.Web.Security
Imports System.Security
Imports System.Security.Cryptography
Imports System.Text


Public Shared Function Encrypt(ByVal pToEncrypt As String, ByVal sKey As String) As String
     Dim des As New DESCryptoServiceProvider()
     Dim inputByteArray() As Byte
     inputByteArray = Encoding.Default.GetBytes(pToEncrypt)
     ''建立加密对象的密钥和偏移量
     ''原文使用ASCIIEncoding.ASCII方法的GetBytes方法
     ''使得输入密码必须输入英文文本
     des.Key = ASCIIEncoding.ASCII.GetBytes(sKey)
     des.IV = ASCIIEncoding.ASCII.GetBytes(sKey)
     ''写二进制数组到加密流
     ''(把内存流中的内容全部写入)
     Dim ms As New System.IO.MemoryStream()
     Dim cs As New CryptoStream(ms, des.CreateEncryptor, CryptoStreamMode.Write)
     ''写二进制数组到加密流
     ''(把内存流中的内容全部写入)
     cs.Write(inputByteArray, 0, inputByteArray.Length)
     cs.FlushFinalBlock()


     ''建立输出字符串    
     Dim ret As New StringBuilder()
     Dim b As Byte
     For Each b In ms.ToArray()
         ret.AppendFormat("{0:X2}", b)
     Next


     Return ret.ToString()
End Function


        ''解密方法
Public Shared Function Decrypt(ByVal pToDecrypt As String, ByVal sKey As String) As String
     Dim des As New DESCryptoServiceProvider()
     ''把字符串放入byte数组
     Dim len As Integer
     len = pToDecrypt.Length / 2 - 1
     Dim inputByteArray(len) As Byte
     Dim x, i As Integer
     For x = 0 To len
         i = Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16)
         inputByteArray(x) = CType(i, Byte)
     Next
     ''建立加密对象的密钥和偏移量,此值重要,不能修改
     des.Key = ASCIIEncoding.ASCII.GetBytes(sKey)
     des.IV = ASCIIEncoding.ASCII.GetBytes(sKey)
     Dim ms As New System.IO.MemoryStream()
     Dim cs As New CryptoStream(ms, des.CreateDecryptor, CryptoStreamMode.Write)
     cs.Write(inputByteArray, 0, inputByteArray.Length)
     cs.FlushFinalBlock()
     Return Encoding.Default.GetString(ms.ToArray)


End Function
------------------------------------------------
备注:
1. sKey输入密码的时候,必须使用英文字符,区分大小写,且字符数量是8个,不能多也不能少,否则出错。
2. 本人asp.net1.1,vs.net2003,windows2003 server环境下C#和vb.net分别调试成功!



 
   建站学堂
  ●  ASP编程技术
  ●  PHP编程技术
  ●  JSP编辑技术
  ●  ASP.NET编程技术
  ●  JAVA软件开发
  ●  C#软件开发
  ●  VB.NET软件开发
   网站推广与营销
  ● 网站备案的9个细节问题
  ● 网上注册一个域名的意义
  ● 网站从建设到运营的5点注意
  ● 8种提高网站ALEXA排名的方法
  ● 搜索引擎之间的4个区别
  ● 网站优化基本搜索引擎优化篇
  ● 点评A8音乐商业模式
  ● 5种不可取的网站推广方法
  ● SNS将成四大门户竞争的关键筹码
  ● 企业整站优化的一些技巧
  ● 马化腾创业三问
  ● 站长们每天都要做的工作
   网站优化与排名
  ● 快速提升访问量的方法
  ● 网站优化关键词工具,优化软件,SEO优化工具,SEO优化软件
  ● 总结四点分享我建站失败的经历
  ● 从达人圈到开心人人首谈SNS域名的选择与定位
  ● 良好心态是站长们成功的关键
  ● 浅谈做冷门站的一些心得体会
  ● 小游戏网站经营最重要的是站在用户的角度创新
  ● 关于网站首页打开速度之我见
  ● 谈一次域名解析出错带来的惨痛代价
  ● 我的地方论坛的建站之路经验总结
  ● 千人站长讲座第46期空姐网军哥谈特色社区运营
  ● 浅谈QQ类网站之站长的出路