火星文 技术研习社

Noname Cat, Keep Thinking
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

.NET 与 Java 互通的 DES 加密方式

Posted on 2006-04-26 18:00  剑廿三  阅读(971)  评论(0编辑  收藏  举报
C#.NET 1.1 的默认 DES 算法与 Java 的 JCE 的 DES 加密算法不同,需要改为 ECB 模式。

代码如下:


Bruce Lee 
17:56:55
/// <summary>
        
/// DES + Base64 加密
        
/// </summary>
        
/// <param name="strText">密码明文字符串</param></param>
        
/// <param name="strKey">密钥明文字符串</param>
        
/// <returns>已加密字符串</returns>
        public static string DesBase64Encrypt(string strText, string strKey)
        {
            
byte[] byKey = new byte[8]{56,50,55,56,56,55,49,49}; 
            
byte[] byIV = new byte[8] {1,2,3,4,5,6,7,8};
 
            DESCryptoServiceProvider cryptoProvider 
= new DESCryptoServiceProvider(); 
            
int i = cryptoProvider.KeySize;
            cryptoProvider.Mode 
= System.Security.Cryptography.CipherMode.ECB;
            MemoryStream ms 
= new MemoryStream(); 
            CryptoStream cst 
= new CryptoStream(ms,cryptoProvider.CreateEncryptor(byKey,byIV),CryptoStreamMode.Write); 
    
            StreamWriter sw 
= new StreamWriter(cst); 
            sw.Write(strText);
            sw.Flush(); 
            cst.FlushFinalBlock(); 
            sw.Flush(); 
            
return Convert.ToBase64String(ms.GetBuffer(),0,(int)ms.Length);  

实践应用于某电信一个单点登录系统雏形。