Es bleibt das alte Spiel: Warum versuchst Du nicht zu erst mit kompletten Byteblocks zu arbeiten? Wenn das lauft, hast Du wahrscheinlich noch genug andere Probleme, zB
- wie wird das Passwort in Schlüssel umgerechnet? (wenn es nicht direkt benutzt wird, was bei BF möglich ist. Dann aber ev. Unicode beachten). Werden irgendwelche Hashes/KDFs benutzt?
- welches Padding wird benutzt?
- welche Codierung des Cyphertextes wird benutzt? (bei Dir auf PHP-Seite offensichtlich Base64, Dein decodierter Text zNZqXeQEH4s+lXFX6F6buKINKKI= ergibt zB 20 Bytes Ausgabe.