Was mache ich falsch? Ich erwartete, dass das Java-Programm "privat" druckt. Mein Ziel ist es, die Methode MessageEncryptor.decrypt ruby in Java zu schreiben.
Ruby-Verschlüsselung (der meiste Code wurde von MessageEncryptor übernommen, aber nicht zu Marshal modifiziert), aber ich habe ihn extrahiert, damit man besser sehen kann, was vor sich geht:
%Vor%Was gedruckt:
tzFUIVllG2FcYD7xqGPmHQ == - UAPvdm3oN3Hog9ND9HrEA ==
Java-Code:
%Vor%Was gedruckt
Entschlüsselt: [B @ 432a0f6c
Das ist das Problem - oder zumindest ein Problem:
%Vor% Sie rufen toString()
in einem Byte-Array auf. Arrays überschreiben nicht toString()
. Das wird dir nicht geben, was du willst - wie du sehen kannst. Stattdessen müssen Sie etwas schreiben wie:
... aber Sie müssen wissen, welche Codierung verwendet wurde, um die ursprüngliche Zeichenfolge vor der Verschlüsselung in Bytes umzuwandeln. Es ist mir aus dem Ruby-Code nicht klar, welche Kodierung verwendet wird, aber wenn Sie explizit darüber sprechen können (idealerweise mit UTF-8), wird es Ihr Leben viel einfacher machen.
Kurz gesagt, ich verdächtige dieses Problem hat überhaupt nichts mit Verschlüsselung zu tun - es hat alles damit zu tun, in Ruby Text in Bytes zu konvertieren und dann dieselbe Bytefolge in eine Zeichenkette umzuwandeln in Java.
Natürlich kann die Verschlüsselung auch fehlschlagen , aber das ist eine andere Sache.
Tags und Links ruby java encryption