Java y PHP (laravel) de cifrado compatibles Bcrypt

Dirección reimpresión: http://blog.dreamlikes.cn/archives/880

 

[Derechos de autor]  El contenido de este sitio  Creative Commons Reconocimiento - No comercial - Compartir igual 3.0 China continental (CC BY-NC-SA 3.0 CN) de la misma manera  para la licencia.
Parte del contenido y de los recursos de la red, el estudio y la investigación pura. Si la violación de sus derechos, por favor, póngase en contacto conmigo , lo haré tan pronto como sea posible.
Como Reproducido por favor especificar a partir de:  el blog de Broly , el artículo enlace:  encriptación compatible Java y PHP (laravel) de Bcrypt

extremo posterior Early laravel se construye utilizando, el sistema de cifrado de la contraseña de usuario utilizando una sintaxis nativa: password_hash

// $hash = password_hash('broly', PASSWORD_DEFAULT);
$hash = '$2y$10$wO./FnpCf8NkqjXbgV5ZT.juYia/Ts4Fz6ZBZgfWObmOjlAQwKtfO';
 
if (password_verify('broly', $hash)) {
    echo 'Password is valid!';
} else {
    echo 'Invalid password.';
}

Ahora parte de la necesidad de la empresa de utilizar Java para realizar la autenticación de usuario, la autenticación de contraseña aquí se refieren a problemas de compatibilidad. El primero en utilizar la seguridad de la primavera de prueba BCryptPasswordEncoder:

package com.dreamlike.dmlkdemo;
 
import org.junit.Test;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 
/**
 * @author Broly
 *
 */
public class CryptTests {
 
	@Test
	public void bcryptTest() {
		BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
		System.out.println(bCryptPasswordEncoder.encode("broly"));
		// $2a$10$h.cMz2AmkBbkuUKnFY837uCB3/JZgtJUV7BBUnaGWUCrMk/FF4nX.	
 
		String encodedPassword = "$2y$10$wO./FnpCf8NkqjXbgV5ZT.juYia/Ts4Fz6ZBZgfWObmOjlAQwKtfO";
 
		boolean bMatch = bCryptPasswordEncoder.matches("broly", encodedPassword);
		System.out.println(bMatch); // false
 
	}
 
}

Encontrado que pase la prueba. búsqueda en línea de la siguiente password_hash () es el algoritmo de cifrado por defectoCRYPT_BLOWFISH官方文档有这样一段描述:

  • CRYPT_BLOWFISH - hash de Blowfish con una sal de la siguiente manera: "$ 2a $", "$ 2x $" o "$ $ 2y", un parámetro de coste de dos dígitos, "$", y 22 caracteres del alfabeto" ./0-9A- Za-z". Uso de caracteres fuera de este rango en la sal causará crypt () para devolver una cadena de longitud cero. El parámetro de coste dos dígitos es el logaritmo en base 2 de la cuenta de iteración para el subyacente algorithmeter hashing basado en Blowfish y debe estar en el rango 04-31, los valores fuera de este rango hará que crypt () falle. Las versiones de PHP 5.3.7 antes sólo admiten "$ 2a $" como prefijo de la sal: PHP 5.3.7 introdujo los nuevos prefijos para fijar una debilidad en la seguridad en la implementación del Blowfish. Por favor refiérase a  »este documento  para los detalles completos de la revisión de seguridad, pero para resumir, los desarrolladores centrarse exclusivamente en PHP 5.3.

Para encontrar diferencias entre los dos está en el principio de la cadena. 2A $ $ y $ $ 2y. El efecto que $ $ 2y al comienzo de la nueva versión de parches de seguridad. Java soporta sólo $ 2a $.

De hecho, la solución es simple, antes de la sentencia, está poniendo en $ 2y $ $ $ 2a, entonces el juez:

package com.dreamlike.dmlkdemo;
 
import org.junit.Test;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 
/**
 * @author Broly
 *
 */
public class CryptTests {
 
	@Test
	public void bcryptTest() {
		BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
		System.out.println(bCryptPasswordEncoder.encode("broly"));
		// $2a$10$h.cMz2AmkBbkuUKnFY837uCB3/JZgtJUV7BBUnaGWUCrMk/FF4nX.	
 
		// String encodedPassword = "$2y$10$wO./FnpCf8NkqjXbgV5ZT.juYia/Ts4Fz6ZBZgfWObmOjlAQwKtfO";
		String encodedPassword = "$2a$10$wO./FnpCf8NkqjXbgV5ZT.juYia/Ts4Fz6ZBZgfWObmOjlAQwKtfO";
 
		boolean bMatch = bCryptPasswordEncoder.matches("broly", encodedPassword);
		System.out.println(bMatch); // true
 
	}
 
}

参考链接: " ¿Cómo calcular en Java una contraseña Bcrypt compatible con laravel "

Otros: https://laravel-china.org/docs/laravel/5.6/hashing/1383#4881e0

 

 

Publicado 75 artículos originales · ganado elogios 48 · Vistas de 350.000 +

Supongo que te gusta

Origin blog.csdn.net/KingJin_CSDN_/article/details/85800157
Recomendado
Clasificación