buenos dias ingenieros
Este código VB.Net es responsable de cifrar una contraseña
Public Function Encrypt(ByVal clave As String) As String ' Defino variables Dim indice As Integer = 1 Dim largo As Integer = 0 Dim final As String = "" largo = Len(Trim(clave)) Dim caracteres(largo) As String For indice = 1 To largo caracteres(indice) = Mid(clave, indice, 1) caracteres(indice) = Chr(Asc(caracteres(indice)) + indice) final = final & caracteres(indice) Next indice Return final End Function
y este sería el código en php que hice pero estoy fallando en alguna parte ya que no obtengo el resultado deseado
public static function encryption($clave){ $indice = 0; $largo = 0; $final = ''; $largo = strlen(trim($clave)); $caracteres = array(); for ($indice; $indice < $largo; $indice++) { $caracteres[$indice] = substr($clave, $indice, 1); $caracteres[$indice] = chr(ord($caracteres[$indice]) + $indice); $final = $final.$caracteres[$indice]; } return $final; }
un ejemplo seria que en VB.Net la clave 12345 esta encriptada en 2468: y en PHP la misma clave esta encriptada en 13579
Estaré agradecido con todos los que puedan ayudarme a descubrir dónde estoy fallando y cómo puedo solucionarlo.
Gracias
¡Estás muy, muy cerca! Solo necesita volver a agregar que $indice
está basado en uno en VB.Net pero basado en cero en PHP cuando está realizando operaciones matemáticas.
Así que cambia esto:
$caracteres[$indice] = chr(ord($caracteres[$indice]) + $indice);
A esto:
$caracteres[$indice] = chr(ord($caracteres[$indice]) + ($indice + 1));