3
I have a DLL made in C#. When importing it to be used on another computer, I find the class. However, her methods are not published;
Follows my code:
using System;
using System.Security.Cryptography;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
namespace PortalRH.DLL
{
[ComVisible(true), ClassInterface(ClassInterfaceType.None),
Guid("00AC4F7E-71B0-4BC7-AD8E-1175CD88457A")]
public class Criptografia
{
private string chave = "chave";
public Criptografia(){}
// Essa seqüência constante é usada como um valor "salt" para as chamadas de função PasswordDeriveBytes .
// Este tamanho da IV (em bytes) devem = (KeySize / 8). KeySize padrão é 256, portanto, a IV deve ser
// 32 bytes de comprimento. Usando uma seqüência de 16 caracteres aqui nos dá 32 bytes quando convertido para um array de bytes.
private static readonly byte[] initVectorBytes = Encoding.ASCII.GetBytes("tu89geji340t89u2");
// Esta constante é utilizado para determinar o tamanho da chave do algoritmo de encriptação.
private const int keysize = 256;
public static string Encrypt(string plainText, string passPhrase)
{
byte[] plainTextBytes = Encoding.UTF8.GetBytes(plainText);
using (PasswordDeriveBytes password = new PasswordDeriveBytes(passPhrase, null))
{
byte[] keyBytes = password.GetBytes(keysize / 8);
using (RijndaelManaged symmetricKey = new RijndaelManaged())
{
symmetricKey.Mode = CipherMode.CBC;
using (ICryptoTransform encryptor = symmetricKey.CreateEncryptor(keyBytes, initVectorBytes))
{
using (MemoryStream memoryStream = new MemoryStream())
{
using (CryptoStream cryptoStream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write))
{
cryptoStream.Write(plainTextBytes, 0, plainTextBytes.Length);
cryptoStream.FlushFinalBlock();
byte[] cipherTextBytes = memoryStream.ToArray();
return Convert.ToBase64String(cipherTextBytes);
}
}
}
}
}
}
public static string Decrypt(string cipherText, string passPhrase)
{
byte[] cipherTextBytes = Convert.FromBase64String(cipherText);
using (PasswordDeriveBytes password = new PasswordDeriveBytes(passPhrase, null))
{
byte[] keyBytes = password.GetBytes(keysize / 8);
using (RijndaelManaged symmetricKey = new RijndaelManaged())
{
symmetricKey.Mode = CipherMode.CBC;
using (ICryptoTransform decryptor = symmetricKey.CreateDecryptor(keyBytes, initVectorBytes))
{
using (MemoryStream memoryStream = new MemoryStream(cipherTextBytes))
{
using (CryptoStream cryptoStream = new CryptoStream(memoryStream, decryptor, CryptoStreamMode.Read))
{
byte[] plainTextBytes = new byte[cipherTextBytes.Length];
int decryptedByteCount = cryptoStream.Read(plainTextBytes, 0, plainTextBytes.Length);
return Encoding.UTF8.GetString(plainTextBytes, 0, decryptedByteCount);
}
}
}
}
}
}
}
}
This DLL was sent to another programmer to use her methods. However, he could not see her methods.
I checked, and the methods don’t show up in the Archive .TLB that he’s using.
And that this DLL was sent to another programmer, to use her methods. However he could not visualize the methods of the same.
– Randrade
And in the VB Browser Object, the methods do not appear. I wonder if I have any error in the code, so it can n visualize the methods there
– Randrade
I get it. did your colleague add all the references to his project? If I’m not mistaken he will have to add the DLL reference and then add the namespace to the project.
– pnet
Yes, it is not able to view the methods even in the VB Object Browser
– Randrade
However, on my computer, it works perfectly.
– Randrade
Some problem or some he did not do. If it was the code, you would have problems too, agree? I still think there’s some using left for him to do just by seeing the code and the way he’s trampling. You can post his code, his calls and so on...?
– pnet
He is not able to visualize the methods, nor using the VB Object Browser. He did not implement code.
– Randrade
I checked, and the methods do not appear in the.TLB file, which he is using. In . DDL all methods appear
– Randrade