Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-06-2024
darkamerico darkamerico is offline
Miembro
 
Registrado: dic 2010
Posts: 273
Poder: 16
darkamerico Va por buen camino
Red face Traducir esta función de Encriptación de C# a Delphi

Saludos amigos,
Estoy realizando la integración mediante un modulo que haré en Delphi a un sistema que está en C#, ellos usan estas funciones para encriptar y decriptar:

Código:
private string Encrypt(string clearText)
{
            string EncryptionKey = "MAKV2SPBNI99212";
            byte[] clearBytes = Encoding.Unicode.GetBytes(clearText);
            using (Aes encryptor = Aes.Create())
            {
                Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
                encryptor.Key = pdb.GetBytes(32);
                encryptor.IV = pdb.GetBytes(16);
                using (MemoryStream ms = new MemoryStream())
                {
                    using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateEncryptor(), CryptoStreamMode.Write))
                    {
                        cs.Write(clearBytes, 0, clearBytes.Length);
                        cs.Close();
                    }
                    clearText = Convert.ToBase64String(ms.ToArray());
                }
            }
            return clearText;
        }

        private string Decrypt(string cipherText)
        {
            string EncryptionKey = "MAKV2SPBNI99212";
            byte[] cipherBytes = Convert.FromBase64String(cipherText);
            using (Aes encryptor = Aes.Create())
            {
                Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(EncryptionKey, new byte[] { 0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76 });
                encryptor.Key = pdb.GetBytes(32);
                encryptor.IV = pdb.GetBytes(16);
                using (MemoryStream ms = new MemoryStream())
                {
                    using (CryptoStream cs = new CryptoStream(ms, encryptor.CreateDecryptor(), CryptoStreamMode.Write))
                    {
                        cs.Write(cipherBytes, 0, cipherBytes.Length);
                        cs.Close();
                    }
                    cipherText = Encoding.Unicode.GetString(ms.ToArray());
                }
            }
            return cipherText;
        }
Podría alguien echarme una mano con la unidad con el código Delphi de ellas?.
Muy Agradecido

Americo

Última edición por dec fecha: 13-06-2024 a las 18:25:52. Razón: Poner etiquetas CODE
Responder Con Cita
  #2  
Antiguo 13-06-2024
darkamerico darkamerico is offline
Miembro
 
Registrado: dic 2010
Posts: 273
Poder: 16
darkamerico Va por buen camino
Red face En Imagen

Para mejor visualización:



Atte
Americo
Responder Con Cita
  #3  
Antiguo 13-06-2024
marco3k marco3k is offline
Miembro
 
Registrado: feb 2015
Posts: 106
Poder: 12
marco3k Va por buen camino
Bueno gogleando un poco en www hay convertidores de código y encontré este:
https://www.codeconvert.ai/csharp-to-pascal-converter


y el resultado es este:



Código Delphi [-]
uses
  System.SysUtils,
  System.Classes,
  System.Crypto,
  System.Convert;

function Encrypt(clearText: string): string;
var
  EncryptionKey: string;
  clearBytes: TBytes;
  encryptor: TAesManaged;
  pdb: TRfc2898DeriveBytes;
  ms: TMemoryStream;
  cs: TCryptoStream;
begin
  EncryptionKey := 'MAKV2SPBNI99212';
  clearBytes := TEncoding.Unicode.GetBytes(clearText);
  encryptor := TAesManaged.Create;
  try
    pdb := TRfc2898DeriveBytes.Create(EncryptionKey, [0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76]);
    encryptor.Key := pdb.GetBytes(32);
    encryptor.IV := pdb.GetBytes(16);
    ms := TMemoryStream.Create;
    try
      cs := TCryptoStream.Create(ms, encryptor.CreateEncryptor, CryptoStreamMode.Write);
      try
        cs.Write(clearBytes, 0, Length(clearBytes));
      finally
        cs.Free;
      end;
      clearText := TBase64Encoding.UTF8.EncodeToString(ms.ToArray);
    finally
      ms.Free;
    end;
  finally
    encryptor.Free;
  end;
  Result := clearText;
end;

function Decrypt(cipherText: string): string;
var
  EncryptionKey: string;
  cipherBytes: TBytes;
  encryptor: TAesManaged;
  pdb: TRfc2898DeriveBytes;
  ms: TMemoryStream;
  cs: TCryptoStream;
begin
  EncryptionKey := 'MAKV2SPBNI99212';
  cipherBytes := TBase64Encoding.UTF8.DecodeToBytes(cipherText);
  encryptor := TAesManaged.Create;
  try
    pdb := TRfc2898DeriveBytes.Create(EncryptionKey, [0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76]);
    encryptor.Key := pdb.GetBytes(32);
    encryptor.IV := pdb.GetBytes(16);
    ms := TMemoryStream.Create;
    try
      cs := TCryptoStream.Create(ms, encryptor.CreateDecryptor, CryptoStreamMode.Write);
      try
        cs.Write(cipherBytes, 0, Length(cipherBytes));
      finally
        cs.Free;
      end;
      cipherText := TEncoding.Unicode.GetString(ms.ToArray);
    finally
      ms.Free;
    end;
  finally
    encryptor.Free;
  end;
  Result := cipherText;
end.


Tendrias que probarlo...
Responder Con Cita
  #4  
Antiguo 13-06-2024
darkamerico darkamerico is offline
Miembro
 
Registrado: dic 2010
Posts: 273
Poder: 16
darkamerico Va por buen camino
Unhappy

El código presenta varios errores, de igual modo intente con ChatGPT y ninguno corre.
Responder Con Cita
  #5  
Antiguo 14-06-2024
marco3k marco3k is offline
Miembro
 
Registrado: feb 2015
Posts: 106
Poder: 12
marco3k Va por buen camino
Cita:
Empezado por darkamerico Ver Mensaje
El código presenta varios errores, de igual modo intente con ChatGPT y ninguno corre.
Pues depuralo paso a paso y ahi notaras en que parte falla y asi vas corrigiendo.
Responder Con Cita
  #6  
Antiguo 14-06-2024
marco3k marco3k is offline
Miembro
 
Registrado: feb 2015
Posts: 106
Poder: 12
marco3k Va por buen camino
Yo empezaría primero de que librerías salen esas funciones en c# y luego ver los tipos de datos son equivalentes. Pude ocurrir que esas librerias no existan en delphi y entonces el traductor puso algunas que cree que seria equivalentes. Y si en el caso esas librerías sólo existen en c# tocara llamarlos desde delphi.
Responder Con Cita
  #7  
Antiguo 14-06-2024
darkamerico darkamerico is offline
Miembro
 
Registrado: dic 2010
Posts: 273
Poder: 16
darkamerico Va por buen camino
Cita:
Empezado por marco3k Ver Mensaje
Pues depuralo paso a paso y ahi notaras en que parte falla y así vas corrigiendo.
precisamente el problema es que, como dices, estas unidades, no existen en Delphi.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con encriptación php <-> Delphi Reasen Delphi para la web 6 29-12-2015 18:10:47
Encriptación con AES en Delphi 7 nlsgarcia Varios 3 01-09-2011 07:36:20
Encriptacion MD5+RSA en delphi jourdan OOP 9 24-03-2010 01:01:08
Traducir llamado a funcion juanelo C++ Builder 9 28-01-2010 21:11:11
Traducir Un chat que está en Inglés Luis F. Orjuela Internet 2 26-02-2004 01:55:03


La franja horaria es GMT +2. Ahora son las 06:28:31.


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