[Lazarus-es] Ayuda con encriptado TripleDes

Martin Gomez mmgomez en gmail.com
Vie Sep 5 20:32:42 CEST 2014


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*
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20140905/65de3920/attachment-0005.html>


More information about the Lazarus-es mailing list