Pasar cadena de caracteres a matriz VBA Access 2010

quisiera por favor si alguien puede darle una mirada al siguiente código vba y ayudarme a solucionar el problema de pasar el valor ascii a hexadecimal es decir decimal a hexadecimal

Function encriptarRC4(Mensaje, Clave As String) As String
Dim State(256) As Long, MensajeCifrado As String
Dim MensajeRec() As Byte
MensajeRec = StrConv(Mensaje, vbFromUnicode)
X = 0
Y = 0
Indice1 = 0
Indice2 = 0
MensajeCifrado = ""
For i = 0 To 255
State(i) = i
Next
For i = 0 To 256
Indice2 = Asc(Indice1 + State(i) + Indice2) Mod 256
aux = State(i)
State(i) = State(Indice2)
State(indice2) = aux
Indice1 = (Indice1 + 1) Mod Len(Clave)
Next
For i = LBound(MensajeRec) To UBound(MensajeRec)
X = (X + 1) Mod 256
Y = (State(X) + Y) Mod 256
aux = State(X)
State(X) = State(Y)
State(Y) = aux
nmen = MensajeRec(i) Xor State(State(X) + State(Y)) Mod 256
m = MsgBox(Asc(Chr(MensajeRec(i))) & " | " & Chr(MensajeRec(i)) & " | " & Hex(nmen))
MensajeCifrado = MensajeCifrado & "-" & Hex(nmen)
Next
encriptarRC4 = MensajeCifrado
End Function

ese código con los valores de mensaje ="ed3Ir6" y clave="sesamo" debería devolverme como resultado "-EA-51-D4-C3-D6-C5", pero en cambio devuelve "-54-55-2-78-43-7"

el mismo algoritmo lo tengo resuelto en php; pero no logro terminarlo para access 2010

el código php es:

function allegedRC4($mensaje, $Clave)
{
//inicializacion de valores
$x=0;
$y=0;
$indice1=0;
$indice2=0;
$MensajeCifrado="";
for($i=0;$i<=255;$i++)
{
$state[$i] = $i;
}

for($i=0;$i<=255;$i++)
{
$indice2 = bcmod((ord($Clave[$indice1])+$state[$i]+$indice2),256);
$aux = $state[$i];
$state[$i] = $state[$indice2];
$state[$indice2]=$aux;
$indice1 = bcmod(($indice1 +1),strlen($Clave));
}

for($i=0;$i<=(strlen($mensaje)-1);$i++)
{
$x = bcmod(($x+1),256);
$y = bcmod(($state[$x] + $y),256);
$aux = $state[$x];
$state[$x] = $state[$y];
$state[$y]=$aux;
$NMen =(ord($mensaje[$i]) ^ $state[bcmod($state[$x]+$state[$y],256)]);
echo $mensaje[$i]." | ". Ord($mensaje[$i])." | ". Dechex($NMen)."<br>";
$MensajeCifrado = $MensajeCifrado."-".rellenacero(dechex($NMen));
}
echo "<p>".strtoupper($MensajeCifrado)."</p>";
}

function rellenacero($HexRec)
{
if(strlen($HexRec)==1)
{
$HexDev="0".$HexRec;
}else{
$HexDev=$HexRec;
}
return $HexDev;
}

la función rellena cero es para poner un 0 a la izquierda cuando el largo de la cadena devuelta sea 1

Añade tu respuesta

Haz clic para o