T
tuxedo
Gast
Hi,
ich versuche gerade eine Rechnung von C# nach Java zu portieren und stehe vor einem Problem:
Ich hab ein byte[] welches einen unsigned-Wert darstellt. Damit wird auf C# Seite wie folgt gerechnet:
Ausschnitt C#-Code
Genau so kann ich das auch in Java hinschreiben. Aber laut Java-Doc wird beim erzeugen des BigInteger das byte[] in 2er-Komplement-Repräsentation gesehen, weshalb bigN in der Java-Version negativ wird. Ich krieg nämlich immer
um die Ohren geworfen...
Ich such jetzt also einen weg wie ich mein "N" in ein BigInteger bekomme, ohne dass das ganze als negative Zahl betrachtet wird.
Bei einfachen Bytes geht's ja mit "& 0xFF". Aber wie mach ich das hier mit BigInteger?
- Alex
P.S. Oder hab ich irgendwas verdreht oder übersehen?
ich versuche gerade eine Rechnung von C# nach Java zu portieren und stehe vor einem Problem:
Ich hab ein byte[] welches einen unsigned-Wert darstellt. Damit wird auf C# Seite wie folgt gerechnet:
Ausschnitt C#-Code
Code:
BigInteger bigX = new BigInteger( x );
BigInteger bigN = new BigInteger( N );
BigInteger bigG = new BigInteger( new byte[] { 7 } );
BigInteger bigV = g.modPow( bigX, bigN );
Genau so kann ich das auch in Java hinschreiben. Aber laut Java-Doc wird beim erzeugen des BigInteger das byte[] in 2er-Komplement-Repräsentation gesehen, weshalb bigN in der Java-Version negativ wird. Ich krieg nämlich immer
Exception in thread "main" java.lang.ArithmeticException: BigInteger: modulus not positive
um die Ohren geworfen...
Ich such jetzt also einen weg wie ich mein "N" in ein BigInteger bekomme, ohne dass das ganze als negative Zahl betrachtet wird.
Bei einfachen Bytes geht's ja mit "& 0xFF". Aber wie mach ich das hier mit BigInteger?
- Alex
P.S. Oder hab ich irgendwas verdreht oder übersehen?