Beispiel #1
0
        /// <summary>
        /// 加密
        /// </summary>
        byte[] Encrypt(Encrypt_Type EncryptType, string EncryptString, string Key = "", string IV = "")
        {
            try
            {
                SymmetricAlgorithm ect = null;
                switch (EncryptType)
                {
                case Encrypt_Type.DES_Base64:
                    ect = new DESCryptoServiceProvider();
                    if (string.IsNullOrEmpty(IV))
                    {
                        IV = Key.Substring(0, 8);
                    }
                    break;

                case Encrypt_Type.DES3:
                    ect = new TripleDESCryptoServiceProvider();
                    if (string.IsNullOrEmpty(IV))
                    {
                        IV = Key.Substring(0, 8);
                    }
                    ect.BlockSize = BlockSize;
                    break;

                case Encrypt_Type.AES:
                    ect = new AesCryptoServiceProvider();
                    if (string.IsNullOrEmpty(IV))
                    {
                        IV = Key.Substring(0, 16);
                    }
                    ect.BlockSize = BlockSize;
                    break;

                case Encrypt_Type.DES_MD5:
                    if (!string.IsNullOrEmpty(Key))
                    {
                        ect = new DESCryptoServiceProvider();
                        if (string.IsNullOrEmpty(IV))
                        {
                            IV = Key;
                        }
                        byte[] inputByteArray = Encode.GetBytes(EncryptString);
                        ect.Key     = Encode.GetBytes(Key);
                        ect.IV      = Encode.GetBytes(IV);
                        ect.Mode    = Mode;
                        ect.Padding = Padding;
                        MemoryStream ms = new MemoryStream();
                        CryptoStream cs = new CryptoStream(ms, ect.CreateEncryptor(), CryptoStreamMode.Write);
                        cs.Write(inputByteArray, 0, inputByteArray.Length);
                        cs.FlushFinalBlock();
                        return(ms.ToArray());
                    }
                    else
                    {
                        goto default;
                    }

                case Encrypt_Type.RC2:
                    ect = new RC2CryptoServiceProvider();
                    if (string.IsNullOrEmpty(IV))
                    {
                        IV = Key.Substring(0, 8);
                    }
                    ect.BlockSize = BlockSize;
                    break;

                case Encrypt_Type.RC4:
                    if (!string.IsNullOrEmpty(Key))
                    {
                        RC4CryptoServiceProvider rc4 = new RC4CryptoServiceProvider();
                        rc4.Encode = Encode;
                        return(rc4.Encrypt(EncryptString, Key));
                    }
                    else
                    {
                        goto default;
                    }

                case Encrypt_Type.RSA:
                    if (!string.IsNullOrEmpty(Key))
                    {
                        RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(dwKeySize);
                        RSA.FromXmlString(Key);
                        byte[] dataToEncrypt = Encode.GetBytes(EncryptString);
                        byte[] encryptedData = RSA.Encrypt(dataToEncrypt, false);
                        return(encryptedData);
                    }
                    else
                    {
                        goto default;
                    }

                case Encrypt_Type.MD5:
                    MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
                    return(Hash(md5Hasher, EncryptString));

                case Encrypt_Type.MD5_16:
                    md5Hasher = new MD5CryptoServiceProvider();
                    byte[] bs = new byte[8];
                    Array.Copy(Hash(md5Hasher, EncryptString), 4, bs, 0, 8);
                    return(bs);

                case Encrypt_Type.SHA1:
                    SHA1 sha1Hasher = new SHA1CryptoServiceProvider();
                    return(Hash(sha1Hasher, EncryptString));

                case Encrypt_Type.HMACSHA1:
                    if (!string.IsNullOrEmpty(Key))
                    {
                        HMACSHA1 hmacsha1 = new HMACSHA1(Encode.GetBytes(Key));
                        return(Hash(hmacsha1, EncryptString));
                    }
                    else
                    {
                        goto default;
                    }

                default:
                    return(null);
                }

                ect.Key     = Encode.GetBytes(Key);
                ect.IV      = Encode.GetBytes(IV);
                ect.Mode    = Mode;
                ect.Padding = Padding;
                ICryptoTransform Encrypt = ect.CreateEncryptor();
                byte[]           data    = Encode.GetBytes(EncryptString);
                return(Encrypt.TransformFinalBlock(data, 0, data.Length));
            }
            catch (Exception ex) { if (throwEx)
                                   {
                                       throw ex;
                                   }
            }
            return(null);
        }