やりたいことは、

圧縮 → AES暗号 → 相手に渡す → AES復号 → 解凍

です。

下記のコードを実行すると最後の行で「incorrect header check」エラーが発生します。

zlib.deflateSyncの戻り値とzlib.inflateSync()に渡しているdecに既に相違があるので当然と言えば当然ですが、AES暗号化をからめるとどう記述して良いのかわかりません。
詳しい方がいましたらよろしくお願いします。

ちなみに、圧縮関係なく、AES暗号化復号化自体はロジックが正しいことは確認しています。その逆に暗号化関係なく、ただの圧縮解凍は正しく動くことを確認しています。二つを組み合わせるとフォーマット(型?)の関係でうまくいきません。

(typescriptなのでvarではなくletを使用しています)

let password = 'password';

let m = cryptor.createHash('sha256');
m.update(password);
let crypto_key_hash = m.digest('binary');

// ZLIB圧縮.
let data = 'this is request ticket.';
data = zlib.deflateSync(data);


// AES暗号化.
let cipher = cryptor.createCipheriv('aes-256-cbc', crypto_key_hash, "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f");
let encData = cipher.update(data, 'binary', 'base64');
encData += cipher.final('base64');

// HTTP通信で相手に渡す...

// AES復号化.
let decipher = cryptor.createDecipheriv('aes-256-cbc', crypto_key_hash, "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f");
let dec = decipher.update(encData, 'base64', 'binary');
dec += decipher.final('binary');

dec = new Buffer(dec);

// ZLIB解凍.
dec = zlib.inflateSync(dec);

追記:
deflateSyncの戻り値とbinaryというエンコーディングが合っていないのが問題だとは気づいています。
Bufferクラスを使って一度BASE64化して復号化時のアウトプットもBASE64にすると成功しました。

let password = 'password';

let m = cryptor.createHash('sha256');
m.update(password);
let crypto_key_hash = m.digest('binary');

// ZLIB圧縮.
let data = 'this is request ticket.';
data = zlib.deflateSync(data);

data = new Buffer(data).toString('base64');


// AES暗号化.
let cipher = cryptor.createCipheriv('aes-256-cbc', crypto_key_hash, "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f");
let encData = cipher.update(data, 'base64', 'base64');
encData += cipher.final('base64');

// HTTP通信で相手に渡す...

// AES復号化.
let decipher = cryptor.createDecipheriv('aes-256-cbc', crypto_key_hash, "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f");
let dec = decipher.update(encData, 'base64', 'base64');
dec += decipher.final('base64');

dec = new Buffer(dec, 'base64');

// ZLIB解凍.
dec = zlib.inflateSync(dec);

dec = new Buffer(dec).toString('utf8');

しかし、効率悪いことをやっているように思えます。
フォーマット関連で改善の方法はありますでしょうか?