0

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

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 库并收到此错误(在 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) 在 PATH\Main\Blowfish.cs:PROJECT_NAME.Main.GameCrypto 的第 85 行。 PATH\Main\Blowfish.cs: 15 行中的 .ctor(Byte[] key) PROJECT_NAME.Main.GameClient..ctor(Boolean Robot) 在 PATH\Main\GameClient.cs:line 48

我能够解决这个问题,但我陷入了这个问题(在新的 OpenSSL.Crypto.DH() 线上)

System.TypeInitializationException:“OpenSSL.Core.Native”的类型初始化程序引发了异常。---> System.DllNotFoundException: Unable to load DLL 'ssleay32': The operating system cannot run 。(来自 HRESULT 的异常:0x800700B6)

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

4

1 回答 1

1

您需要一份libeay32.dll,libssl32.dllssleay32.dll在您的应用程序目录中的副本

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

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

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

于 2014-12-24T03:05:29.823 回答