ITPub博客

首页 > Linux操作系统 > Linux操作系统 > jiami

jiami

原创 Linux操作系统 作者:badboy3966 时间:2010-03-29 18:00:33 0 删除 编辑

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

///


/// 對稱加密演算法類
///

public class SymmetricMethodHelper
{

    private SymmetricAlgorithm mobjCryptoService;
    private string Key;
    ///


    /// 對稱加密類的構造函數

    ///


    public SymmetricMethodHelper()
    {
        mobjCryptoService = new RijndaelManaged();
        Key = "Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7";
    }

    ///


    /// 對稱加密類的構造函數

    ///


    public SymmetricMethodHelper(string key)
    {
        mobjCryptoService = new RijndaelManaged();
        Key = key + "Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7";
    }

    ///


    /// 獲得密鑰
    ///

    /// 密鑰
    private byte[] GetLegalKey()
    {
        string sTemp = Key;
        mobjCryptoService.GenerateKey();
        byte[] bytTemp = mobjCryptoService.Key;
        int KeyLength = bytTemp.Length;
        if (sTemp.Length > KeyLength)
            sTemp = sTemp.Substring(0, KeyLength);
        else if (sTemp.Length < KeyLength)
            sTemp = sTemp.PadRight(KeyLength, ' ');
        return ASCIIEncoding.ASCII.GetBytes(sTemp);
    }
    ///
    /// 獲得初始向量IV
    ///

    /// 初試向量IV
    private byte[] GetLegalIV()
    {
        string sTemp = "E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk";
        mobjCryptoService.GenerateIV();
        byte[] bytTemp = mobjCryptoService.IV;
        int IVLength = bytTemp.Length;
        if (sTemp.Length > IVLength)
            sTemp = sTemp.Substring(0, IVLength);
        else if (sTemp.Length < IVLength)
            sTemp = sTemp.PadRight(IVLength, ' ');
        return ASCIIEncoding.ASCII.GetBytes(sTemp);
    }
    ///
    /// 加密方法
    ///

    /// 待加密的串
    /// 經過加密的串
    public string Encrypto(string Source)
    {
        byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source);
        MemoryStream ms = new MemoryStream();
        mobjCryptoService.Key = GetLegalKey();
        mobjCryptoService.IV = GetLegalIV();
        ICryptoTransform. encrypto = mobjCryptoService.CreateEncryptor();
        CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);
        cs.Write(bytIn, 0, bytIn.Length);
        cs.FlushFinalBlock();
        ms.Close();
        byte[] bytOut = ms.ToArray();
        return Convert.ToBase64String(bytOut);
    }
    ///
    /// 解密方法
    ///

    /// 待解密的串
    /// 經過解密的串
    public string Decrypto(string Source)
    {
        byte[] bytIn = Convert.FromBase64String(Source);
        MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);
        mobjCryptoService.Key = GetLegalKey();
        mobjCryptoService.IV = GetLegalIV();
        ICryptoTransform. encrypto = mobjCryptoService.CreateDecryptor();
        CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);
        StreamReader sr = new StreamReader(cs);
        return sr.ReadToEnd();
    }
}

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/16750040/viewspace-630699/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 叶子的离去
请登录后发表评论 登录
全部评论

注册时间:2009-03-23

  • 博文量
    11
  • 访问量
    4451