Esempio n. 1
0
        internal static byte[] AESKeyWrapDecrypt(byte[] rgbKey, byte[] rgbEncryptedWrappedKeyData)
        {
            int num = (rgbEncryptedWrappedKeyData.Length >> 3) - 1;

            if (((rgbEncryptedWrappedKeyData.Length % 8) != 0) || (num <= 0))
            {
                throw new CryptographicException(SecurityResources.GetResourceString("Cryptography_Xml_KW_BadKeySize"));
            }
            byte[]           dst = new byte[num << 3];
            ICryptoTransform transform = new RijndaelManaged {
                Key = rgbKey, Mode = CipherMode.ECB, Padding = PaddingMode.None
            }.CreateDecryptor();

            if (num == 1)
            {
                byte[] src = transform.TransformFinalBlock(rgbEncryptedWrappedKeyData, 0, rgbEncryptedWrappedKeyData.Length);
                for (int k = 0; k < 8; k++)
                {
                    if (src[k] != s_rgbAES_KW_IV[k])
                    {
                        throw new CryptographicException(SecurityResources.GetResourceString("Cryptography_Xml_BadWrappedKeySize"));
                    }
                }
                Buffer.BlockCopy(src, 8, dst, 0, 8);
                return(dst);
            }
            long num3 = 0L;

            Buffer.BlockCopy(rgbEncryptedWrappedKeyData, 8, dst, 0, dst.Length);
            byte[] buffer3 = new byte[8];
            byte[] buffer4 = new byte[0x10];
            Buffer.BlockCopy(rgbEncryptedWrappedKeyData, 0, buffer3, 0, 8);
            for (int i = 5; i >= 0; i--)
            {
                for (int m = num; m >= 1; m--)
                {
                    num3 = m + (i * num);
                    for (int n = 0; n < 8; n++)
                    {
                        byte num7 = (byte)((num3 >> (8 * (7 - n))) & 0xffL);
                        buffer3[n] = (byte)(buffer3[n] ^ num7);
                    }
                    Buffer.BlockCopy(buffer3, 0, buffer4, 0, 8);
                    Buffer.BlockCopy(dst, 8 * (m - 1), buffer4, 8, 8);
                    byte[] buffer5 = transform.TransformFinalBlock(buffer4, 0, 0x10);
                    Buffer.BlockCopy(buffer5, 8, dst, 8 * (m - 1), 8);
                    Buffer.BlockCopy(buffer5, 0, buffer3, 0, 8);
                }
            }
            for (int j = 0; j < 8; j++)
            {
                if (buffer3[j] != s_rgbAES_KW_IV[j])
                {
                    throw new CryptographicException(SecurityResources.GetResourceString("Cryptography_Xml_BadWrappedKeySize"));
                }
            }
            return(dst);
        }
Esempio n. 2
0
        /// <summary>
        /// AES解密算法
        /// </summary>
        /// <param name="sourceString">加密字符串</param>
        /// <param name="aesKey">AES密钥</param>
        /// <returns>解密后的字符串</returns>
        public static string DecryptToAES(string sourceString, string aesKey)
        {
            if (string.IsNullOrEmpty(aesKey))
            {
                throw new ArgumentNullException("请传入AES加(解)密密钥");
            }

            if (string.IsNullOrEmpty(IV))
            {
                throw new ArgumentException("AES加(解)密向量值未配置");
            }

            try
            {
                aesKey = aesKey.PadRight(32, ' ');
                ICryptoTransform transform = new RijndaelManaged
                {
                    Key = Encoding.UTF8.GetBytes(aesKey),
                    IV  = Encoding.Default.GetBytes(IV)
                }.CreateDecryptor();
                byte[] inputBuffer = Convert.FromBase64String(sourceString);
                byte[] bytes       = transform.TransformFinalBlock(inputBuffer, 0, inputBuffer.Length);
                return(Encoding.UTF8.GetString(bytes));
            }
            catch
            {
                return("");
            }
        }
Esempio n. 3
0
        internal static byte[] AESKeyWrapEncrypt(byte[] rgbKey, byte[] rgbWrappedKeyData)
        {
            int num = rgbWrappedKeyData.Length >> 3;

            if (((rgbWrappedKeyData.Length % 8) != 0) || (num <= 0))
            {
                throw new CryptographicException(SecurityResources.GetResourceString("Cryptography_Xml_KW_BadKeySize"));
            }
            ICryptoTransform transform = new RijndaelManaged {
                Key = rgbKey, Mode = CipherMode.ECB, Padding = PaddingMode.None
            }.CreateEncryptor();

            if (num == 1)
            {
                byte[] buffer = new byte[s_rgbAES_KW_IV.Length + rgbWrappedKeyData.Length];
                Buffer.BlockCopy(s_rgbAES_KW_IV, 0, buffer, 0, s_rgbAES_KW_IV.Length);
                Buffer.BlockCopy(rgbWrappedKeyData, 0, buffer, s_rgbAES_KW_IV.Length, rgbWrappedKeyData.Length);
                return(transform.TransformFinalBlock(buffer, 0, buffer.Length));
            }
            long num2 = 0L;

            byte[] dst = new byte[(num + 1) << 3];
            Buffer.BlockCopy(rgbWrappedKeyData, 0, dst, 8, rgbWrappedKeyData.Length);
            byte[] buffer3 = new byte[8];
            byte[] buffer4 = new byte[0x10];
            Buffer.BlockCopy(s_rgbAES_KW_IV, 0, buffer3, 0, 8);
            for (int i = 0; i <= 5; i++)
            {
                for (int j = 1; j <= num; j++)
                {
                    num2 = j + (i * num);
                    Buffer.BlockCopy(buffer3, 0, buffer4, 0, 8);
                    Buffer.BlockCopy(dst, 8 * j, buffer4, 8, 8);
                    byte[] src = transform.TransformFinalBlock(buffer4, 0, 0x10);
                    for (int k = 0; k < 8; k++)
                    {
                        byte num6 = (byte)((num2 >> (8 * (7 - k))) & 0xffL);
                        buffer3[k] = (byte)(num6 ^ src[k]);
                    }
                    Buffer.BlockCopy(src, 8, dst, 8 * j, 8);
                }
            }
            Buffer.BlockCopy(buffer3, 0, dst, 0, 8);
            return(dst);
        }
Esempio n. 4
0
        public static string AES_Encrypt(string encryptString, string encryptKey)
        {
            encryptKey = smethod_0(encryptKey, 0x20, "");
            encryptKey = encryptKey.PadRight(0x20, ' ');
            ICryptoTransform transform = new RijndaelManaged {
                Key = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 0x20)), IV = byte_0
            }.CreateEncryptor();

            byte[] bytes = Encoding.UTF8.GetBytes(encryptString);
            return(Convert.ToBase64String(transform.TransformFinalBlock(bytes, 0, bytes.Length)));
        }
Esempio n. 5
0
        /// <summary>
        /// 加密
        /// </summary>
        /// <param name="plainText">待加密的文本</param>
        /// <param name="cipherkey">密钥</param>
        /// <returns>返回与此实例等效的加密文本</returns>
        public static string Encrypt(string plainText, string cipherkey)
        {
            cipherkey = TextUtility.CutLeft(cipherkey, 32);
            cipherkey = cipherkey.PadRight(32, ' ');
            ICryptoTransform transform = new RijndaelManaged {
                Key = Encoding.UTF8.GetBytes(cipherkey.Substring(0, 32)), IV = Keys
            }.CreateEncryptor();

            byte[] bytes = Encoding.UTF8.GetBytes(plainText);
            return(Convert.ToBase64String(transform.TransformFinalBlock(bytes, 0, bytes.Length)));
        }
Esempio n. 6
0
        public string Encrypt(string encryptString, string encryptKey)
        {
            encryptKey = CommonHelper.EnsureMaximumLength(encryptKey, 0x20, string.Empty);
            encryptKey = encryptKey.PadRight(0x20, ' ');
            ICryptoTransform transform = new RijndaelManaged {
                Key = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 0x20)), IV = Keys
            }.CreateEncryptor();

            byte[] bytes = Encoding.UTF8.GetBytes(encryptString);
            return(Convert.ToBase64String(transform.TransformFinalBlock(bytes, 0, bytes.Length)));
        }
        public static string DecryptData(string toDecrypt)
        {
            byte[]           array           = Convert.FromBase64String(toDecrypt);
            ICryptoTransform cryptoTransform = new RijndaelManaged
            {
                Key     = keyArray,
                Mode    = CipherMode.ECB,
                Padding = PaddingMode.PKCS7
            }.CreateDecryptor();

            byte[] bytes = cryptoTransform.TransformFinalBlock(array, 0, array.Length);
            return(Encoding.UTF8.GetString(bytes));
        }
        public static string EncryptData(string toEncrypt)
        {
            byte[]           bytes           = Encoding.UTF8.GetBytes(toEncrypt);
            ICryptoTransform cryptoTransform = new RijndaelManaged
            {
                Key     = keyArray,
                Mode    = CipherMode.ECB,
                Padding = PaddingMode.PKCS7
            }.CreateEncryptor();

            byte[] array = cryptoTransform.TransformFinalBlock(bytes, 0, bytes.Length);
            return(Convert.ToBase64String(array, 0, array.Length));
        }
Esempio n. 9
0
        public static string AESEncrypt(string toEncrypt, byte[] keyArray, byte[] ivArray)
        {
            byte[]           bytes           = Encoding.UTF8.GetBytes(toEncrypt);
            ICryptoTransform cryptoTransform = new RijndaelManaged
            {
                Key     = keyArray,
                IV      = ivArray,
                Mode    = CipherMode.CBC,
                Padding = PaddingMode.Zeros
            }.CreateEncryptor();

            byte[] array = cryptoTransform.TransformFinalBlock(bytes, 0, bytes.Length);
            return(Convert.ToBase64String(array, 0, array.Length));
        }
Esempio n. 10
0
        public static string Encrypt(string encryptString)
        {
            if (string.IsNullOrEmpty(encryptString))
            {
                return(string.Empty);
            }
            ICryptoTransform cryptoTransform = new RijndaelManaged
            {
                Key = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 32)),
                IV  = Keys
            }.CreateEncryptor();

            byte[] bytes = Encoding.UTF8.GetBytes(encryptString);
            return(Convert.ToBase64String(cryptoTransform.TransformFinalBlock(bytes, 0, bytes.Length)));
        }
Esempio n. 11
0
        public static string AESDecrypt(string toDecrypt, byte[] keyArray, byte[] ivArray)
        {
            byte[]           array           = Convert.FromBase64String(toDecrypt);
            ICryptoTransform cryptoTransform = new RijndaelManaged
            {
                Key     = keyArray,
                IV      = ivArray,
                Mode    = CipherMode.CBC,
                Padding = PaddingMode.Zeros
            }.CreateDecryptor();

            byte[] bytes   = cryptoTransform.TransformFinalBlock(array, 0, array.Length);
            string @string = Encoding.UTF8.GetString(bytes);

            return(@string.Replace("\0", ""));
        }
Esempio n. 12
0
 public string Decrypt(string decryptString, string decryptKey)
 {
     try
     {
         decryptKey = CommonHelper.EnsureMaximumLength(decryptKey, 0x20, string.Empty);
         decryptKey = decryptKey.PadRight(0x20, ' ');
         ICryptoTransform transform = new RijndaelManaged {
             Key = Encoding.UTF8.GetBytes(decryptKey), IV = Keys
         }.CreateDecryptor();
         byte[] inputBuffer = Convert.FromBase64String(decryptString);
         byte[] bytes = transform.TransformFinalBlock(inputBuffer, 0, inputBuffer.Length);
         return(Encoding.UTF8.GetString(bytes));
     }
     catch
     {
         return(string.Empty);
     }
 }
Esempio n. 13
0
 public static string AES_Decrypt(string decryptString, string decryptKey)
 {
     try
     {
         decryptKey = smethod_0(decryptKey, 0x20, "");
         decryptKey = decryptKey.PadRight(0x20, ' ');
         ICryptoTransform transform = new RijndaelManaged {
             Key = Encoding.UTF8.GetBytes(decryptKey), IV = byte_0
         }.CreateDecryptor();
         byte[] inputBuffer = Convert.FromBase64String(decryptString);
         byte[] bytes = transform.TransformFinalBlock(inputBuffer, 0, inputBuffer.Length);
         return(Encoding.UTF8.GetString(bytes));
     }
     catch
     {
         return(string.Empty);
     }
 }
Esempio n. 14
0
 /// <summary>
 /// 解密
 /// </summary>
 /// <param name="cipherText">待解密的文本</param>
 /// <param name="cipherkey">密钥</param>
 /// <returns>返回与此实例等效的解密文本</returns>
 public static string Decrypt(string cipherText, string cipherkey)
 {
     try
     {
         cipherkey = TextUtility.CutLeft(cipherkey, 32);
         cipherkey = cipherkey.PadRight(32, ' ');
         ICryptoTransform transform = new RijndaelManaged {
             Key = Encoding.UTF8.GetBytes(cipherkey), IV = Keys
         }.CreateDecryptor();
         byte[] inputBuffer = Convert.FromBase64String(cipherText);
         byte[] bytes = transform.TransformFinalBlock(inputBuffer, 0, inputBuffer.Length);
         return(Encoding.UTF8.GetString(bytes));
     }
     catch
     {
         return("");
     }
 }
Esempio n. 15
0
 public static string Decrypt(string decryptString)
 {
     if (!string.IsNullOrEmpty(decryptString))
     {
         try
         {
             ICryptoTransform cryptoTransform = new RijndaelManaged
             {
                 Key = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 32)),
                 IV  = Keys
             }.CreateDecryptor();
             byte[] array = Convert.FromBase64String(decryptString);
             byte[] bytes = cryptoTransform.TransformFinalBlock(array, 0, array.Length);
             return(Encoding.UTF8.GetString(bytes));
         }
         catch
         {
             return("");
         }
     }
     return(string.Empty);
 }
Esempio n. 16
0
        /// <summary>
        /// AES加密算法
        /// </summary>
        /// <param name="sourceString">原始字符串</param>
        /// <param name="aesKey">AES密钥</param>
        /// <returns></returns>
        public static string EncryptToAES(string sourceString, string aesKey)
        {
            if (string.IsNullOrEmpty(aesKey))
            {
                throw new ArgumentNullException("请传入AES加(解)密密钥");
            }

            if (string.IsNullOrEmpty(IV))
            {
                throw new ArgumentException("AES加(解)密向量值未配置");
            }

            aesKey = aesKey.PadRight(32, ' ');
            ICryptoTransform transform = new RijndaelManaged
            {
                Key = Encoding.UTF8.GetBytes(aesKey.Substring(0, 32)),
                IV  = Encoding.Default.GetBytes(IV)
            }.CreateEncryptor();

            byte[] bytes = Encoding.UTF8.GetBytes(sourceString);
            return(Convert.ToBase64String(transform.TransformFinalBlock(bytes, 0, bytes.Length)));
        }
Esempio n. 17
0
        public static string Decrypt(string cipherText, string cipherkey)
        {
            string result;

            try
            {
                cipherkey = TextUtility.CutLeft(cipherkey, 32);
                cipherkey = cipherkey.PadRight(32, ' ');
                ICryptoTransform cryptoTransform = new RijndaelManaged
                {
                    Key = Encoding.UTF8.GetBytes(cipherkey),
                    IV  = AES.Keys
                }.CreateDecryptor();
                byte[] array = Convert.FromBase64String(cipherText);
                byte[] bytes = cryptoTransform.TransformFinalBlock(array, 0, array.Length);
                result = Encoding.UTF8.GetString(bytes);
            }
            catch
            {
                result = "";
            }
            return(result);
        }
Esempio n. 18
0
        public static string EncryptString(string rawData)
        {
            if (rawData == null)
            {
                return(null);
            }
            string result = string.Empty;

            byte[] bytes = Encoding.UTF8.GetBytes(rawData);
            int    num   = bytes.Length;

            if (num % 16 > 0)
            {
                num = (num + 16) / 16 * 16;
            }
            byte[] array = new byte[num];
            Array.Copy(bytes, array, bytes.Length);
            int num2 = 20;

            byte[] array2 = new byte[]
            {
                45,
                55,
                162,
                205,
                40,
                214,
                99,
                105,
                236,
                91,
                177,
                233,
                174,
                28,
                10,
                94,
                12,
                192,
                243,
                93
            };
            byte[] array3 = new byte[16];
            int    num3   = 0;

            for (int i = 0; i < num2; i++)
            {
                if (i != 1 && i != 4 && i != 11 && i != 19)
                {
                    array3[num3++] = array2[i];
                }
            }
            ICryptoTransform cryptoTransform = new RijndaelManaged
            {
                Mode    = CipherMode.ECB,
                Padding = PaddingMode.None,
                Key     = array3
            }.CreateEncryptor();

            byte[] array4 = cryptoTransform.TransformFinalBlock(array, 0, array.Length);
            if (array4 != null && array4.Length > 0)
            {
                StringBuilder stringBuilder = new StringBuilder();
                for (int j = 0; j < array4.Length; j++)
                {
                    stringBuilder.AppendFormat("{0:x2}", (int)(array4[j] & 255));
                }
                result = stringBuilder.ToString();
            }
            return(result);
        }