Zur IV-Problematik: Offensichtlich soll ein Feature verkauft werden: "Wir machen das automatisch für Sie, darum müssen Sie sich nicht kümmern". Problem ist nur das verschiedene Implementationen unterschiedliche Vorstellungen von Arbeitserleichterungen haben und sich nicht um Standards sorgen. Entweder es gelingt Dir den verwendenen IV zu ermittelt/setzen oder Du kannst den CBC-Modus für Deine Zwecken nicht verwenden. Punkt.
Zum Padding: Der reine CBC-Modus kann nur verwendet werden, wenn die Textlänge gleich der Blocklänge ist (für AES sind das 16 Bytes). Wenn nicht muß aufgefüllt werden (padding) oder eine andere Methode verwenden werden. Das
Ciphertext-Stealing (wird manchmal CBC-CTS genannt) geht aber nur wenn mindestest 2 volle Blöcke vorhanden sind . CFB-8 ist ein weiterer Modus (der auf Bytebasis arbeitet). Also werden insgesamt von LB drei Methoden verwendet und unter CBC subsummiert.
Am einfachsten scheint mir, wenn Du einen Text 'manuell' mit #0-Bytes füllst auf ein Vielfaches von 16 (und mindestens 32 Bytes), also Textlängen von 32, 48, 64, ... verwendest.