国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

常用加密字符串的class,轉自OSLeague啊,作者:bigeagle

2024-07-21 02:24:31
字體:
來源:轉載
供稿:網友
using system;
using system.security ;
using system.security.cryptography ;
using system.diagnostics ;
using system.web ;
using system.text ;

namespace bigeagle.util
{
    /// <summary>
    /// 一個加密類
    /// <br>author:  [email protected]</br>
    /// <br>date:    2001/09/25</br>
    /// <br>history: 2001/10/25 finished</br>
    /// </summary>
    /// <remarks>
    /// 封裝常用的加密算法
    /// </remarks>
    public class cryptography
    {

        /// <summary>
        /// md5加密指定字符串
        /// </summary>
        /// <param name="a_strvalue">要加密的字符串</param>
        /// <returns>加密后的字符串</returns>
        public static string encryptmd5string(string a_strvalue)
        {
#if debug
            debug.assert(a_strvalue.trim() != "" , "空字符串" , "空字符串不需要加密") ;
#endif//debug

            //轉換成bytearray
            byte[] hba = ((hashalgorithm) cryptoconfig.createfromname("md5")).
                        computehash(stringtobytearray(a_strvalue));

            return bytearraytostring(hba) ;
        }

        /// <summary>
        /// 判斷兩個加密字符串是否相同
        /// </summary>
        /// <param name="a_str1"></param>
        /// <param name="a_str2"></param>
        /// <returns>如果相同返回真</returns>
        public static bool issame(string a_str1 , string a_str2)
        {
            byte[] b1 = stringtobytearray(a_str1) ;
            byte[] b2 = stringtobytearray(a_str2) ;
            if(b1.length != b2.length)
            {
                return false ;
            }

            for(int i = 0 ; i < b1.length ; i ++)
            {
                if(b1[i] != b2[i])
                {
                    return false ;
                }
            }

            return true ;
        }

        /// <summary>
        /// 轉換string到byte樹組
        /// </summary>
        /// <param name="s">要轉換的字符串</param>
        /// <returns>轉換的byte數組</returns>
        public static byte[] stringtobytearray(string s)
        {
            /*
            char[] ca = s.tochararray();
            byte[] ba = new byte[ca.length];
            for(int i=0; i<ba.length; i++) ba[i] = (byte)ca[i];
            return ba;*/

            return encoding.utf8.getbytes(s) ;
        }

        /// <summary>
        /// 轉換byte數組到字符串
        /// </summary>
        /// <param name="a_arrbyte">byte數組</param>
        /// <returns>字符串</returns>
        public static string bytearraytostring(byte[] a_arrbyte)
        {
            /*
            //char[] ca = new char[a_arrbyte.length] ;
            for(int i = 0 ; i < a_arrbyte.length ; i ++)
            {
                result += (char)a_arrbyte[i] ;
            }*/

            return encoding.utf8.getstring(a_arrbyte) ;
        }


        /// <summary>
        /// 3des加密字符串
        /// </summary>
        /// <param name="a_strstring">要加密的字符串</param>
        /// <param name="a_strkey">密鑰</param>
        /// <returns>加密后并經base64編碼的字符串</returns>
        /// <remarks>靜態方法,采用默認ascii編碼</remarks>
        public static string encrypt3des(string a_strstring, string a_strkey)
        {
            tripledescryptoserviceprovider des = new
                tripledescryptoserviceprovider();
            md5cryptoserviceprovider hashmd5 = new md5cryptoserviceprovider();

            des.key = hashmd5.computehash(asciiencoding.ascii.getbytes(a_strkey));
            des.mode = ciphermode.ecb;

            icryptotransform desencrypt = des.createencryptor();

            byte[] buffer = asciiencoding.ascii.getbytes(a_strstring);
            return convert.tobase64string(desencrypt.transformfinalblock
                (buffer, 0, buffer.length));
        }//end method

        /// <summary>
        /// 3des加密字符串
        /// </summary>
        /// <param name="a_strstring">要加密的字符串</param>
        /// <param name="a_strkey">密鑰</param>
        /// <param name="encoding">編碼方式</param>
        /// <returns>加密后并經base63編碼的字符串</returns>
        /// <remarks>重載,指定編碼方式</remarks>
        public static string encrypt3des(string a_strstring, string a_strkey , encoding encoding)
        {
            tripledescryptoserviceprovider des = new
                tripledescryptoserviceprovider();
            md5cryptoserviceprovider hashmd5 = new md5cryptoserviceprovider();

            des.key = hashmd5.computehash(encoding.getbytes(a_strkey));
            des.mode = ciphermode.ecb;

            icryptotransform desencrypt = des.createencryptor();

            byte[] buffer = encoding.getbytes(a_strstring);
            return convert.tobase64string(desencrypt.transformfinalblock
                (buffer, 0, buffer.length));
        }


        /// <summary>
        /// 3des解密字符串
        /// </summary>
        /// <param name="a_strstring">要解密的字符串</param>
        /// <param name="a_strkey">密鑰</param>
        /// <returns>解密后的字符串</returns>
        /// <exception cref="">密鑰錯誤</exception>
        /// <remarks>靜態方法,采用默認ascii編碼</remarks>
        public static string decrypt3des(string a_strstring, string a_strkey)
        {
            tripledescryptoserviceprovider des = new
                tripledescryptoserviceprovider();
            md5cryptoserviceprovider hashmd5 = new md5cryptoserviceprovider();

            des.key = hashmd5.computehash(asciiencoding.ascii.getbytes(a_strkey));
            des.mode = ciphermode.ecb;

            icryptotransform desdecrypt = des.createdecryptor();

            string result = "";
            try
            {
                byte[] buffer = convert.frombase64string(a_strstring);
                result = asciiencoding.ascii.getstring(desdecrypt.transformfinalblock
                    (buffer, 0, buffer.length));
            }
            catch(exception e)
            {
#if debug
                console.writeline("錯誤:{0}" , e) ;
#endif//debug
                throw(new exception("invalid key or input string is not a valid base64 string" , e)) ;
            }

            return result ;
        }//end method

        /// <summary>
        /// 3des解密字符串
        /// </summary>
        /// <param name="a_strstring">要解密的字符串</param>
        /// <param name="a_strkey">密鑰</param>
        /// <param name="encoding">編碼方式</param>
        /// <returns>解密后的字符串</returns>
        /// <exception cref="">密鑰錯誤</exception>
        /// <remarks>靜態方法,指定編碼方式</remarks>
        public static string decrypt3des(string a_strstring, string a_strkey , encoding encoding)
        {
            tripledescryptoserviceprovider des = new
                tripledescryptoserviceprovider();
            md5cryptoserviceprovider hashmd5 = new md5cryptoserviceprovider();

            des.key = hashmd5.computehash(encoding.getbytes(a_strkey));
            des.mode = ciphermode.ecb;

            icryptotransform desdecrypt = des.createdecryptor();

            string result = "";
            try
            {
                byte[] buffer = convert.frombase64string(a_strstring);
                result = encoding.getstring(desdecrypt.transformfinalblock
                    (buffer, 0, buffer.length));
            }
            catch(exception e)
            {
#if debug
                console.writeline("錯誤:{0}" , e) ;
#endif//debug
                throw(new exception("invalid key or input string is not a valid base64 string" , e)) ;
            }

            return result ;
        }//end method


    }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广安市| 冀州市| 大邑县| 阿拉善盟| 张家界市| 洞口县| 呼伦贝尔市| 称多县| 余江县| 宁陵县| 兴义市| 治多县| 三原县| 尼勒克县| 阜平县| 昌黎县| 临城县| 云南省| 竹溪县| 秦皇岛市| 平定县| 凤山县| 习水县| 堆龙德庆县| 东山县| 辽宁省| 桂平市| 庆阳市| 桐庐县| 会理县| 吴堡县| 苏州市| 沂水县| 益阳市| 永修县| 宜城市| 英吉沙县| 泰安市| 乐山市| 阜新| 徐汇区|