2011-07-11 11 views
5

que he hecho un montón de googlear y otras cosas y no puede encontrar exactamente lo que estoy buscando ...PHP - Romper la palabra en una matriz

estoy trabajando en el endurecimiento de la autenticación para mi página web. Decidí tomar las credenciales del usuario y sacarles el hash/salt. A continuación, almacene estos valores en la base de datos y en las cookies de usuario. Modifiqué un script que encontré en el sitio web PHP y está funcionando muy bien hasta ahora. Sin embargo, al usar array_rand noté que seleccionaría los caracteres de la cadena predefinida secuencialmente. No me gustó eso, así que decidí usar un shuffle en la matriz array_rand'd. Funcionó muy bien.

Siguiente! Pensé que sería inteligente convertir mi contraseña introducida por el usuario en una matriz, ¡y luego combinarla con mi matriz salada! Bueno, estoy teniendo problemas para convertir la contraseña de mi usuario en una matriz. Quiero que cada carácter en su contraseña sea una entrada de matriz. IE, si su contraseña era "buena", la matriz sería Array 0 => c 1 => o 2 => o 3 => l, etc. He intentado separar la cadena y luego explotar con la carácter de corte especificado, que no funcionó. Me imagino que podría hacer algo con un bucle for, strlen y todo eso, pero TIENE que haber una manera más elegante.

¿Alguna sugerencia? Estoy algo confundido :(Esto es lo que tengo hasta ahora, no he terminado con esto, ya que no he progresado más allá de la parte explodey.

$strings = wordwrap($string, 1, "|"); 
echo $strings . "<br />"; 
$stringe = explode("|", $strings, 1); 
print_r($stringe); 
echo "<br />"; 
echo "This is the exploded password string, for mixing with salt.<hr />"; 

Muchas gracias :)

Respuesta

14

La función php se desea str_split

str_split('cool', 1); 

Y volvería, se utiliza como anteriormente

[0] => c 
[1] => o 
[2] => o 
[3] => l 
+0

¡Esto funciona PERFECTAMENTE! ¡Muchas gracias, Colum! Siempre algo para aprender :) Enviando bien (((vibraciones))) a tu manera! – Shawn

+1

Siempre hay algo nuevo que aprender – Colum

+0

los chicos tampoco usan 'explde', no puede tener un delimter vacío :) solo me apetecía mencionar –

2

Th se refiere a la escritura suelta de PHP si trata la cadena como una matriz, php hará lo que cabría esperar. Por ejemplo:

$string = 'cool'; 
echo $string[1]; // output's 'o'. 
+1

Esto no está relacionado con la mecanografía suelta, simplemente se llama acceso de subcadena y ** no ** a ser confundido como una matriz. – hakre

+0

Hola a granel, gracias por la información. Lo había explorado realmente, pero tratar de dividir la palabra en una matriz real para array_rand no funcionaba muy bien. A menos que, por supuesto, array_rand pueda tratar una cadena como una matriz ... simplemente pensé que no sería así. Gracias por la información sin importar :) – Shawn

+0

Perdón por el doble, ojalá pudiera editar, quise decir array_merge. Urf – Shawn

3
Nunca

, NUNCA implementar algoritmos criptográficos menos que realmente sepa lo que está haciendo (o en este caso, el diseño también!). Si decide seguir adelante y hacerlo de todos modos, está poniendo en riesgo su sitio web. No hay ninguna razón por la que deba hacer esto: sin duda hay bibliotecas y/o funciones para hacer todo este tipo de cosas.

+0

Hola, gracias por el aviso. Finalmente utilizaré MD5 para mezclar la sal/contraseña mezclada. El plan es, en última instancia, crear una sal, mezclar la contraseña, md5 la sal, md5 la contraseña, luego juntar el hash de cada una y usar esa cadena, y luego usar eso como las credenciales de la base de datos/cookie. Espero que esto evite los ataques de tabla arcoiris contra los usuarios con contraseñas comunes y/o nombres de usuario. Es entonces cuando espero que pueda implementar ssl/tls para proteger la transmisión de los detalles de la cookie para evitar MITM. ¿Suena eso bien?Gracias :) – Shawn

+0

MD5 está desactualizado, pero SSL/TLS sin duda será el truco :) – AlexWebr

+0

He oído que MD5 realmente se recomienda mucho debido a las crecientes amenazas en su contra. He oído lo mismo de SHA1. ¿Recomendarías SHA256? ¿No es cierto, sin embargo, que la única debilidad inherente de MD5 es la debilidad del usuario en sí? Es por eso que planeo usar una sal de 30 caracteres. Sin embargo, no soy ningún gurú. ¡Siempre aprendiendo! – Shawn