• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

wayde


博客园    首页    新随笔    联系   管理    订阅  订阅
记录3
using System;
using System.Collections;
using System.Reflection;
using System.Text;
using System.IO;
using System.Security.Cryptography;

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

/// <summary>
/// 加密实用程序类。
/// </summary>
public class Secure
{
    
private Secure()
    {
    }

    
private static Guid DefaultKey = new Guid("{073C88DF-D368-42fc-B1DA-QUNFENGWANGWANG}");
    
private static Guid DefaultVector = new Guid("{99A8CBE2-1174-497d-87B9-QUNFENGWANGWANG}");

    
/// <summary>
    
/// 加密串。
    
/// </summary>
    
/// <param name="Source">源串。</param>
    
/// <param name="key">密钥。</param>
    
/// <returns>返回加密串。</returns>
    public static string EncryptString(string Source, string key)
    {
        
if (key != null)
        {
            
byte[] k = ASCIIEncoding.ASCII.GetBytes(key);
            
byte[] iv = DefaultVector.ToByteArray();
            
return EncryptString(Source, k, iv);
        }
        
return EncryptString(Source);
    }

    
/// <summary>
    
/// 加密串。
    
/// </summary>
    
/// <param name="Source">源串。</param>
    
/// <param name="key">密钥。</param>
    
/// <returns>返回加密串。</returns>
    public static string EncryptString(string Source, Guid key)
    {
        
byte[] k = key.ToByteArray();
        
byte[] iv = DefaultVector.ToByteArray();
        
return EncryptString(Source, k, iv);
    }

    
/// <summary>
    
/// 加密串。
    
/// </summary>
    
/// <param name="Source">源串。</param>
    
/// <returns>返回加密串。</returns>
    public static string EncryptString(string Source)
    {
        
byte[] k = DefaultKey.ToByteArray();
        
byte[] iv = DefaultVector.ToByteArray();
        
return EncryptString(Source, k, iv);
    }

    
/// <summary>
    
/// 加密串。
    
/// </summary>
    
/// <param name="Source">源串。</param>
    
/// <param name="key">密钥。</param>
    
/// <param name="iv">初始化向量。</param>
    
/// <returns>返回加密后的串。</returns>
    public static string EncryptString(string Source, byte[] key, byte[] iv)
    {
        ASCIIEncoding textConverter 
= new ASCIIEncoding();
        RC2CryptoServiceProvider rc2CSP 
= new RC2CryptoServiceProvider();
        
byte[] encrypted;
        
byte[] toEncrypt;
        rc2CSP.EffectiveKeySize 
= 128;
        
// 生成加密器.
        ICryptoTransform encryptor = rc2CSP.CreateEncryptor(key, iv);
        
        
// 加密数据
        MemoryStream msEncrypt = new MemoryStream();
        CryptoStream csEncrypt 
= new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write);

        
// 转换数据到字节表
        toEncrypt = textConverter.GetBytes(Source);

        
// 执行加密
        csEncrypt.Write(toEncrypt, 0, toEncrypt.Length);
        csEncrypt.FlushFinalBlock();

        
// 取加密过的字节流
        encrypted = msEncrypt.ToArray();

        
// 返回结果
        return Convert.ToBase64String(encrypted);
    }

    
/// <summary>
    
/// 解密串。
    
/// </summary>
    
/// <param name="Source">源加密串。</param>
    
/// <param name="key">密钥。</param>
    
/// <returns>返回解密串。</returns>
    public static string DecryptString(string Source, string key)
    {
        
if (key != null)
        {
            
byte[] k = ASCIIEncoding.ASCII.GetBytes(key);
            
byte[] iv = DefaultVector.ToByteArray();
            
return DecryptString(Source, k, iv);
        }
        
return DecryptString(Source);
    }

    
/// <summary>
    
/// 解密串。
    
/// </summary>
    
/// <param name="Source">源加密串。</param>
    
/// <param name="key">密钥。</param>
    
/// <returns>返回解密串。</returns>
    public static string DecryptString(string Source, Guid key)
    {
        
byte[] k = key.ToByteArray();
        
byte[] iv = DefaultVector.ToByteArray();
        
return DecryptString(Source, k, iv);
    }

    
/// <summary>
    
/// 解密串。
    
/// </summary>
    
/// <param name="Source">源加密串。</param>
    
/// <returns>返回解密串。</returns>
    public static string DecryptString(string Source)
    {
        
byte[] k = DefaultKey.ToByteArray();
        
byte[] iv = DefaultVector.ToByteArray();
        
return DecryptString(Source, k, iv);
    }

    
/// <summary>
    
/// 解密串。
    
/// </summary>
    
/// <param name="Source">源加密串。</param>
    
/// <param name="key">密钥。</param>
    
/// <param name="iv">初始化向量。</param>
    
/// <returns>返回解密串。</returns>
    public static string DecryptString(string Source, byte[] key, byte[] iv)
    {
        
byte[] fromEncrypt;
        
byte[] encrypted;

        ASCIIEncoding textConverter 
= new ASCIIEncoding();
        RC2CryptoServiceProvider rc2CSP 
= new RC2CryptoServiceProvider();
        rc2CSP.EffectiveKeySize 
= 128;

        
// 生成解密器
        ICryptoTransform decryptor = rc2CSP.CreateDecryptor(key, iv);

        
// 取得源加密字节流
        encrypted    = System.Convert.FromBase64String(Source);

        
// 解密字节流
        MemoryStream msDecrypt = new MemoryStream(encrypted);
        CryptoStream csDecrypt 
= new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read);

        fromEncrypt 
= new byte[encrypted.Length];
        csDecrypt.Read(fromEncrypt, 
0, fromEncrypt.Length);
        
int n = 0;
        
foreach (byte b in fromEncrypt)
        {
            
if (b != 0)
            {
                n
++;
            }
            
else
            {
                
break;
            }
        }
        
byte[] bs = new byte[n];
        
for (int i = 0; i < n; i++)
        {
            bs[i] 
= fromEncrypt[i];
        }
        
string s = textConverter.GetString(bs);

        
// 返回解密串
        return s;
    }
}
posted on 2007-09-17 18:03  wayde  阅读(256)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3