将 SSL dll 导入到项目中

本文关键字:项目 导入 SSL dll | 更新日期: 2023-09-27 18:35:19

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

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' 的类型初始值设定项 重新列出异常。--->系统异常:libeay32.dll 的版本无效,预期 0.9.8a开发,获得:1.0.0发布

我在项目中导入了最新的SSL库并收到此错误(在Crypto = new GameCrypto()行上)

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

在PROJECT_NAME。Native.BF_set_key(IntPtr _key, Int32 len, Byte[] data) 在PROJECT_NAME。Main.Blowfish.SetKey(Byte[] data) in PATH''Main''Blowfish.cs:line 85 在PROJECT_NAME。主游戏加密..ctor(Byte[] key) in PATH''Main''Blowfish.cs:line 15 在PROJECT_NAME。主游戏客户端..ctor(布尔机器人) in PATH''Main''GameClient.cs:line 48

我能够解决这个问题,但我被困在这个问题上(在新的OpenSSL.Crypto.DH()行上)

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

在 OpenSSL.Core.Native.SSL_library_init() at OpenSSL.Core.Native..cctor() ---内部异常堆栈跟踪结束--- 在 OpenSSL.Core.Native.DH_new() 在OpenSSL.Crypto.DH..ctor() 在PROJECT_NAME。主游戏客户端..ctor(布尔机器人) in PATH''Main''GameClient.cs:line 49 System.NullReferenceException:对象引用未设置为对象的实例。 在PROJECT_NAME。Main.GameWorker.ConnectionHandler(StateObj S) in PATH''Main''GameWorker.cs:line 33

将 SSL dll 导入到项目中

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

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

  2. 在解决方案资源管理器中选择该文件。在属性窗口中,将生成操作设置为始终复制。

不要忘记,非托管 DLL

本身可能需要其他非托管 DLL。如果您忘记添加这些内容,则可以获得 完全相同的错误。如果你是,你可以使用依赖沃克来帮助你 不确定依赖项是什么。