Ich habe den folgenden Code:RSA und BigInteger in Java
BigInteger d = new BigInteger(1,NFCUtil.hexStringToByteArray(IssPrivKey));
BigInteger n = new BigInteger(1,NFCUtil.hexStringToByteArray(IssPubKeyMod));
BigInteger X = new BigInteger(1,NFCUtil.hexStringToByteArray(unsignedPhoneCert));
BigInteger iccCertBI = X.modPow(d, n);
final String iccCert = iccCertBI.toString(16);
System.out.println("\nSigned Certificate: (int)" + iccCertBI +
"\nSigned Certificate (hex): "+iccCert +
"\nsigned Cert length: "+iccCert.length());
Was ich mache ein String ist die Unterzeichnung eines privaten Exponenten und den öffentlichen Modul verwendet wird. Alle Längen sind 288 Zeichen oder 144 Byte. Der Kicker ist, wenn ich es für die folgende Zeichenfolge verwenden:
//Length 144
final String unsignedTerCert="6A04846983677983FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF121" +
"3AFAFAF01018001BDB011D89730D7958DCAF0D34A4668A65073F2766BAC3C3E7D551211A" +
"1D7896085F1F4FDAA9A256579B0D4D6B1C7CF6C88D318886C55FB3CA91DB721376797058" +
"F482A51A363B92A89DA81BB6A7FFBB6F8C8E109E5909EFFFFFFFFFFFFFFFFFFFFFFFFFFF" +
"FFFFFFFFFFFFFBC";
Es gibt mir einen String mit einer Länge von 288 Zeichen oder 144 Bytes zurück, so wie ich erwarte.
Verwendung es jedoch mit:
//Length 144
final String unsignedPhoneCert="6A0400112233445566778899011401020301018001AE0A3CCBF6B1A997E4A4AEC7EDA6697F6B73C2EC18F8E3403F83237BD9863B4CD0BE0EBC2A8E3FB140251935F1D4EAEF2D7801FFC2CF36328E234676F96883BAB6547F82FE02455B59B6952231B130EE70980B74456168AD2A511A00448BFEA62593DCF9F3D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC";
mir Gibt einen String mit einer Länge von 287 Zeichen zurück.
Also meine Frage, gibt es etwas in der BigInteger toString (16) -Methode, die das verursacht?
NB. Ich kann immer noch beide gut von BigInteger mit dem öffentlichen Schlüssel expo entschlüsseln, so dass ich denke, dass es etwas mit der .toString() -Methode zu tun hat.
Jede Hilfe/Hinweise würden geschätzt werden, danke.
EDIT: Hier sind die Ausgänge ich von dem falschen machtlos:
Expo:36652731434641292350412815683229009979770975413220344544898857375896901092978000426765621805499026545042319009684553729382562239973283276192079521889464379604341193094271888918244826201023503324034315850394178807890994288745747556760470026279678747937975742329807945656583328292494373708777822442236249197245972251059241540578219194613740104635899
X:25332900759103924912689760614898214526937827890939506310067994686010108648336498000719255096072122266248508522922053911850606613923138698430079380374971383359222723175609119386369637533489684435824557964231714784677160255389973258884831385632708921103814163273457386881057406862373463121304854072959526597286211022281774584184894225094204257730492
X (hex):6a0400112233445566778899011401020301018001ae0a3ccbf6b1a997e4a4aec7eda6697f6b73c2ec18f8e3403f83237bd9863b4cd0be0ebc2a8e3fb140251935f1d4eaef2d7801ffc2cf36328e234676f96883bab6547f82fe02455b59b6952231b130ee70980b74456168ad2a511a00448bfea62593dcf9f3d9ffffffffffffffffffffffffffffffffffffffffbc
Phone Signed Certificate: (int)2621041784071301050954845366555843081386290833242762939438653553587304361236513516037765146640763105648748143029523335470875071401132351534501879861341081099809142476414060273707263492268408647346182500147665413648376803840594353667155297685676942776395991299461798048817170064783101287983256626056086159016336001344190438106860395808579588320414
Phone Signed Certificate (hex): af802ec9b412c2e223e28cd0e540255b18351d570e24690b1b441f6e084afb3a03a6a1a52ec4268d9dacf47385222011a977994c9dc521dc4ca82f20f4345ee8697a1cc269931211640efe7b6d29c728283aa823525887f09dbc6df37f3e1a6ec4718ccbb31778d813e4375d89631503dc785c9c9eb4770e918a3cc37c90b6d75135d8c32c299d8096d4bd88199ec9e
Phone signed Cert length: 287
Und von dem richtigen:
Expo:36652731434641292350412815683229009979770975413220344544898857375896901092978000426765621805499026545042319009684553729382562239973283276192079521889464379604341193094271888918244826201023503324034315850394178807890994288745747556760470026279678747937975742329807945656583328292494373708777822442236249197245972251059241540578219194613740104635899
X:25333383310317922886770001828148668452338535025796085964448660925847832365078972818630528414968514941209307982589233259227108935074767908506952878286644207041412726931112453402165128539381501316868062159358826581046954850027043009445846574678562969939333097216245548333577227051225788418683968135213089604118672442657593365304099582656739524214716
X (hex):6a04846983677983ffffffffffffffffffffffffffffffffffffff1213afafaf01018001bdb011d89730d7958dcaf0d34a4668a65073f2766bac3c3e7d551211a1d7896085f1f4fdaa9a256579b0d4d6b1c7cf6c88d318886c55fb3ca91db721376797058f482a51a363b92a89da81bb6a7ffbb6f8c8e109e5909effffffffffffffffffffffffffffffffffffffffbc
Phone Signed Certificate: (int)21432015836175396598983285831512248305709761145636099501338782160749145447638782142594889169355603470185237110648036474961995187557563452989823081731645192439732733979910407327875747461117018365485531108584396064685039171356192052384601156809092826847482291755881176360680132279291900385137689881779233791387498805975645418591098518000313085841654
Phone Signed Certificate (hex): 59b0d96873fa0895d52d3f63475dd224c0a73bc34439e369a7b5eea88fd65b52464317b88642016421e9054d7e19dfc9cac7ffda07faea496268ea133cd83dc45959de61b1aa4b26a46ab47c6b8f4f2c092e914f0d940e9082b800119eba061bf7a654c022bc9c601a2d02a9775fb2cd23e532146443d7236c2ab301478fc9c59bbd984792d95d1db1a8d2ce80add0f6
Phone signed Cert length: 288
Vielen Dank, ich dachte, es könnte so etwas sein, aber ich wusste nicht, wie ich das sicherstellen sollte. Nur ein Häkchen, um sicherzustellen, dass% 0288 eine Ausgabe der Länge 288 garantiert? – Peanut
@ Peanut garantiert es eine minimale Ausgabelänge von 288 - siehe Bearbeitungen. – Alex
Großartig, danke Alex. – Peanut