Cita:
Iniciado por pateketrueke Lo de las comillas es porque en realidad MD5 no es un algoritmo de "encriptado" sino de hashing, que no es lo mismo.
Te tomo la palabra, pues ahí era donde yo estaba equivocado. Gracias por la aclaración.
Cita:
Iniciado por pateketrueke Bien... pues sin ver cómo lo haces exactamente así como las especificaciones de la columna en la BD es complicado adivinar las causas.
Continúo:
Reproduje un código (muy feo, en mi opinión) hecho en Visual Basic .NET el cual muestro a continuación:
Código VB:
Ver originalPublic Function Encripta(ByVal cText As String)
Dim CLen
Dim cEncriptada As String = ""
Dim nChar As Integer
Dim i
CLen = Len(cText)
cText = RTrim(cText)
For i = 1 To Len(cText)
nChar = Asc(Mid(cText, i, 1))
If Not nChar = Asc(" ") Then
nChar = nChar - (40 - i)
End If
If nChar <= 0 Then
nChar = 255 + nChar
End If
cEncriptada = Chr(nChar) & cEncriptada
Next
cEncriptada = cEncriptada + Space(CLen - Len(cEncriptada))
Encripta = cEncriptada
End Function
Pude haberlo mejorado (e inclusive comentado) en este mismo lenguaje, pero se me asignó hacer un sistema con C#, así que fue ahi donde lo transformé y funcionó:
Código C#:
Ver originalprivate string Encriptacion(string texto)
{
int tamanio = 0;
string clave = "";
int caracter = 0;
texto = texto.Trim();
tamanio = texto.Length;
for (int i = 1; i <= tamanio; i++)
{
caracter = (int)Convert.ToChar(texto.Substring(i-1,1));
if (!(caracter == Asc(" ")))
{
caracter = caracter - (40 - i);
}
if (caracter <= 0)
{
caracter = 255 + caracter;
}
clave = Convert.ToChar(caracter) + clave;
}
return clave;
}
Tiempo después volví a tener la necesidad de implementar el mismo método, pero ahora en JAVA, y también lo conseguí:
Código JAVA:
Ver original int tamanio = 0;
int caracter = 0;
texto = texto.trim();
tamanio = texto.length();
for (int i = 1; i <= tamanio; i++) {
caracter = (int)texto.charAt(i-1);
if (!(caracter == (int)" ".charAt(0))) {
caracter = caracter - (40 - i);
}
if (caracter <= 0) {
caracter = 255 + caracter;
}
clave = (char)caracter + clave;
}
return clave;
}
Pero cuando lo llevé a PHP, no tuve la misma suerte:
Código PHP:
Ver originalpublic function validarContrasenia($password)
{
$tamanio = 0;
$clave = "";
$caracter = 0;
$password = trim($password); for ($i=1;$i<=$tamanio;$i++)
{
if (!($caracter == ord(" "))) {
$caracter = $caracter - (40 - $i);
}
if ($caracter <= 0)
{
$caracter = 255 + $caracter;
}
$clave = chr($caracter) + $clave; }
return $clave;
}
Sigo creyendo que puede tratarse de la inferencia de tipos que posee el lenguaje. Alguna otra persectiva ?