在 C# 中加密并在 Flex 中解密

2024-05-13

我需要解密 Flex 中的一些数据,这些数据是用 C# 加密并写入文件的。 为了简单起见,我选择使用 as3crypto As3 库和 Bruce Schneier C# 库。

AS3 as3加密链接 http://code.google.com/p/as3crypto/

Bruce Schneier C# 河豚链接 http://www.schneier.com/blowfish-download.html

我可以得到一个短字符串,在 C# 中加密并在 Flex 中解密 然而较长的字符串无法产生结果,我不知道我错过了什么?

C#:

string reportstring = "watson?";
BlowFish b = new BlowFish("04B915BA43FEB5B6");
string cipherText = b.Encrypt_ECB(reportstring);
String plainText = b.Decrypt_ECB(cipherText);

AS3:

var txt:String =  "watson?";
var key:ByteArray = Hex.toArray("04B915BA43FEB5B6");
var blowfish:BlowFishKey = new BlowFishKey(key);                
var dataBytes:ByteArray = new ByteArray();
dataBytes=Hex.toArray(Hex.fromString(txt));
blowfish.encrypt(dataBytes);
blowfish.decrypt(dataBytes);

更新,一些示例

working

加密字符串=“沃森?”

C#产生:1514ea36fecfd5f5

AS3产生:1514ea36fecfd5f5

不工作

加密字符串 =“沃森怎么了?”

C#产生:3ea9808a4b9f74aaa8e54fe682947673

AS3产生:3ea9808a4b9f74aa20776174736f6e3f

非常相似但不匹配

如果我用 C# 解密 AS3 密码,我会得到:

怎么了?`r???

如果我解密 AS3 中的 C# 密码,我会得到:

什么事?


AS3代码似乎不正确。工作示例代码:

import com.hurlant.util.Hex;
import com.hurlant.util.Base64;
import com.hurlant.crypto.Crypto;
import flash.utils.ByteArray;
import com.hurlant.crypto.symmetric.IPad;
import com.hurlant.crypto.symmetric.ICipher;
import com.hurlant.crypto.symmetric.NullPad;
import com.hurlant.crypto.symmetric.BlowFishKey;

function encrypt($text:String, $cryptKey:ByteArray):String
{
    var iPad:IPad = new NullPad();
    var crypt = Crypto.getCipher('blowfish-ecb',$cryptKey,iPad);
    var cryptText:ByteArray = new ByteArray();
    cryptText.writeUTFBytes( $text );
    crypt.encrypt( cryptText );
    trace( Hex.fromArray( cryptText ) );
    return null;
}   

var txt:String =  "whats up watson?";
var key:ByteArray = Hex.toArray("04B915BA43FEB5B6");

encrypt(txt, key);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C# 中加密并在 Flex 中解密 的相关文章

随机推荐