惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
阮一峰的网络日志
阮一峰的网络日志
大猫的无限游戏
大猫的无限游戏
T
Tailwind CSS Blog
S
SegmentFault 最新的问题
The Hacker News
The Hacker News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
小众软件
小众软件
Google DeepMind News
Google DeepMind News
腾讯CDC
博客园 - 司徒正美
Cisco Talos Blog
Cisco Talos Blog
Apple Machine Learning Research
Apple Machine Learning Research
The Cloudflare Blog
博客园 - 聂微东
博客园 - 【当耐特】
Project Zero
Project Zero
有赞技术团队
有赞技术团队
量子位
P
Privacy International News Feed
博客园_首页
酷 壳 – CoolShell
酷 壳 – CoolShell
J
Java Code Geeks
IT之家
IT之家
SecWiki News
SecWiki News
H
Hacker News: Front Page
PCI Perspectives
PCI Perspectives
L
Lohrmann on Cybersecurity
宝玉的分享
宝玉的分享
Cloudbric
Cloudbric
雷峰网
雷峰网
月光博客
月光博客
Cyberwarzone
Cyberwarzone
S
Securelist
Hugging Face - Blog
Hugging Face - Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
博客园 - Franky
T
Threat Research - Cisco Blogs
罗磊的独立博客
Forbes - Security
Forbes - Security
NISL@THU
NISL@THU
N
News and Events Feed by Topic
T
Troy Hunt's Blog
Jina AI
Jina AI
Hacker News - Newest:
Hacker News - Newest: "LLM"
C
Cyber Attacks, Cyber Crime and Cyber Security
The Last Watchdog
The Last Watchdog
V2EX - 技术
V2EX - 技术

博客园 - 无名

sql2005分页SQL 数据库设计原则 sql2005排名函数 如何提高数据库性能,减少数据库服务器压力瓶颈一两个小方法 sql Server 索引优化 Using DeepLoad In NetTiers 看nettiers整理出来的codesmith模板编写要点 - 无名 - 博客园 .Net WinForm学习笔记 在javascript中,怎样响应键盘事件(转 - 无名 - 博客园 各分数段人数统计 排名问题 DataGrid - 导出Excel文件 DataGrid导出excel和word的例子 DataGrid - 导出Excel文件 利用剪切板将DataSet的数据导出到Excel DataGrid相关知识总结(收集自各位老大处) dataGrid的手写样式 在DNN中获取所有模块信息 几个DNN里的技巧(转)(真的是好东东啊)
使用DES加密解密代码(C# & vb.Net),好东东,拷得,贴一下
无名 · 2006-05-26 · via 博客园 - 无名
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分别调试成功!