Encryption Base64编码输出不同于as3crypto和pycrypto加密库

Encryption Base64编码输出不同于as3crypto和pycrypto加密库,encryption,pycrypto,encryption-symmetric,blowfish,as3crypto,Encryption,Pycrypto,Encryption Symmetric,Blowfish,As3crypto,我尝试使用对称加密将数据从ActionScript3客户端传递到python服务器 我使用的库是as3crypto和pycrypto,我不确定我是否正确使用了这些库 行动脚本3: 私有函数testOnInit:void{ var t_toEnc:String='testtest'; 变量t_byAry:ByteArray=Hex.toArray Hex.fromString t_toEnc; 变量t_key:ByteArray=Hex.toArray Hex.fromString'Thisist

我尝试使用对称加密将数据从ActionScript3客户端传递到python服务器

我使用的库是as3crypto和pycrypto,我不确定我是否正确使用了这些库

行动脚本3:

私有函数testOnInit:void{ var t_toEnc:String='testtest'; 变量t_byAry:ByteArray=Hex.toArray Hex.fromString t_toEnc; 变量t_key:ByteArray=Hex.toArray Hex.fromString'Thisisthekey'; var t_cbc:CBCMode=new CBCMode new BlowFishKey t_key,new NullPad; 变量t_enc:字符串; t_cbc.IV=十六进制阵列'30313233'; t_cbc.encrypt t_byAry; t_enc=Base64.encodeByteArray t_byAry; dbg'b64 encrypted string'+t_enc;//这只是我们在代码中使用的一个调试函数。 } 这是上述函数的base64编码输出

xvVqLzV5TU4=

现在,使用pycrypto库中相同的密钥、初始化向量和算法可以得到不同的输出

Python:

来自Crypto.Cipher导入河豚 B=Blowfish.new'Thisisthekey',Blowfish.MODE_CBC',30313233' S='testtest' X=B.S 导入base64 Y=base64.B64编码X 打印Y I82NQEkSHhE=

我很确定我在加密过程中出错了,因为我可以在两个库上对“testtest”进行base64编码,并接收相同的输出

行动脚本3:

变量b:ByteArray=新ByteArray; b、 写入字节“testtest”; dbg Base64.encodeByteArray b; 产量

dGVzdHRlc3Q=

Python:

>>>T='testtest' >>>打印base64.b64编码T 屈服

dGVzdHRlc3Q=


有人能在python或actionscript中用相同的IV对相同的字符串进行加密和Base64编码,这样我就知道哪个库实际生成了正确的输出了吗?

问题可能在于填充。ActionScript不使用填充,但Py不显示它使用的填充。所以,这可能是原因。例如,使用actionscript尝试另一个填充PKCS5。

使用每个库解密每个加密值时会发生什么?Pycrypto邮件列表帮助我解决了这个问题。as3中的初始化向量的解析方式不同。