Xamarin.ios IOS平台中RijndaelManaged的加密异常(使用Xamarin共享项目)
我正在使用下面的代码加密密钥,这在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=10049Xamarin.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
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)
{
}