Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2014-09

Ayuda con encriptado TripleDes

6 messages · 2 people ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Maxi

Tengo que hacer un encryptado para subir datos a un webservice y me lo piden encriptado con 3Des.
Hice unas pruebas pero no me da ni cerca el resultado con lo comparado.

Tengo esto en la documentacion en C# para pasarlo a Lazarus.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;
namespace CrypDES
{
public class TripleDESUtil
{
#region [Properties]
public byte[] IV { get; set; }
public byte[] Key { get; set; }
#endregion
#region [Constructors]
public TripleDESUtil()
{
}
public TripleDESUtil(string pKey)
{
var encoding = new UTF8Encoding();
Key = encoding.GetBytes(pKey);
}
#endregion
#region [Methods]
/// <summary>
/// Desencripta el arreglo de bytes que recibe como parametro utilizando
/// el algoritmo TripleDES
/// </summary>
/// <param name="pText"></param>
/// <returns>Texto desencriptado</returns>
public string DesEncrypt(byte[] pText)
{
var cryptoProvider = new TripleDESCryptoServiceProvider();
cryptoProvider.KeySize = 192;
cryptoProvider.Mode = CipherMode.ECB;
cryptoProvider.Padding = PaddingMode.Zeros;
var cryptoTransform = cryptoProvider.CreateDecryptor(Key, IV);
var memoryStream = new MemoryStream(pText);
var cryptoStream = new CryptoStream(memoryStream, cryptoTransform,
CryptoStreamMode.Read);
var sr = new StreamReader(cryptoStream, true);
return sr.ReadToEnd();
}
/// <summary>
/// Encripta el texto que recibe como parametro utilizando el algoritmo
/// tripleDES
/// </summary>
/// <param name="pText"></param>
/// <returns>Arreglo de bytes correspondiente al texto encriptado</returns>
public byte[] Encrypt(string pText)
{
var encoding = new UTF8Encoding();
Integraci�n de Aplicaciones - Web Service
P�g. 5 de 6
var message = encoding.GetBytes(pText);
var cryptoProvider = new TripleDESCryptoServiceProvider();
cryptoProvider.KeySize = 192;
cryptoProvider.Mode = CipherMode.ECB;
cryptoProvider.Padding = PaddingMode.Zeros;
IV = cryptoProvider.IV;
var criptoTransform = cryptoProvider.CreateEncryptor(Key, IV);
var memoryStream = new MemoryStream();
var cryptoStream = new CryptoStream(memoryStream, criptoTransform,
CryptoStreamMode.Write);
cryptoStream.Write(message, 0, message.Length);
cryptoStream.FlushFinalBlock();
return memoryStream.ToArray();
}
#endregion
}
}

Reply by email

Martin Gomez
to Maxi

El problema ah� es que ests utilizando System.Security.Cryptography, que es parte de .NET y no lo tenemos disponible en Lazarus.

Fijate en Torry hay varios componentes que hacen eso http://www.torry.net/pages.php?id=519 la mayoria con codigo fuente que se tendria que adaptar facilmente a freepascal, Y tambi�n est� la versi�n actualizada de TurboPower LockBox en
http://sourceforge.net/projects/tplockbox/

Yo ir�a con DCPCrypt o con LockBox, los dos tienen buena reputaci�n y est�n en el ambiente Delphi hace un mont�n de tiempo, fijate cual te queda m�s c�modo a la hora de usarlo (usan paradigmas distintos)

Maxi wrote 84 lines
Tengo que hacer un encryptado para subir datos a un webservice y me lo piden encriptado con 3Des. Hice unas pruebas pero no me da ni cerca el resultado con lo comparado. Tengo esto en la documentacion en C# para pasarlo a Lazarus. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Security.Cryptography; using System.IO; namespace CrypDES { public class TripleDESUtil { #region [Properties] public byte[] IV { get; set; } public byte[] Key { get; set; } #endregion #region [Constructors] public TripleDESUtil() { } public TripleDESUtil(string pKey) { var encoding = new UTF8Encoding(); Key = encoding.GetBytes(pKey); } #endregion #region [Methods] /// <summary> /// Desencripta el arreglo de bytes que recibe como parametro utilizando /// el algoritmo TripleDES /// </summary> /// <param name="pText"></param> /// <returns>Texto desencriptado</returns> public string DesEncrypt(byte[] pText) { var cryptoProvider = new TripleDESCryptoServiceProvider(); cryptoProvider.KeySize = 192; cryptoProvider.Mode = CipherMode.ECB; cryptoProvider.Padding = PaddingMode.Zeros; var cryptoTransform = cryptoProvider.CreateDecryptor(Key, IV); var memoryStream = new MemoryStream(pText); var cryptoStream = new CryptoStream(memoryStream, cryptoTransform, CryptoStreamMode.Read); var sr = new StreamReader(cryptoStream, true); return sr.ReadToEnd(); } /// <summary> /// Encripta el texto que recibe como parametro utilizando el algoritmo /// tripleDES /// </summary> /// <param name="pText"></param> /// <returns>Arreglo de bytes correspondiente al texto encriptado</returns> public byte[] Encrypt(string pText) { var encoding = new UTF8Encoding(); Integraci�n de Aplicaciones - Web Service P�g. 5 de 6 var message = encoding.GetBytes(pText); var cryptoProvider = new TripleDESCryptoServiceProvider(); cryptoProvider.KeySize = 192; cryptoProvider.Mode = CipherMode.ECB; cryptoProvider.Padding = PaddingMode.Zeros; IV = cryptoProvider.IV; var criptoTransform = cryptoProvider.CreateEncryptor(Key, IV); var memoryStream = new MemoryStream(); var cryptoStream = new CryptoStream(memoryStream, criptoTransform, CryptoStreamMode.Write); cryptoStream.Write(message, 0, message.Length); cryptoStream.FlushFinalBlock(); return memoryStream.ToArray(); } #endregion } } _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
? Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program. ? ? *Linus Torvalds* ------------ pr�xima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20140905/65de3920/attachment.html>

Reply by email

Maxi
to Martin Gomez

si le que encuentro diferente, es que en el componente dcp_3des tiene el modo cmCBC y no hay uno ECB como vi que usa en el codigo. Buscando encontre en torry.net Delphi Encryption Compendium (DEC) desde 2010 voy a ver que hace.

El d�a 5 de septiembre de 2014, 15:32, Martin Gomez <mmgomez en gmail.com> escribi�:

Show quoted text 115 lines
El problema ah� es que ests utilizando System.Security.Cryptography, que es parte de .NET y no lo tenemos disponible en Lazarus. Fijate en Torry hay varios componentes que hacen eso http://www.torry.net/pages.php?id=519 la mayoria con codigo fuente que se tendria que adaptar facilmente a freepascal, Y tambi�n est� la versi�n actualizada de TurboPower LockBox en http://sourceforge.net/projects/tplockbox/ Yo ir�a con DCPCrypt o con LockBox, los dos tienen buena reputaci�n y est�n en el ambiente Delphi hace un mont�n de tiempo, fijate cual te queda m�s c�modo a la hora de usarlo (usan paradigmas distintos) On Fri, Sep 5, 2014 at 1:56 PM, Maxi <maximiliano.duarte en gmail.com> wrote: > > Tengo que hacer un encryptado para subir datos a un webservice y me lo > piden encriptado con 3Des. > Hice unas pruebas pero no me da ni cerca el resultado con lo comparado. > > Tengo esto en la documentacion en C# para pasarlo a Lazarus. > > using System; > using System.Collections.Generic; > using System.Linq; > using System.Text; > using System.Security.Cryptography; > using System.IO; > namespace CrypDES > { > public class TripleDESUtil > { > #region [Properties] > public byte[] IV { get; set; } > public byte[] Key { get; set; } > #endregion > #region [Constructors] > public TripleDESUtil() > { > } > public TripleDESUtil(string pKey) > { > var encoding = new UTF8Encoding(); > Key = encoding.GetBytes(pKey); > } > #endregion > #region [Methods] > /// <summary> > /// Desencripta el arreglo de bytes que recibe como parametro utilizando > /// el algoritmo TripleDES > /// </summary> > /// <param name="pText"></param> > /// <returns>Texto desencriptado</returns> > public string DesEncrypt(byte[] pText) > { > var cryptoProvider = new TripleDESCryptoServiceProvider(); > cryptoProvider.KeySize = 192; > cryptoProvider.Mode = CipherMode.ECB; > cryptoProvider.Padding = PaddingMode.Zeros; > var cryptoTransform = cryptoProvider.CreateDecryptor(Key, IV); > var memoryStream = new MemoryStream(pText); > var cryptoStream = new CryptoStream(memoryStream, cryptoTransform, > CryptoStreamMode.Read); > var sr = new StreamReader(cryptoStream, true); > return sr.ReadToEnd(); > } > /// <summary> > /// Encripta el texto que recibe como parametro utilizando el algoritmo > /// tripleDES > /// </summary> > /// <param name="pText"></param> > /// <returns>Arreglo de bytes correspondiente al texto > encriptado</returns> > public byte[] Encrypt(string pText) > { > var encoding = new UTF8Encoding(); > Integraci�n de Aplicaciones - Web Service > P�g. 5 de 6 > var message = encoding.GetBytes(pText); > var cryptoProvider = new TripleDESCryptoServiceProvider(); > cryptoProvider.KeySize = 192; > cryptoProvider.Mode = CipherMode.ECB; > cryptoProvider.Padding = PaddingMode.Zeros; > IV = cryptoProvider.IV; > var criptoTransform = cryptoProvider.CreateEncryptor(Key, IV); > var memoryStream = new MemoryStream(); > var cryptoStream = new CryptoStream(memoryStream, criptoTransform, > CryptoStreamMode.Write); > cryptoStream.Write(message, 0, message.Length); > cryptoStream.FlushFinalBlock(); > return memoryStream.ToArray(); > } > #endregion > } > } > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es -- Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program. Linus Torvalds _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
El que pregunta aprende, y el que contesta aprende a responder. No a la obsolecencia programada: http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml Linux User #495070 http://domonetic.com/blog

Reply by email

Maxi
to Martin Gomez: El problema ah� es que ests utilizando System.Security.Cryptography, que es parte de…

El d�a 5 de septiembre de 2014, 15:32, Martin Gomez <mmgomez en gmail.com> escribi�:

Show quoted text 12 lines
El problema ah� es que ests utilizando System.Security.Cryptography, que es parte de .NET y no lo tenemos disponible en Lazarus. Fijate en Torry hay varios componentes que hacen eso http://www.torry.net/pages.php?id=519 la mayoria con codigo fuente que se tendria que adaptar facilmente a freepascal, Y tambi�n est� la versi�n actualizada de TurboPower LockBox en http://sourceforge.net/projects/tplockbox/ Yo ir�a con DCPCrypt o con LockBox, los dos tienen buena reputaci�n y est�n en el ambiente Delphi hace un mont�n de tiempo, fijate cual te queda m�s c�modo a la hora de usarlo (usan paradigmas distintos)

Me fije en DCPCrypt y LockBox.
DCPCrypt est{a bastante viejita
y con LockBox, no lo puedo instalar, me tira 100 errores y el mas tonto es que puso {$ENDIF} y es {$IFEND}.
Seguir� buscando algo util.

Reply by email

Martin Gomez
to Maxi

2014-09-05 17:42 GMT-03:00 Maxi <maximiliano.duarte en gmail.com>:

Me fije en DCPCrypt y LockBox. DCPCrypt est{a bastante viejita

?Eso es cierto...
?

y con LockBox, no lo puedo instalar, me tira 100 errores y el mas tonto es que puso {$ENDIF} y es {$IFEND}. Seguir� buscando algo util.

?:|
?
?le pusiste {$mode delphi} ?
?

? Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program. ? ? *Linus Torvalds* ------------ pr�xima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20140905/c6d015e9/attachment.html>

Reply by email

Maxi
to Martin Gomez
Encontr� que existe el metodo
procedure EncryptECB(const Indata; var Outdata); virtual;

ahora tengo que ver como funciona y si hace lo mismo

El d�a 5 de septiembre de 2014, 17:57, Martin Gomez <mmgomez en gmail.com> escribi�:

Show quoted text 29 lines
2014-09-05 17:42 GMT-03:00 Maxi <maximiliano.duarte en gmail.com>: > > Me fije en DCPCrypt y LockBox. > DCPCrypt est{a bastante viejita Eso es cierto... > > y con LockBox, no lo puedo instalar, me tira 100 errores y el mas > tonto es que puso {$ENDIF} y es {$IFEND}. > Seguir� buscando algo util. :| le pusiste {$mode delphi} ? -- Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program. Linus Torvalds _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
El que pregunta aprende, y el que contesta aprende a responder. No a la obsolecencia programada: http://www.rtve.es/noticias/20110104/productos-consumo-duran-cada-vez-menos/392498.shtml Linux User #495070 http://domonetic.com/blog

Reply by email