Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   String a Cadena de Bytes a cadena Hexadecimal (https://www.clubdelphi.com/foros/showthread.php?t=77282)

ruedabeat2003 10-01-2012 19:35:22

String a Cadena de Bytes a cadena Hexadecimal
 
Hola, estoy sufriendo con un requerimiento que se trata de lo siguiente:
- Tomar un Certificado(Llave Publica) y obtener el contenido.
- El contenido del certificado pasarlo a un arreglo de Bytes.
- El arreglo de Bytes convertirlo a una cadena Hexadecimal.

Mis funciones son las siguientes:
Código:

// Pasar la cadena con el contenido del Certificado a un arreglo de Bytes.
function ArrOfByte(AStr: wideString): TByteArr;
var
  j: integer;
begin
  SetLength( Result, Length(AStr)) ;
  for j := 0 to Length(AStr) - 1 do
    Result[j] := ord(AStr[j + 1]) - 48;
end;

Código:

// Tomar cada elemento del arreglo de Bytes y convertirlo a Hex
function ByteToHex(InByte:byte):shortstring;
const Digits:array[0..15] of char='0123456789ABCDEF';
begin
 result:=digits[InByte shr 4]+digits[InByte and $0F];
end;

Código:

//  Load a digital certificate.
      success := cert.LoadFromFile(edtArchivoCer.Text);
      if (success <> 1) then
        begin
          ShowMessage(cert.LastErrorText);
          Exit;
        end;

        cadenawide := cert.GetEncoded;  // Obtenemos el contenido del CER-PEM
        cadenabyte := ArrOfByte(cadenawide); //Contenido lo ponemos en un arreglo de Bytes
        cadenahex  := '';
        for i:= 0 to Length(cadenabyte) -1 do // Formo mi cadena en Hexadecimal
          begin
            cadenahex := cadenahex  + ByteToHex(cadenabyte[i]);
          end;

        MemoRecep.Clear;
        MemoRecep.Lines.Add(cadenawide);
        memoCertificado.Clear;
        memoCertificado.Lines.Add(cadenahex);

Es correcto mi proceso de tomar el contenido del Archivo CER, pasarlo a un arreglo de Bytes y despues a una cadena HEx??? :confused::confused::confused:

De antemano gracias por la ayuda.

ecfisa 10-01-2012 20:53:55

Hola

Si no necesitas el arreglo de bytes para otra tarea, creo que podés ahorrar un paso:
Código Delphi [-]
...
type
  TArrayStr = array of ShortString;

function StrToHex(WStr: WideString): TArrayStr;
var
  j: integer;
begin
   SetLength(Result, Length(WStr));
   for j:= 0 to Length(WStr) - 1 do
     Result[j]:= IntToHex(Ord(WStr[j+1]) - Ord('0'), 2);
end;
...

Un saludo.

ruedabeat2003 11-01-2012 02:04:06

Gracias por el Tip, voy a probarlo. :)

Saludos desde México. :cool:


La franja horaria es GMT +2. Ahora son las 21:53:49.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi