He visto algunas otras preguntas sobre esto, pero los errores se relacionaron con un 0 principal en la cadena. Desafortunadamente este no es mi caso.NumberFormatException en el número válido String
Estoy recibiendo datos encriptados de una fuente externa en formato base64, luego los decodifico (usando una biblioteca Base64 incluida porque la versión sdk de Android es 7), descifro el mensaje, y después de todo eso tengo una cadena simple en un formato numérico.
cuando trato de echarlo a Long
o Integer
consigo este error:
java.lang.NumberFormatException: Invalid long: "2551122"
at java.lang.Long.invalidLong(Long.java:125)
at java.lang.Long.parse(Long.java:362)
at java.lang.Long.parseLong(Long.java:353)
at java.lang.Long.parseLong(Long.java:319)
at com.nzn.lol.LoginActivity$LoginTask.doInBackground(LoginActivity.java:98)
at com.nzn.lol.LoginActivity$LoginTask.doInBackground(LoginActivity.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:264)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
Para comprobar la entrada Solía impresiones y lo que realmente es la cadena "2551122". Cuando intento para comprobar la igualdad, sino que también no es correcta
"2551122".equals(numberAsString) // Gives me false
pensé que era un problema de codificación y trató de tomar los bytes decodificados y la creación de cadenas en varias codificaciones, también trató de descifrar los bytes desde la base 64 cadena con estas mismas codificaciones varias y todavía no tienen idea de qué está causando este error.
Por favor, cualquier ayuda se agradece
ACTUALIZACIÓN
Este es el código para descifrar la cadena (clase cifrador):
private static byte[] decrypt(byte[] raw, byte[] encrypted) throws Exception {
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance(encryptionAlgorithim);
cipher.init(Cipher.DECRYPT_MODE, skeySpec, new IvParameterSpec(iVector));
byte[] decrypted = cipher.doFinal(encrypted);
return decrypted;
}
public String decrypt(String encryptedString, String key) {
byte[] keyBytes = key.getBytes();
byte[] decoded = Base64.decode(encryptedString); // Decodes the string from base64 to byte[]
byte[] result = decrypt(keyBytes, decoded);
return new String(result);
}
Es así como se eleva el error:
Encryptor encryptor = new Encryptor();
Long.parseLong(encryptor.decrypt(base64String, secretKey)) // Throws me the error
¿Puedes publicar el código donde lo lances? – javajavajava
pregunta interesante, por favor, publique el código también ... – AAnkit
¿Podría publicar su código? –