使用哪种C#AES加密选项可以在公共网站上解密?

我想使用类似于下面的代码加密字符串,并能够使用公共网站(例如其中一个)对其进行解密(但也可以在其他网站上开放):

http://aesencryption.net/

http://www.nakov.com/blog/2011/12/26/online-aes-encryptor-decryptor-javascript/

这是我目前正在玩这些网站并试用这些网站的代码,我无法找到使这项工作成功的选项。 有任何想法吗?

        公共类AES
         {
             private readonly int _saltSize = 32;

             public string Encrypt(string plainText,string key)
             {
                 if(string.IsNullOrEmpty(plainText))
                 {
                    抛出新的ArgumentNullException(“plainText”);
                 }

                 if(string.IsNullOrEmpty(key))
                 {
                    抛出新的ArgumentNullException(“key”);
                 }

                使用(var keyDerivationFunction = new Rfc2898DeriveBytes(key,_saltSize))
                 {
                     byte [] saltBytes = keyDerivationFunction.Salt;
                     byte [] keyBytes = keyDerivationFunction.GetBytes(32);
                     byte [] ivBytes = keyDerivationFunction.GetBytes(16);

                    使用(var aesManaged = new AesManaged())
                     {
                         aesManaged.KeySize = 256;

                        使用(var encryptor = aesManaged.CreateEncryptor(keyBytes,ivBytes))
                         {
                             MemoryStream memoryStream = null;
                             CryptoStream cryptoStream = null;

                            返回WriteMemoryStream(plainText,ref saltBytes,encryptor,ref memoryStream,ref cryptoStream);
                         }
                     }
                 }
             }

             public string Decrypt(string ciphertext,string key)
             {
                 if(string.IsNullOrEmpty(ciphertext))
                 {
                    抛出新的ArgumentNullException(“ciphertext”);
                 }

                 if(string.IsNullOrEmpty(key))
                 {
                    抛出新的ArgumentNullException(“key”);
                 }

                 var allTheBytes = Convert.FromBase64String(ciphertext);
                 var saltBytes = allTheBytes.Take(_saltSize)。ToArray();
                 var ciphertextBytes = allTheBytes.Skip(_saltSize).Take(allTheBytes.Length  -  _saltSize)。ToArray();

                使用(var keyDerivationFunction = new Rfc2898DeriveBytes(key,saltBytes))
                 {
                     var keyBytes = keyDerivationFunction.GetBytes(32);
                     var ivBytes = keyDerivationFunction.GetBytes(16);

                     return DecryptWithAES(ciphertextBytes,keyBytes,ivBytes);
                 }
             }

             private string WriteMemoryStream(string plainText,ref byte [] saltBytes,ICryptoTransform encryptor,ref MemoryStream memoryStream,ref CryptoStream cryptoStream)
             {
                尝试
                 {
                     memoryStream = new MemoryStream();

                    尝试
                     {
                         cryptoStream = new CryptoStream(memoryStream,encryptor,CryptoStreamMode.Write);

                        使用(var streamWriter = new StreamWriter(cryptoStream))
                         {
                             streamWriter.Write(明文);
                         }
                     }
                    最后
                     {
                         if(cryptoStream!= null)
                         {
                             cryptoStream.Dispose();
                         }
                     }

                     var cipherTextBytes = memoryStream.ToArray();
                     Array.Resize(ref saltBytes,saltBytes.Length + cipherTextBytes.Length);
                     Array.Copy(cipherTextBytes,0,saltBytes,_saltSize,cipherTextBytes.Length);

                     return Convert.ToBase64String(saltBytes);
                 }
                最后
                 {
                     if(memoryStream!= null)
                     {
                         memoryStream.Dispose();
                     }
                 }
             }

             private static string DecryptWithAES(byte [] ciphertextBytes,byte [] keyBytes,byte [] ivBytes)
             {
                使用(var aesManaged = new AesManaged())
                 {
                    使用(var decryptor = aesManaged.CreateDecryptor(keyBytes,ivBytes))
                     {
                         MemoryStream memoryStream = null;
                         CryptoStream cryptoStream = null;
                         StreamReader streamReader = null;

                        尝试
                         {
                             memoryStream = new MemoryStream(ciphertextBytes);
                             cryptoStream = new CryptoStream(memoryStream,decryptor,CryptoStreamMode.Read);
                             streamReader = new StreamReader(cryptoStream);

                             return streamReader.ReadToEnd();
                         }
                        最后
                         {
                             if(memoryStream!= null)
                             {
                                 memoryStream.Dispose();
                                 memoryStream = null;
                             }
                         }
                     }
                 }
             }
         }

下面的代码用于加密字符串“this is a test”,密钥为“abcdefghijklmnop”,然后在网站http://aesencryption.net/进行解密

static void test() { Console.WriteLine(Convert.ToBase64String(EncryptStringToBytes("this is a test", System.Text.Encoding.ASCII.GetBytes("abcdefghijklmnop")))); } static byte[] EncryptStringToBytes(string plainText, byte[] key) { if (plainText == null || plainText.Length <= 0) throw new ArgumentNullException("plainText"); if (key == null || key.Length <= 0) throw new ArgumentNullException("key"); byte[] encrypted; using (var rijAlg = new RijndaelManaged()) { rijAlg.BlockSize = 256; rijAlg.Key = key; rijAlg.Mode = CipherMode.ECB; rijAlg.Padding = PaddingMode.Zeros; rijAlg.IV = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; ICryptoTransform encryptor = rijAlg.CreateEncryptor(rijAlg.Key, rijAlg.IV); using (var msEncrypt = new MemoryStream()) using (var csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) { using (var swEncrypt = new StreamWriter(csEncrypt)) swEncrypt.Write(plainText); encrypted = msEncrypt.ToArray(); } } return encrypted; }