Привет, ребята, я сейчас делаю клиентское серверное приложение, используя обмен ключами DH в android. У меня возникли проблемы с преобразованием строки в длину на моей стороне клиента, странно, что преобразование работало для первых двух переменных pValue и gValue. Однако, когда я хотел преобразовать открытый ключ сервера, когда он отправлен с сервера. Я получаю исключение в формате числа: недопустимый. Я уверен, что число, посланное выше, является числовым числом, а не алфавитом, так как я напечатал их в строках. Сервер отправляет gValue: pValue: PK вместе, который разделяют:NumberFormatException: Invalid lng
Ниже приведен фрагмент кода для моей клиентской стороны.
try {
response = SimpleHttpClient.executeHttpGet("http://10.0.2.2:8000/MyServletProject/DHServlet");
String res = response.toString();
String [] ar = res.split(":");
String primeValue = ar[0];
String genValue = ar[1];
String pkSValue = ar[2];
System.out.println(pkSValue);
long convertPValue = Long.parseLong(primeValue);
long convertGValue = Long.parseLong(genValue);
long convertSValue = Long.parseLong(pkSValue);
//BigInteger biPK;
// biPK = new BigInteger(pkSValue);
//System.out.println(convertPKValue);
long skB=getDH.generateSKB();
BigInteger bi1,bi2,bi3,sKey,biSK;
bi1=BigInteger.valueOf(convertGValue);
bi2=BigInteger.valueOf(convertPValue);
bi3=getDH.generatePkB(bi1, bi2, skB);
biSK = BigInteger.valueOf(skB);
//biPK= new BigInteger(pkSValue);
String PKClient = bi3.toString();
System.out.println("The public key is "+PKClient);
System.out.println("The generator value is "+bi1);
System.out.println("The prime value is "+bi2);
LogCat
07-12 12:24:33.459: I/System.out(2387): 4126158
07-12 12:24:33.459: W/System.err(2387): java.lang.NumberFormatException: Invalid long: "4126158
07-12 12:24:33.479: W/System.err(2387): "
07-12 12:24:33.489: W/System.err(2387): at java.lang.Long.invalidLong(Long.java:125)
07-12 12:24:33.499: W/System.err(2387): at java.lang.Long.parse(Long.java:362)
07-12 12:24:33.499: W/System.err(2387): at java.lang.Long.parseLong(Long.java:353)
07-12 12:24:33.529: W/System.err(2387): at java.lang.Long.parseLong(Long.java:319)
07-12 12:24:33.529: W/System.err(2387): at com.example.firstapp.clientside.LoginLayout$1$1.run(LoginLayout.java:70)
07-12 12:24:33.549: W/System.err(2387): at java.lang.Thread.run(Thread.java:856)
07-12 12:25:55.460: W/IInputConnectionWrapper(2387): showStatusIcon on inactive InputConnection
07-12 12:28:54.453: I/System.out(2437): java.lang.NumberFormatException: Invalid long: "2810970
Я действительно тупик на это, надеюсь, что вы, ребята, можете помочь мне. Спасибо заранее!
Почему вы используете BigInteger? Разве это не так долго? –
Я использую большое целое число, так как мои открытые ключи будут подниматься до произвольной суммы. – Clearner88