Fehler nach Passworteingabe

Ja, ist aber nahezu identisch zum geposteten Link von AndreasB (an einigen Stellen steht bei mir Unknown Source statt der entsprechenden Zeile):

Mon Oct 02 17:19:36 CEST 2017
javax.crypto.BadPaddingException: Given final block not properly padded
java.io.IOException: javax.crypto.BadPaddingException: Given final block not properly padded
at javax.crypto.CipherInputStream.close(CipherInputStream.java:321)
at java.io.PushbackInputStream.close(Unknown Source)
at java.util.zip.InflaterInputStream.close(Unknown Source)
at java.util.zip.ZipInputStream.close(Unknown Source)
at name.abuchen.portfolio.model.ClientFactory$Decryptor.load(ClientFactory.java:257)
at name.abuchen.portfolio.model.ClientFactory.load(ClientFactory.java:390)
at name.abuchen.portfolio.ui.LoadClientThread.run(LoadClientThread.java:42)

Caused by: javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:966)
at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:824)
at com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:436)
at javax.crypto.Cipher.doFinal(Cipher.java:2004)
at javax.crypto.CipherInputStream.close(CipherInputStream.java:314)

... 6 more

Ansonsten findet bei mir folgendes Verwendung:
Win 7 Pro SP1 64Bit
Java SE 1.8 (Version 8 Update 31 [Build 1.8.0_31-b13]) x86

Danke Ihr Zwei, ich schau es mir an.

@AndreasB: Das müsste hoffentlich passen:

Das passt. Ich kann den Fehler reproduzieren - und mit Deinem Patch tritt er nicht mehr auf. Ich baue gleich eine neue Version.

Perfekt, danke Dir!
Dummerweise hatte das try-with-resources dafür gesorgt, dass der Stream vor dem catch weiter unten geschlossen wurde.
Java ist bei den Streams teilweise auch arg inkonsistent. Manchmal muss man erzwingen, dass es nicht weiter liest und manchmal verschluckt es sich, wenn man das Lesen unterbricht… :roll_eyes:

So, Version 0.27.7 ist auf dem Update Server.

Nach dem Update auf 0.27.7 tritt der Fehler bei mir nun auch auf. Windows 10

Mon Oct 02 20:32:37 CEST 2017
javax.crypto.BadPaddingException: Given final block not properly padded

java.io.IOException: javax.crypto.BadPaddingException: Given final block not properly padded

at javax.crypto.CipherInputStream.getMoreData(CipherInputStream.java:121)

at javax.crypto.CipherInputStream.read(CipherInputStream.java:239)

at javax.crypto.CipherInputStream.read(CipherInputStream.java:215)

at name.abuchen.portfolio.model.ClientFactory$Decryptor.readStreamUntilEnd(ClientFactory.java:217)

at name.abuchen.portfolio.model.ClientFactory$Decryptor.load(ClientFactory.java:278)

at name.abuchen.portfolio.model.ClientFactory.load(ClientFactory.java:400)

at name.abuchen.portfolio.ui.LoadClientThread.run(LoadClientThread.java:42)

Caused by: javax.crypto.BadPaddingException: Given final block not properly padded

at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:989)

at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:845)

at com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:446)

at javax.crypto.Cipher.doFinal(Cipher.java:2048)

at javax.crypto.CipherInputStream.getMoreData(CipherInputStream.java:118)

... 6 more

:grimacing: :face_with_symbols_over_mouth:

Kannst Du mir mal sagen welche Java Version Du installiert hast?

@sebasbaumh Ich glaube ich reverte mal zu der ursprünglichen Version zurück und dann schauen wir offline woran das wohl liegen mag.

Version 8 Update 141

Ich habe gerade das Update auf 0.27.7 erhalten und bekomme jetzt diesen Fehler. Vorher nutzte ich die 0.27.5. Hier ist der Stacktrace:

Mon Oct 02 20:31:31 CEST 2017
javax.crypto.BadPaddingException: Given final block not properly padded

java.io.IOException: javax.crypto.BadPaddingException: Given final block not properly padded
at javax.crypto.CipherInputStream.getMoreData(CipherInputStream.java:121)
at javax.crypto.CipherInputStream.read(CipherInputStream.java:239)
at javax.crypto.CipherInputStream.read(CipherInputStream.java:215)
at name.abuchen.portfolio.model.ClientFactory$Decryptor.readStreamUntilEnd(ClientFactory.java:217)
at name.abuchen.portfolio.model.ClientFactory$Decryptor.load(ClientFactory.java:278)
at name.abuchen.portfolio.model.ClientFactory.load(ClientFactory.java:400)
at name.abuchen.portfolio.ui.LoadClientThread.run(LoadClientThread.java:42)

Caused by: javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:989)
at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:845)
at com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:446)
at javax.crypto.Cipher.doFinal(Cipher.java:2048)
at javax.crypto.CipherInputStream.getMoreData(CipherInputStream.java:118)
… 6 more

Windows 10, Java 1.8.0_145

@cs42 @Waldschrat Ich habe gerade Version 0.27.8 hochgeladen - könnt Ihr noch mal probieren?

Geht wieder. Merci…

:sweat:

Danke für die Rückmeldung. Ich lass es für heute sein… :smirk:

Danke @AndreasB. Ich schau mir das in Ruhe nochmal an.

Für mich sieht das sogar so aus, als ob er schon alles liest, aber dann irgendwann beim Schluss nur das Padding nicht passt.
Eventuell liegt es an verschiedenen Implementierungen in den JDKs oder vielleicht ist bei der Datei ein Unterschied zwischen der gespeicherten und der aktuellen Fassung. Mein Kurztest mit einer neu erzeugten Beispieldatei hatte das Problem nicht gezeigt, da passen die Implementierungen aber auch auf jeden Fall zusammen.
Am liebsten wäre es mir, wenn ich wirklich nur diese Exception abfange und nicht generell IOException - denn die könnte ja auch von anderen Fehlern stammen.

Dein rasanter Support ist einfach überragend! Habe den Fehler gerade auch bemerkt, aber mit der schnellen neuen Version 0.27.8 klappt der Aufruf der passwortgeschützten Datei ohne Probleme! Nochmals vielen Dank für das absolut tolle Programm! Habe es einem Profi (Vermögensverwalter) gezeigt und der war schlichtweg von den Socken von den vielen detaillierten Analysen!

1 Like

Es liegt auf jeden Fall an JDK Versionen. Ich konnte den ursprünglichen Fehler mit 1.8.25 (Oracle, 64bit, macOS) nachstellen, nicht aber mit 1.8.144 (was ich aktuell nutze). Und es muss auch was mit der Datei selbst zu tun haben - es tritt nicht bei allen verschlüsselten Dateien auf. Der Folgefehler ist bei mir nicht aufgetreten - ich habe es allerdings auch nicht mit verschiedenen JDKs ausprobiert.

Ich habe hier 1.8.141 auf Win7/64 und wollte schon nach Beispieldaten fragen.
Aber falls es an einer alten Version liegt, nützt das da auch nichts.

Ich würde gerne mal einen Branch mit einem entsprechenden Fix zusammenstellen.
Hast Du eine Idee, wie man da eine Testversion für ausgewählte User machen könnte?
Oder halt nur zum selber laden, erstmal ohne automatisches Update - damit es nicht bei allen brennt.

Wenn ich das richtig sehe, hat @Waldschrat genau die Version genutzt.

In den Einstellungen kann man beliebige URLs eintragen. Du könntest eine Update Site auch irgendwo anders hosten. Das Problem ist aber immer - das Update tut nur, wenn die Version hochgezählt wird. Man verbrennt dabei Versionen.

Ich würde einfach irgendwo eine Version zum Download anbieten.

Aber ehrlich gesagt: lohnt sich das? Das Compression Level können wir auch wieder ändern ohne die “try - catch” umzustellen.

0.27.8 funktioniert wieder. Vielen Dank für die schnelle Hilfe.