现在的位置: 首页 > 综合 > 正文

还有几个工具类

2012年09月02日 ⁄ 综合 ⁄ 共 7251字 ⁄ 字号 评论关闭
代码

 /// <summary>
    
/// 反射类
    
/// </summary>
    
/// <typeparam name="T"></typeparam>
    public sealed class Reflector<T> where T : class
    {
        
/// <summary>
        
/// 通过反射创建实体
        
/// </summary>
        
/// <param name="classFullName">类的全名</param>
        
/// <param name="dllName">dllName</param>
        
/// <returns></returns>
        public static T Create(string classFullName, string dllName)
        {
            
return Create(classFullName, dllName, true);
        }

        /// <summary>
        
/// 通过反射创建实体
        
/// </summary>
        
/// <param name="classFullName">类的全名</param>
        
/// <param name="dllName">dllName</param>
        
/// <param name="cacheFlag">是否从缓存中读取</param>
        
/// <returns></returns>
        public static T Create(string classFullName, string dllName, bool cacheFlag)
        {
            T objType 
= null;
            
if (cacheFlag)
            {
                objType 
= (T)CacheManage.GetFromCache(classFullName);
                
if (objType == null)
                {
                    objType 
= (T)Assembly.Load(dllName).CreateInstance(classFullName);//反射创建
                    CacheManage.SetCache(classFullName, objType);
                }
            }
            
else
            {
                objType 
= (T)CreateAssembly(dllName).CreateInstance(classFullName);//反射创建
            }
            
return objType;
        }

        /// <summary>
        
/// 创建Assembly
        
/// </summary>
        
/// <param name="dllName">dllName</param>
        
/// <returns></returns>
        public static Assembly CreateAssembly(string dllName)
        {
            Assembly obj 
= (Assembly)CacheManage.GetFromCache(dllName);
            
if (obj == null)
            {
                obj 
= Assembly.Load(dllName);
                CacheManage.SetCache(dllName, obj);
            }
            
return obj;
        }
    }
public class CacheManage
    {
        
/// <summary>
        
/// 从缓存获取
        
/// </summary>
        
/// <param name="objectkey"></param>
        
/// <returns></returns>
        public static object GetFromCache(string objectkey)
        {
            System.Web.Caching.Cache objCache 
= HttpRuntime.Cache;
            
return objCache[objectkey];
        }
        
/// <summary>
        
/// 添加到缓存
        
/// </summary>
        
/// <param name="objectkey"></param>
        
/// <param name="objObject"></param>
        public static void SetCache(string objectkey, object objObject)
        {
            System.Web.Caching.Cache objCache 
= HttpRuntime.Cache;
            objCache.Insert(objectkey, objObject);
        }
    }
 
/// <summary> 
    
/// 加密
    
/// </summary> 
    public class AES
    {
        
//默认密钥向量
        private static byte[] Keys = { 0x410x720x650x790x6F0x750x6D0x790x530x6E0x6F0x770x6D0x610x6E0x3F };

        public static string Encode(string encryptString, string encryptKey)
        {
            encryptKey 
= Utils.GetSubString(encryptKey, 32"");
            encryptKey 
= encryptKey.PadRight(32' ');

            RijndaelManaged rijndaelProvider = new RijndaelManaged();
            rijndaelProvider.Key 
= Encoding.UTF8.GetBytes(encryptKey.Substring(032));
            rijndaelProvider.IV 
= Keys;
            ICryptoTransform rijndaelEncrypt 
= rijndaelProvider.CreateEncryptor();

            byte[] inputData = Encoding.UTF8.GetBytes(encryptString);
            
byte[] encryptedData = rijndaelEncrypt.TransformFinalBlock(inputData, 0, inputData.Length);

            return Convert.ToBase64String(encryptedData);
        }

        public static string Decode(string decryptString, string decryptKey)
        {
            
try
            {
                decryptKey 
= Utils.GetSubString(decryptKey, 32"");
                decryptKey 
= decryptKey.PadRight(32' ');

                RijndaelManaged rijndaelProvider = new RijndaelManaged();
                rijndaelProvider.Key 
= Encoding.UTF8.GetBytes(decryptKey);
                rijndaelProvider.IV 
= Keys;
                ICryptoTransform rijndaelDecrypt 
= rijndaelProvider.CreateDecryptor();

                byte[] inputData = Convert.FromBase64String(decryptString);
                
byte[] decryptedData = rijndaelDecrypt.TransformFinalBlock(inputData, 0, inputData.Length);

                return Encoding.UTF8.GetString(decryptedData);
            }
            
catch
            {
                
return "";
            }

        }

        public static string Encode(string encryptString)
        {
            
return Encode(encryptString, "jidesoft");
        }

        public static string Decode(string encryptString)
        {
            
return Decode(encryptString, "jidesoft");
        }
    }

    /// <summary> 
    
/// 加密
    
/// </summary> 
    public class DES
    {
        
//默认密钥向量
        private static byte[] Keys = { 0x120x340x560x780x900xAB0xCD0xEF };

        /// <summary>
        
/// DES加密字符串
        
/// </summary>
        
/// <param name="encryptString">待加密的字符串</param>
        
/// <param name="encryptKey">加密密钥,要求为8位</param>
        
/// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
        public static string Encode(string encryptString, string encryptKey)
        {
            encryptKey 
= Utils.GetSubString(encryptKey, 8"");
            encryptKey 
= encryptKey.PadRight(8' ');
            
byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(08));
            
byte[] rgbIV = Keys;
            
byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
            DESCryptoServiceProvider dCSP 
= new DESCryptoServiceProvider();
            MemoryStream mStream 
= new MemoryStream();
            CryptoStream cStream 
= new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
            cStream.Write(inputByteArray, 
0, inputByteArray.Length);
            cStream.FlushFinalBlock();
            
return Convert.ToBase64String(mStream.ToArray());

        }

        /// <summary>
        
/// DES解密字符串
        
/// </summary>
        
/// <param name="decryptString">待解密的字符串</param>
        
/// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同</param>
        
/// <returns>解密成功返回解密后的字符串,失败返源串</returns>
        public static string Decode(string decryptString, string decryptKey)
        {
            
try
            {
                decryptKey 
= Utils.GetSubString(decryptKey, 8"");
                decryptKey 
= decryptKey.PadRight(8' ');
                
byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey);
                
byte[] rgbIV = Keys;
                
byte[] inputByteArray = Convert.FromBase64String(decryptString);
                DESCryptoServiceProvider DCSP 
= new DESCryptoServiceProvider();

                MemoryStream mStream = new MemoryStream();
                CryptoStream cStream 
= new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
                cStream.Write(inputByteArray, 
0, inputByteArray.Length);
                cStream.FlushFinalBlock();
                
return Encoding.UTF8.GetString(mStream.ToArray());
            }
            
catch
            {
                
return "";
            }
        }

        public static string Encode(string encryptString)
        {
            
return Encode(encryptString, "jidesoft");
        }

        public static string Decode(string encryptString)
        {
            
return Decode(encryptString, "jidesoft");
        }
    } 

 

抱歉!评论已关闭.