AES 加密代码 这是从动网项目中挖出来的AES加密代码

 

 AES
{
    class AES
    {

        
//默认密钥向量
        
//private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
        private static byte[] Keys = { 0x410x720x650x790x6F0x750x6D0x790x530x6E0x6F0x770x6D0x610x6E0x3F };

        
/// <summary>
        
/// AES加密
        
/// </summary>
        
/// <param name="encryptString">要加密的字符</param>
        
/// <param name="encryptKey">对应的密钥(不可为中文)</param>
        
/// <returns></returns>
        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);
        }

        
/// <summary>
        
/// AES解密
        
/// </summary>
        
/// <param name="decryptString">要解密的字符(该字符必须是已经加密过的字符)</param>
        
/// <param name="decryptKey">解密的密钥,该密钥要和加密的密钥一致</param>
        
/// <returns></returns>
        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 "";
            }

        }
    }
}

 

这是个工具类

 

 AES
{
   public class Utils
    {
        
/// <summary>
        
/// 字符串如果操过指定长度则将超出的部分用指定字符串代替
        
/// </summary>
        
/// <param name="p_SrcString">要检查的字符串</param>
        
/// <param name="p_Length">指定长度</param>
        
/// <param name="p_TailString">用于替换的字符串</param>
        
/// <returns>截取后的字符串</returns>
        public static string GetSubString(string p_SrcString, int p_Length, string p_TailString)
        {
            
return GetSubString(p_SrcString, 0, p_Length, p_TailString);
        }


        
/// <summary>
        
/// 取指定长度的字符串
        
/// </summary>
        
/// <param name="p_SrcString">要检查的字符串</param>
        
/// <param name="p_StartIndex">起始位置</param>
        
/// <param name="p_Length">指定长度</param>
        
/// <param name="p_TailString">用于替换的字符串</param>
        
/// <returns>截取后的字符串</returns>
        public static string GetSubString(string p_SrcString, int p_StartIndex, int p_Length, string p_TailString)
        {


            
string myResult = p_SrcString;

            
//当是日文或韩文时(注:中文的范围:\u4e00 - \u9fa5, 日文在\u0800 - \u4e00, 韩文为\xAC00-\xD7A3)
            if (System.Text.RegularExpressions.Regex.IsMatch(p_SrcString, "[\u0800-\u4e00]+"||
                System.Text.RegularExpressions.Regex.IsMatch(p_SrcString, 
"[\xAC00-\xD7A3]+"))
            {
                
//当截取的起始位置超出字段串长度时
                if (p_StartIndex >= p_SrcString.Length)
                {
                    
return "";
                }
                
else
                {
                    
return p_SrcString.Substring(p_StartIndex,
                                                   ((p_Length 
+ p_StartIndex) > p_SrcString.Length) ? (p_SrcString.Length - p_StartIndex) : p_Length);
                }
            }


            
if (p_Length >= 0)
            {
                
byte[] bsSrcString = Encoding.Default.GetBytes(p_SrcString);

                
//当字符串长度大于起始位置
                if (bsSrcString.Length > p_StartIndex)
                {
                    
int p_EndIndex = bsSrcString.Length;

                    
//当要截取的长度在字符串的有效长度范围内
                    if (bsSrcString.Length > (p_StartIndex + p_Length))
                    {
                        p_EndIndex 
= p_Length + p_StartIndex;
                    }
                    
else
                    {   
//当不在有效范围内时,只取到字符串的结尾

                        p_Length 
= bsSrcString.Length - p_StartIndex;
                        p_TailString 
= "";
                    }



                    
int nRealLength = p_Length;
                    
int[] anResultFlag = new int[p_Length];
                    
byte[] bsResult = null;

                    
int nFlag = 0;
                    
for (int i = p_StartIndex; i < p_EndIndex; i++)
                    {

                        
if (bsSrcString[i] > 127)
                        {
                            nFlag
++;
                            
if (nFlag == 3)
                            {
                                nFlag 
= 1;
                            }
                        }
                        
else
                        {
                            nFlag 
= 0;
                        }

                        anResultFlag[i] 
= nFlag;
                    }

                    
if ((bsSrcString[p_EndIndex - 1> 127&& (anResultFlag[p_Length - 1== 1))
                    {
                        nRealLength 
= p_Length + 1;
                    }

                    bsResult 
= new byte[nRealLength];

                    Array.Copy(bsSrcString, p_StartIndex, bsResult, 
0, nRealLength);

                    myResult 
= Encoding.Default.GetString(bsResult);

                    myResult 
= myResult + p_TailString;
                }
            }

            
return myResult;
        }
    }
}

 

 

相关文章: