Encryt在.Net和解密AS3 [英] Encryt in .Net and decrypt in AS3
问题描述
我需要一些文件加密的ASP.net和解密他们建有动作脚本3 Flash应用程序
I need to encrypt some files in ASP.net and decrypt them in a flash application built with Action Script 3.
AS3开发者发现一个lib电话AS3crypto这似乎是一个很好的一个AS3。这个想法是加密和解密使用相同的密钥。对称加密?
AS3 developer found a lib call AS3crypto which seems like a good one for AS3. The idea is encrypt and decrypt using same key. Symmetrical Encryption?
但我在努力寻找净相当于将使用相同的算法进行加密。
But I am struggling to find .Net equivalent that would use same algorithm for encryption.
我试图从4guysfromrolla博客这对我的工作太慢RC4的例子。 我曾尝试AES在这个例子中(<一href="http://msdn.microsoft.com/en-us/library/system.security.cryptography.rijndaelmanaged(v=vs.100).aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/system.security.cryptography.rijndaelmanaged(v=vs.100).aspx)这.Net的伟大工程,但我似乎无法使用AS3crypto获得相同的文件重新进行解密。AS3crypto似乎不喜欢有四进行解密。我只能提供一个密钥。
I have tried RC4 example from 4guysfromrolla blog which works too slow for me. I have tried AES on this example (http://msdn.microsoft.com/en-us/library/system.security.cryptography.rijndaelmanaged(v=vs.100).aspx) which works great on .Net but I can't seem to decrypt using AS3crypto to get the same file back. AS3crypto doesn't seem to like to have IV for decryption. I can only supply one key.
到目前为止,我很失落。我如何可以加密在.net中的文件和解密回在AS3得到同样的文件回来?
So far I am lost. How can I encrypt a file in .Net and decrypt it back in AS3 to get the same file back?
推荐答案
请注意:使用16字符长度的密钥和IV,例如:关键:1234567890123456和IV:9876543210654321
Notice: use 16 char length for both Key and IV, ex: Key: 1234567890123456 and IV: 9876543210654321
下面是C#code
public byte[] Encrypt(byte[] someData, string KEY, string IV)
{
//preparing
byte[] keyBytes = Encoding.UTF8.GetBytes(KEY);
byte[] ivBytes = Encoding.UTF8.GetBytes(IV);
//here goes encryption
RijndaelManaged rijndaelManaged = new RijndaelManaged();
rijndaelManaged.Key = keyBytes;
rijndaelManaged.IV = ivBytes;
rijndaelManaged.BlockSize = 128;
rijndaelManaged.Mode = CipherMode.CBC;
ICryptoTransform encryptor = rijndaelManaged.CreateEncryptor(rijndaelManaged.Key, rijndaelManaged.IV);
byte[] result = null;
using (MemoryStream memoryStream = new MemoryStream())
{
using (CryptoStream cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write))
{
cryptoStream.Write(someData, 0, someData.Length);
cryptoStream.FlushFinalBlock();
result = memoryStream.ToArray();
}
}
return result;
}
下面是使用AS3Crypto库AS3 code
And here is AS3 code using AS3Crypto library
private function decrypt(input:ByteArray, decrKey:String, decrIV:String):ByteArray
{
var key:ByteArray = Hex.toArray(Hex.fromString(decrKey));
var pad:IPad = new NullPad();
var aes:ICipher = Crypto.getCipher("aes-cbc", key, pad);
var ivmode:IVMode = aes as IVMode;
ivmode.IV = Hex.toArray(Hex.fromString(decrIV));
aes.decrypt(input);
return input;
}
这篇关于Encryt在.Net和解密AS3的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!