asp.net(C#)字符串加密

asp.net(C#)字符串加密
2010-03-12 09:59

using System;   
using System.Collections.Generic;   
using System.Text;   
using System.Security.Cryptography;//Cryptography密码术   
namespace DAL   
{   
    public class Encry   
    {   
        public Encry() { }  

        #region AES加密   
  
        public static string Encrypt(string toEncrypt)   
        {   
            byte[] keyArray = UTF8Encoding.UTF8.GetBytes("12345678901234567890123456789012");   
            byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);   
  
            RijndaelManaged rDel = new RijndaelManaged();//using System.Security.Cryptography;   
            rDel.Key = keyArray;   
            rDel.Mode = CipherMode.ECB;//using System.Security.Cryptography;   
            rDel.Padding = PaddingMode.PKCS7;//using System.Security.Cryptography;   
  
            ICryptoTransform cTransform = rDel.CreateEncryptor();//using System.Security.Cryptography;   
            byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);   
  
            return Convert.ToBase64String(resultArray, 0, resultArray.Length);   
        }  



        #endregion AES加密  


        #region AES解密   
  
        public static string Decrypt(string toDecrypt)   
        {   
            byte[] keyArray = UTF8Encoding.UTF8.GetBytes("12345678901234567890123456789012");   
            byte[] toEncryptArray = Convert.FromBase64String(toDecrypt);   
  
            RijndaelManaged rDel = new RijndaelManaged();   
            rDel.Key = keyArray;   
            rDel.Mode = CipherMode.ECB;   
            rDel.Padding = PaddingMode.PKCS7;   
  
            ICryptoTransform cTransform = rDel.CreateDecryptor();   
            byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);   
  
            return UTF8Encoding.UTF8.GetString(resultArray);   
        }  



        #endregion AES解密   
    }   
}  
另一种


using System;   
using System.Data;   
using System.Configuration;   
using System.Web;   
using System.Web.Security;   
using System.Web.UI;   
using System.Web.UI.WebControls;   
using System.Web.UI.WebControls.WebParts;   
using System.Web.UI.HtmlControls;   
using System.Security.Cryptography;   
using System.IO;   
  
/// <summary>   
/// 密码控制   
/// </summary>   
public class Class_Password   
{   
    const string KEY_64 = "VavicApp";//注意了,是8个字符,64位   
  
    const string IV_64 = "VavicApp";   
  
    public Class_Password()   
    {   
        //   
        // TODO: 在此处添加构造函数逻辑   
        //   
    }  

    #region EnCode 加密   
    /// <summary>   
    /// EnCode 加密   
    /// </summary>   
    /// <param name="str">要加密的字符串</param>   
    /// <returns></returns>   
       
    public string EnCode(string data)   
    {   
        byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);   
        byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);   
  
        DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();   
        int i = cryptoProvider.KeySize;   
        MemoryStream ms = new MemoryStream();   
        CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey,   
  
byIV), CryptoStreamMode.Write);   
  
        StreamWriter sw = new StreamWriter(cst);   
        sw.Write(data);   
        sw.Flush();   
        cst.FlushFinalBlock();   
        sw.Flush();   
        return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);   
    }  
    #endregion  

    #region DeCode 解密   
    /// <summary>   
    /// DeCode 解密   
    /// </summary>   
    /// <param name="str">要解密的字符串</param>   
    /// <returns></returns>   
    public string DeCode(string data)   
    {   
        byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);   
        byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);   
  
        byte[] byEnc;   
        try  
        {   
            byEnc = Convert.FromBase64String(data);   
        }   
        catch  
        {   
            return null;   
        }   
  
        DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();   
        MemoryStream ms = new MemoryStream(byEnc);   
        CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey,   
  
byIV), CryptoStreamMode.Read);   
        StreamReader sr = new StreamReader(cst);   
        return sr.ReadToEnd();   
    }  
    #endregion   
  
}

 

using System;
using System.Collections.Generic;
using System.Text;

namespace EnCode
{
    /// <summary>
    /// 字符串加密类
    /// </summary>
    public static class Encrypt
    {
        private const string mstr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";

        /// <summary>
        /// 字符串加密
        /// </summary>
        /// <param name="str">待加密的字符串</param>
        /// <returns>加密后的字符串</returns>
        public static string EnCode(string str)
        {
            if (string.IsNullOrEmpty(str))
            {
                return "";
            }

            byte[] buff = Encoding.Default.GetBytes(str);
            int j, k, m;
            int len=mstr.Length;
            StringBuilder sb = new StringBuilder();
            Random r = new Random();

            for (int i = 0; i < buff.Length; i++)
            {               
                j = (byte)r.Next(6);
                buff[i] = (byte)((int)buff[i] ^ j);
                k = (int)buff[i] % len;
                m = (int)buff[i] / len;
                m = m * 8 + j;
                sb.Append(mstr.Substring(k, 1) + mstr.Substring(m, 1));
            }

            return sb.ToString();
        }

        /// <summary>
        /// 字符串解密
        /// </summary>
        /// <param name="str">待解密的字符串</param>
        /// <returns>解密后的字符串</returns>
        public static string DeCode(string str)
        {
            if (string.IsNullOrEmpty(str))
            {
                return "";
            }

            try
            {
                int j, k, m, n = 0;
                int len = mstr.Length;
                byte[] buff = new byte[str.Length / 2];

                for (int i = 0; i < str.Length; i += 2)
                {
                    k = mstr.IndexOf(str[i]);
                    m = mstr.IndexOf(str[i + 1]);
                    j = m / 8;
                    m = m - j * 8;
                    buff[n] = (byte)(j * len + k);
                    buff[n] = (byte)((int)buff[n] ^ m);
                    n++;
                }
                return Encoding.Default.GetString(buff);
            }
            catch
            {
                return "";
            }
        }

    }
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值