Я пытаюсь использовать симметричное шифрование для передачи данных из actionscript 3 (клиент) на python (сервер).
Я использую библиотеки as3crypto и pycrypto, я не уверен, правильно ли я использую эти библиотеки.
Actionscript 3:
private function testOnInit():void {
var t_toEnc:String = 'testtest';
var t_byAry:ByteArray = Hex.toArray( Hex.fromString( t_toEnc ) );
var t_key:ByteArray = Hex.toArray( Hex.fromString( 'Thisisthekey' ) );
var t_cbc:CBCMode = new CBCMode( new BlowFishKey( t_key ), new NullPad );
var t_enc:String;
t_cbc.IV = Hex.toArray( '30313233' );
t_cbc.encrypt( t_byAry );
t_enc = Base64.encodeByteArray( t_byAry );
dbg( 'b64 encrypted string ' + t_enc ); //this is just a debugging function we use in our code.
}
Это кодированный в base64 выход функции выше.
xvVqLzV5TU4 =
Теперь, используя тот же ключ, вектор инициализации и алгоритм из библиотеки pycrypto, я получаю другой вывод.
Python:
from Crypto.Cipher import Blowfish
B = Blowfish.new( 'Thisisthekey', Blowfish.MODE_CBC, '30313233' )
S = 'testtest'
X = B.encrypt( S )
import base64
Y = base64.b64encode( X )
print Y
I82NQEkSHhE =
Я почти уверен, что что-то не так с процессом шифрования, потому что я могу base64 кодировать 'testtest' в обеих библиотеках и получать один и тот же вывод.
Actionscript 3:
var b:ByteArray = new ByteArray();
b.writeUTFBytes( 'testtest' );
dbg( Base64.encodeByteArray( b ) );
Урожайность ...
dGVzdHRlc3Q =
Python:
>>> T = 'testtest'
>>> print base64.b64encode( T )
Урожайность
dGVzdHRlc3Q =
Может кто-нибудь зашифровать и base64 закодировать ту же строку с тем же IV в Python или ActionScript, так что я знаю, какая библиотека на самом деле производит правильный вывод?