Autor Tema: Pasar Función de .net a vb6 (para encriptar en 128bits)  (Leído 3073 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Hugo

  • Visitante
Pasar Función de .net a vb6 (para encriptar en 128bits)
« en: Septiembre 24, 2010, 05:17:38 pm »
Hola,

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

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

Desde ya muchas gracias!!!!

Código: (vbnet) [Seleccionar]
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 saludo,
Hugo
« última modificación: Septiembre 25, 2010, 08:57:54 am por xkiz »