yla traductores traducir traduccion tecnica reglas que para onu online introduccion ingles guia estilo español diccionarios ciencia castellano java encryption base64

java - traductores - nueva línea anexa en mi cadena cifrada



que es traducir (4)

Depende de la implementación de Base64.encodeBase64String() . ¿Cuál es ese método?

Si es de Apache commons, tenga en cuenta que hay algunas clases diferentes que manejan espacios en blanco de manera diferente.

Por ejemplo, org.apache.commons.net.util.Base64 fragmentos, y probablemente agrega una secuencia CR-LF al fragmento final.

La versión más común, org.apache.commons.codec.binary.Base64 , no agrega espacios en blanco.

En Main:

public static void main(String[] args) throws NoSuchAlgorithmException { System.out.println("encrypt:" + encryptPassword("superuser")+":" ); } public static String encryptPassword(final String password) throws NoSuchAlgorithmException { MessageDigest md = MessageDigest.getInstance("MD5"); byte[] hashPassword = md.digest(password.getBytes()); String encryPass = Base64.encodeBase64String(hashPassword); return encryPass; }

Estoy obteniendo esta salida:

encrypt:C66i8K4gFQ23j1jN2sRCqQ==:

Pero cuando implementé lo mismo en mi aplicación, obtengo el resultado a continuación:

encrypt:C66i8K4gFQ23j1jN2sRCqQ== :

Nota: nueva línea anexa en mi cadena cifrada.

código de aplicación:

public boolean authenticateUsernamePasswordInternal(UsernamePasswordCredentials credentials) { try { System.out.println("encrypt:" + getHash("superuser")+":" ); } catch (Exception e) { logger.error(e.getMessage(), e); throw new BadCredentialsAuthenticationException(ErrorConstants.CONNECTION_FAILED); } } private String getHash(String password) throws NoSuchAlgorithmException, UnsupportedEncodingException{ MessageDigest md = MessageDigest.getInstance("MD5"); byte[] hashPassword = md.digest(password.getBytes()); String encryPass = Base64.encodeBase64String(hashPassword); return encryPass; }

Cómo puedo eliminar esa línea nueva. ¿Por qué sucede esto? Por favor, ¿ cuál es el motivo?


Puede que llegue tarde a responder esto, pero me encontré con el mismo problema. En realidad, el problema radica aquí Base64.encodeBase64String(hashPassword)

Cambie esa línea para que parezca que debería funcionar: Base64.encodeBase64String(hashPassword,Base64.NO_WRAP)

Por defecto, la utilidad Android Base64 agrega un carácter de nueva línea al final de la cadena codificada. El indicador Base64.NO_WRAP le dice a la utilidad que cree la cadena codificada sin el carácter de nueva línea.

Verifique here


Una opción más limpia sin recorte:

String encryPass = BaseEncoding.base64().encode(hashPassword);


Utilizar:

String encryPass = Base64.encodeBase64String(hashPassword).trim();