Xamarin.ios IOS平台中RijndaelManaged的加密异常(使用Xamarin共享项目)

Xamarin.ios IOS平台中RijndaelManaged的加密异常(使用Xamarin共享项目),xamarin.ios,xamarin.forms,Xamarin.ios,Xamarin.forms,我正在使用下面的代码加密密钥,这在Xamarin.android平台上是可以接受的,但在Xamarin.IOS中面临加密问题 /*值正在传递给方法*/ 私有静态字符串EncryptionKey=“midev acu!!” 私有静态字节[]aesIV={251、188、78、246、76、129、238、77、198、74、208、88、97、151、36、107} StringtoEncrypt=10049 public static string AesEncrypt(string stri

我正在使用下面的代码加密密钥,这在Xamarin.android平台上是可以接受的,但在Xamarin.IOS中面临加密问题

/*值正在传递给方法*/

私有静态字符串EncryptionKey=“midev acu!!”

私有静态字节[]aesIV={251、188、78、246、76、129、238、77、198、74、208、88、97、151、36、107}

StringtoEncrypt=10049

 public static string AesEncrypt(string stringToEncrypt, string SEncryptionKey)

    {
        try
        {
            key = System.Text.Encoding.UTF8.GetBytes(SEncryptionKey.Substring(0, 8));
            RijndaelManaged aes = new RijndaelManaged();
            aes.BlockSize = 128;
            byte[] inputByteArray = Encoding.UTF8.GetBytes(stringToEncrypt);
            MemoryStream ms = new MemoryStream();
            CryptoStream cs = new CryptoStream(ms, aes.CreateEncryptor(key, IV), CryptoStreamMode.Write);
            cs.Write(inputByteArray, 0, inputByteArray.Length);
            cs.FlushFinalBlock();
            //cs.Close();// added 6/1/2015 NP
            string encryptedValue = Convert.ToBase64String(ms.ToArray());
            //ms.Close();// added 6/1/2015 NP
            return encryptedValue;
        }
        catch (Exception e)
        {
            return e.Message;
        }
    }
执行aes.CreateEncryptor(密钥,aesIV)方法期间引发异常

在Crimson.CommonCrypto.Cryptor.Create(Crimson.CommonCrypto.cOperation、Crimson.CommonCrypto.cAlgorithm、Crimson.CommonCrypto.cOptions选项、System.Byte[]密钥、System.Byte[]iv)[0x00057]in/Library/Frameworks/Xamarin.iOS.framework/Versions/10.10.0.36/src/mono/mcs/class/corlib/CommonCrypto/CommonCrypto.cs:98 位于/Library/Frameworks/Xamarin.iOS.framework/Versions/10.10.0.36/src/mono/mcs/class/corlib/CommonCrypto/RijndaelManaged.cs:67中的System.Security.Cryptography.RijndaelManaged.CreateEncryptor(System.Byte[]rgbKey,System.Byte[]rgbIV)[0x00024] 在E:\SVN\Acuative\FFA\FFA\Components\Encryption.cs:60中的FFA.Components.Encryption.AesEncrypt(System.String stringToEncrypt,System.String SEncryptionKey)[0x0003d]处

请提供更好的解决方案来解决此异常Xamarin.IOS平台,这非常有用


谢谢。

问题是你的钥匙。它必须至少为16个字节:


问题是你的钥匙。它必须至少为16个字节:


我认为您没有发布实际的异常消息。是的,即StackTrace,异常消息是“加密操作期间出错”。始终使用全长密钥。否则,您将得到一个错误,即一些未指定的填充,范围从0x00到提供的键后面的任何垃圾。Yuri有正确的答案,接受它。看起来这个用户从不接受答案。好的……不是这样,这对我真的很有帮助。我认为你没有发布实际的异常消息。是的,那就是StackTrace,异常消息是“加密操作期间出错”。始终使用全长密钥。否则,您将得到一个错误,即一些未指定的填充,范围从0x00到提供的键后面的任何垃圾。Yuri有正确的答案,接受它。看起来这个用户从不接受答案。好吧…不是那样的,这对我真的很有帮助。
        byte[] aesIV = { 251, 188, 78, 246, 76, 129, 238, 77, 198, 74, 208, 88, 97, 151, 36, 107 };
        string EncryptionKey = "midev-acu1214144234545235!!";
        try
        {
            var key = System.Text.Encoding.UTF8.GetBytes(EncryptionKey.Substring(0, 16));
            RijndaelManaged aes = new RijndaelManaged();
            aes.BlockSize = 128;
            byte[] inputByteArray = Encoding.UTF8.GetBytes("10049");
            MemoryStream ms = new MemoryStream();
            var encryptor = aes.CreateEncryptor(key, aesIV);
            CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write);
            cs.Write(inputByteArray, 0, inputByteArray.Length);
            cs.FlushFinalBlock();
            //cs.Close();// added 6/1/2015 NP
            string encryptedValue = Convert.ToBase64String(ms.ToArray());
            //ms.Close();// added 6/1/2015 NP
            //return encryptedValue;
        }
        catch (Exception e)
        {

        }