将SSL dll导入项目

时间:2014-12-23 23:49:56

标签: c# c++ .net ssl visual-studio-project

我有一个从旧系统导入的项目。 这段代码变得最成问题

PacketGroup = new ArrayList();
Crypto = new GameCrypto(ASCIIEncoding.ASCII.GetBytes(STRING_CRYPTO));
KeyExchance = new OpenSSL.Crypto.DH();
KeyExchance.G = RANDOM_INT;
KeyExchance.P = OpenSSL.Core.BigNumber.FromHexString("KEY__KEY_KEY\0");
KeyExchance.GenerateKeys();
NewServerIV = GenerateIV();
NewClientIV = GenerateIV();

起初我收到错误:

  

System.TypeInitializationException:' OpenSSL.Native'的类型初始值设定项。日   重新例外。 ---> System.Exception:libeay32.dll的版本无效,期待   0.9.8a开发,获得:1.0.0发布

我在项目中导入了最新的SSL库并得到了这个错误(在线上加密=新GameCrypto())

  

System.DllNotFoundException:无法加载DLL' libeay32.dll':应用程序无法启动   因为它的并排配置不正确。请参阅应用程序事件日志或使用   命令行sxstrace.exe工具了解更多详情。 (HRESULT异常:0x800736B1)

     
    

在PROJECT_NAME.Native.BF_set_key(IntPtr _key,Int32 len,Byte []数据)     在PATH \ Main \ Blowfish.cs中的PROJECT_NAME.Main.Blowfish.SetKey(字节[]数据):第85行     在PATH \ Main \ Blowfish.cs中的PROJECT_NAME.Main.GameCrypto..ctor(Byte []键):第15行     位于PATH \ Main \ GameClient.cs中的PROJECT_NAME.Main.GameClient..ctor(布尔机器人):第48行

  

我能够解决这个问题而且我遇到了这个问题(在线上新的OpenSSL.Crypto.DH())

  

System.TypeInitializationException:' OpenSSL.Core.Native'的类型初始值设定项。抛出一个例外。   ---> System.DllNotFoundException:无法加载DLL' ssleay32':操作系统无法运行。   (HRESULT异常:0x800700B6)

     
    

在OpenSSL.Core.Native.SSL_library_init()     在OpenSSL.Core.Native..cctor()     ---内部异常堆栈跟踪结束---     在OpenSSL.Core.Native.DH_new()     在OpenSSL.Crypto.DH..ctor()     在PATH \ Main \ GameClient.cs中的PROJECT_NAME.Main.GameClient..ctor(布尔机器人):第49行     System.NullReferenceException:未将对象引用设置为对象的实例。     在PATH \ Main \ GameWorker.cs中的PROJECT_NAME.Main.GameWorker.ConnectionHandler(StateObj S):第33行

  

1 个答案:

答案 0 :(得分:1)

您的应用程序目录中需要libeay32.dlllibssl32.dllssleay32.dll的副本

  1. 将非托管dll添加为项目中的文件或链接文件。 (右键单击项目 - > gt;添加 - >现有文件,然后添加或添加为链接。

  2. 在解决方案资源管理器中选择文件。在属性窗口中设置构建操作以始终复制。

  3.   

    不要忘记非托管DLL本身可能需要其他非托管DLL。如果你忘记添加它们,你可以得到   完全相同的错误。如果您愿意,可以使用依赖性walker来帮助您   不确定依赖是什么。