Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: ProgramadorVB en 24 Junio 2010, 09:53 am



Título: Traducir función desde .NET a VB6
Publicado por: ProgramadorVB en 24 Junio 2010, 09:53 am
Hola amigos,

Espero me puedan ayudar con lo siguiente...
Tengo una función para cifrar y descifrar en 128bits... pero en .NET y necesito tenerla en VB6... alguien me puede ayudar con esto???

Necesito que alguien me ayude, alguien que maneje bien .Net... ya que yo uso pobremente solo VB6... tanto no entiendo...

Desde ya muchas gracias!!!!
 

Código:
using Microsoft.VisualBasic;
using Microsoft.VisualBasic.CompilerServices;
using System;
using System.Diagnostics;
using System.IO;
using System.Security.Cryptography;
using System.Text;

namespace Proyecto1
{
    public class clsEncryption
    {

        public string EncryptString128Bit(string vstrTextToBeEncrypted, string vstrEncryptionKey)
        {
            string str1;

            bool flag = modConstants.ENCRYPTION > 0 == false;
            if (flag)
            {
                str1 = vstrTextToBeEncrypted;
            }
            else
            {
                byte[] bs2 = new byte[]{121, 241, 17, 1, 132, 74, 11, 37, 253, 91, 45, 78, 29, 211, 22, 61};
                MemoryStream memoryStream = new MemoryStream();
                vstrTextToBeEncrypted = StripNullCharacters(vstrTextToBeEncrypted);
                byte[] bs4 = Encoding.ASCII.GetBytes(vstrTextToBeEncrypted.ToCharArray());
                int i = Strings.Len(vstrEncryptionKey);
                flag = i < 32 == false;
                if (flag)
                {
                    vstrEncryptionKey = Strings.Left(vstrEncryptionKey, 32);
                }
                else
                {
                    i = Strings.Len(vstrEncryptionKey);
                    int j = 32 - i;
                    vstrEncryptionKey = String.Concat(vstrEncryptionKey, Strings.StrDup(j, "T"));
                }
                byte[] bs3 = Encoding.ASCII.GetBytes(vstrEncryptionKey.ToCharArray());
                RijndaelManaged rijndaelManaged = new RijndaelManaged();
                string str2 = "";
                try
                {
                    CryptoStream cryptoStream = new CryptoStream(memoryStream, rijndaelManaged.CreateEncryptor(bs3, bs2), CryptoStreamMode.Write);
                    cryptoStream.Write(bs4, 0, (int)bs4.Length);
                    cryptoStream.FlushFinalBlock();
                    byte[] bs1 = memoryStream.ToArray();
                    cryptoStream.Close();
                    str2 = Convert.ToBase64String(bs1);
                }
                catch (Exception e)
                {
                    str2 = "";
                }
                memoryStream.Close();
                str1 = str2;
            }
            return str1;
        }

        public string DecryptString128Bit(string vstrStringToBeDecrypted, string vstrDecryptionKey)
        {
            string str1;

            bool flag = modConstants.ENCRYPTION > 0 == false;
            if (flag)
            {
                str1 = vstrStringToBeDecrypted;
            }
            else
            {
                byte[] bs3 = new byte[]{121, 241, 17, 1, 132, 74, 11, 37, 253, 91, 45, 78, 29, 211, 22, 61};
                RijndaelManaged rijndaelManaged = new RijndaelManaged();
                string str2 = String.Empty;
                byte[] bs1 = Convert.FromBase64String(vstrStringToBeDecrypted);
                int i = Strings.Len(vstrDecryptionKey);
                flag = i < 32 == false;
                if (flag)
                {
                    vstrDecryptionKey = Strings.Left(vstrDecryptionKey, 32);
                }
                else
                {
                    i = Strings.Len(vstrDecryptionKey);
                    int j = 32 - i;
                    vstrDecryptionKey = String.Concat(vstrDecryptionKey, Strings.StrDup(j, "T"));
                }
                byte[] bs2 = Encoding.ASCII.GetBytes(vstrDecryptionKey.ToCharArray());
                byte[] bs4 = new byte[(int)bs1.Length + 1];
                MemoryStream memoryStream = new MemoryStream(bs1);
                try
                {
                    CryptoStream cryptoStream = new CryptoStream(memoryStream, rijndaelManaged.CreateDecryptor(bs2, bs3), CryptoStreamMode.Read);
                    cryptoStream.Read(bs4, 0, (int)bs4.Length);
                    cryptoStream.Flush();
                    cryptoStream.Close();
                }
                catch (Exception e)
                {
                }
                memoryStream.Close();
                str1 = StripNullCharacters(Encoding.ASCII.GetString(bs4));
            }
            return str1;
        }

        private string StripNullCharacters(string vstrStringWithNulls)
        {
            bool flag;

            int i = 1;
            string str2 = vstrStringWithNulls;
            do
            {
                i = Strings.InStr(i, vstrStringWithNulls, "\0", CompareMethod.Binary);
                flag = i > 0;
                if (flag)
                {
                    str2 = String.Concat(Strings.Left(str2, i - 1), Strings.Right(str2, Strings.Len(str2) - i));
                }
                flag = i > str2.Length;
                if (flag)
                {
                    break;
                }
IL_004d:
                flag = i > 0;
            }
            while (flag);
            string str1 = str2;
            return str1;
        }
    }

}

 
Un saludooo!!!

PD: estoy intentando resolverlo... pero se me hace dificil... soy de controles, no de algoritmos avanzados... pero lo bueno es que pude encontrar ésta página en portgues... que aclara un poco...
http://www.devmedia.com.br/post-3112-Criptografia-de-Dados-128-Bits.html

Igualmente, les agradezco por una ayuda, de antemano... de paso este ejemplo para .NET y VB6 quedará aquí...