YuOpenSSL – 没有 DLL 的用于 Delphi 的 OpenSSL

YuOpenSSL 是 Delphi 的唯一 OpenSSL 实现,它不需要 OpenSSL DLL。YuOpenSSL 使 Delphi 应用程序能够将加密和 Internet 安全性编译为一个没有依赖关系的可执行文件。这确保了对 OpenSSL 版本的完全控制,并消除了对DLL部署和位置的所有担忧。

OpenSSL 是功能最丰富的加密 Internet 安全库之一。它包括消息摘要、密码、同步和异步加密、SSL、TLS 等等。YuOpenSSL 提供了大约 3000 个函数和过程 3700 个常量 和 700 种类型。

所有 OpenSSL 功能都包含在 YuOpenSSL.pas 中,这是一个单独的 Delphi 单元。它替换了以下DLL:

Win64 Win32 YuOpenSSL 替换
OpenSSL 3 libcrypto-3-x64.dll
libssl-3-x64.dll
legacy-x64.dll
libcrypto-3.dll
libssl-3.dll
legacy.dll
YuOpenSSL.pas (来自 YuOpenSSL-3)
OpenSSL 1.1.1 libcrypto-1_1-x64.dll
libssl-1_1-x64.dll
libcrypto-1_1.dll
libssl-1_1.dll
YuOpenSSL.pas

YuOpenSSL 版本

目前有两个版本的 YuOpenSSL,可作为单独的软件包使用。YuOpenSSL 许可证涵盖两个版本:

YuOpenSSL-3

YuOpenSSL-3 基于 OpenSSL 3.x 系列。它取代了 YuOpenSSL(见下文)并且与它兼容,就像 OpenSSL 3.0 与 OpenSSL 1.1.1 兼容一样。

这是主要开发发生的地方,包括新功能、优化以及安全性和错误修复。

YuOpenSSL

YuOpenSSL(不带“-3”)基于 OpenSSL 1.1.1。它处于维护模式,主要是安全和错误修复,但很少或没有新功能。

建议更新到 YuOpenSSL-3,并且应该像使用新版本重新构建应用程序一样简单。

第三方组件和库支持

YuOpenSSL 目前支持以下 3rd 方 Internet 组件和库。使用 YuOpenSSL,他们不再需要外部 OpenSSL DLL来实现安全的 TLS / SSL Internet 连接。所有这些都适用于两个 YuOpenSSL 版本。

ICS – 互联网组件套件

ICS 可以针对 YuOpenSSL 进行编译。从 ICS 8.66 开始,很容易内置 YuOpenSSL 支持。对于旧版本 8.65 和 8.64,最小修改的 ICS 源与 YuOpenSSL 捆绑在一起。

通过 $defining YuOpenSSL 编译器指令启用 YuOpenSSL 。这使得在带有 OpenSSL DLL 的ICS 和带有 YuOpenSSL(并且没有DLL)的ICS之间切换变得容易。

Indy – 互联网直连

Indy 可以针对 YuOpenSSL 进行编译。YuOpenSSL 包括新 Indy OpenSSL 1.1.1 IOHander 的修改源。它添加了 TLS 1.3 作为一项新功能。通过 $defining YuOpenSSL 编译器指令启用 YuOpenSSL 。这使得在使用 OpenSSL DLL 的Indy 和使用 YuOpenSSL(并且没有DLL)的Indy之间切换变得容易。

新的 Indy OpenSSL 1.1.1 IOHandler 仍在开发中。建议测试。

Synapse TCP/IP 和串行库

Synapse 可以针对 YuOpenSSL 进行编译。YuOpenSSL 包括 Synapse OpenSSL 绑定的修改源。通过 $defining YuOpenSSL 编译器指令启用 YuOpenSSL 。这使得在带有 OpenSSL DLL 的Synapse 和带有 YuOpenSSL(并且没有DLL)的Synapse之间切换变得容易。

YuOpenSSL 开发过程中检测到的第 3 方问题

YuOpenSSL 开发发现了 Delphi 3rd 方 Internet 组件中的问题。它们已报告给他们的开发人员,现在已在最新版本中修复。这是清单:

ICS – 互联网组件套件

在 ICS 8.66 中修复: OverbyteIcsLIBEAY.pas 中的 2 个错误的函数参数类型,可能是内存覆盖 在 ICS 8.65 中修复: OverbyteIcsWSocket.pas 中的 7 个内存泄漏 - 修复 OverbyteIcsLIBEAY.pas: EVP_PKEY_paramgen() pkey 参数应该是双指针 OverbyteIcsLIBEAY.pas:f_CRYPTO_get_ex_data 应该返回指针,而不是整数 OverbyteIcsLIBEAY.pas:TCryptoExNewFunc 应该是过程,而不是函数 在 ICS 8.64 中修复: OverbyteIcsWSocket.pas 中的内存泄漏 OverbyteIcsWSocket.SslWSocketCopyRight 不存在 f_SSL_bytes_to_cipher_list 应该使用 var 或 ptr_ptr TProto_msg_cb 是一个函数,但必须是一个过程,至少对于 SSL_set_msg_callback()。 f_SSL_clear : SSL_clear 是一个函数并返回一个整数 f_X509_check_ip_asc 有额外的 namelen 参数 OverbyteIcsLIBEAY.pas f_EVP_DigestSignInit() 声明不匹配 OverbyteIcsWSocket.pas 错误:PunyServerName 填充了 8 位数据,即使它是 16 位 UnicodeString

Indy – 互联网直连

在 Indy OpenSSL 1.1.1 IOHandler GIT 存储库中修复: TIdOpenSSLX509.SaveToFile() 使用 BIO 类型而不是 PBIO 由于 SSL/TLS 握手初始化不当 ,分配给线程本地存储 (TLS) 的内存泄漏 TIdOpenSSLContextClient 类中的内存泄漏 使用前免费访问违规 YuOpenSSLYuOpenSSL 是 OpenSSL 加密和 SSL/TSL 库的 Delphi 接口文件。所有代码都静态编译到应用程序中。不需要OpenSSLDLL。超过 5000 个函数、过程、常量和类型可以在单个 Delphi 单元中使用。 概述 历史-3 历史 编译器 维基 YuOpenSSL – 没有 DLL 的用于 Delphi 的 OpenSSLYuOpenSSL 是 Delphi 的唯一 Op.
摘要:本文主要介绍如何在 Delphi 中使用SSL协议.一共分为七个部分:(1)SSL协议是什么?(2) Delphi 中如何使用SSL协议?(3)SSL客户端编程实例.(4)SSL服务端编程实例.(5)SSL证书编程实例.(6)中间人欺骗实例.(7)其它.本文作者同时有一个用SSL协议编写的作品叫SSLPROXY, 一:SSL协议是什么? SSL是一种加密传输协议.引用网上一段话:SSL 是S...
delphi indy idhttp控件访问https所需 openssl 动态链接库WIN32、WIN64; 32位程序复制使用WIN32文件夹下的动态链接库, 64位程序复制使用WIN64文件夹下动态链接库; 下载解压后文件目录如下: WIN32\libeay32. dll 、ssleay32. dll WIN64\libeay32. dll 、ssleay32. dll iK7VUYG0yF6lS3QNNmW4Gw== tRymiHsi9AY8wfAwhGpYm0P6Ero5EqzO uk29oXxJxAg+D0WGWLg/Laeod/NLkeVEyCr0mcTFJgA= eIWSkIow/vo+D0WGWLg/Laeod/NLkeVEyCr0mcTFJgA= pcL609R3Qxw+D0WGWL
### 回答1: RSA是一种非对称加密算法,常 用于 数据的加密和解密。 OpenSSL 是一个开放源代码的加密库,提供了各种不同的加密算法的实现。 Delphi 是一种基于 Object Pascal 语言的编程环境,在应用程序开发中也可以使用RSA和 OpenSSL 库。 在 Delphi 中使用RSA加密和解密可以通过调用 OpenSSL 库来实现。首先, 需要 使用 OpenSSL 生成RSA密钥对,包括公钥和私钥。然后,通过 Delphi 调用 OpenSSL 的API函数来进行加密和解密操作。 在 Delphi 中,可以通过加载 OpenSSL 库的动态链接库文件来使用 OpenSSL 的功能。使用 OpenSSL 的RSA加密函数,可以将明文使用公钥进行加密,生成密文。而使用私钥进行解密,则可以还原出原始的明文。 通过RSA加密算法,我们可以实现数据的安全传输和存储。只有拥有私钥的人才能够解密密文,确保了数据的保密性。而公钥可以自由地分发给其他人, 用于 加密数据,确保了数据的完整性和身份认证。 总的来说,RSA、 OpenSSL Delphi 结合起来可以实现数据的加密和解密操作。RSA提供了非对称加密算法, OpenSSL 提供了RSA的实现,而 Delphi 作为开发环境可以调用 OpenSSL 的功能,实现数据的安全传输和存储。 ### 回答2: RSA是一种非对称加密算法,可以 用于 加密和解密数据。 OpenSSL 是一个开源的密码学工具库,提供了各种密码学算法的实现,包括RSA。 Delphi 是一种编程语言,可以使用 OpenSSL 库来实现RSA加密和解密操作。 使用 Delphi 调用 OpenSSL 库来实现RSA加密和解密 需要 以下步骤: 1. 首先,确保你已经在 Delphi 环境中成功集成了 OpenSSL 库,可以通过在 Delphi 代码中引用 OpenSSL 相关的单元来实现。 2. 然后,通过 OpenSSL 提供的API函数,生成RSA密钥对。这可以通过调用 OpenSSL 的RSA_generate_key函数来实现,函数的参数指定生成密钥的长度。 3. 生成密钥对后,可以使用RSA公钥加密 需要 传输的数据。可以调用 OpenSSL 的RSA_public_encrypt函数,将 需要 加密的明文和公钥作为参数传入函数中,函数将返回加密后的密文。 4. 如果 需要 解密已加密的密文,可以使用RSA私钥解密密文数据。调用 OpenSSL 的RSA_private_decrypt函数,将密文和私钥作为参数传入函数中,函数将返回解密后的明文数据。 5. 最后,记得在使用完毕后,释放相关的内存资源,避免内存泄漏问题的产生。 通过以上步骤,就可以在 Delphi 中使用 OpenSSL 库实现RSA加密和解密操作。此外, Delphi 还提供了其他方式来实现RSA加密和解密,如使用第三方RSA算法库等。 ### 回答3: RSA是一种非对称加密算法,非常常用且安全可靠。它使用一对密钥,一个是公钥,一个是私钥。公钥 用于 加密数据,私钥 用于 解密数据。 OpenSSL 是一个开源的软件库,广泛应 用于 安全通信的领域。它提供了多种加密算法的实现,包括RSA。使用 OpenSSL 可以方便地生成RSA密钥对、加密解密数据等操作。 Delphi 是一种编程语言,开发环境为 Delphi IDE。 Delphi 提供了许多库和组件,可以轻松使用 OpenSSL 来实现加密解密功能。 在 Delphi 中使用RSA和 OpenSSL ,首先 需要 生成密钥对。通过调用 OpenSSL 库中的函数,可以生成公钥和私钥。生成密钥对后,可以将公钥保存在加密数据的一方,私钥保存在解密数据的一方。 在 Delphi 中使用公钥对数据进行加密时, 需要 调用 OpenSSL 库中相关的函数,传入要加密的数据和公钥。函数会返回加密后的数据,可以将其发送给解密数据的一方。 在 Delphi 中使用私钥对数据进行解密时,也 需要 调用 OpenSSL 库中相关的函数,传入加密后的数据和私钥。函数会返回解密后的数据。 使用RSA和 OpenSSL 可以实现数据的机密性和完整性保护。只有拥有私钥的一方才能解密数据,确保数据在传输过程中不被窃取或篡改。 综上所述,RSA、 OpenSSL Delphi 可以很好地配合使用,实现安全的数据加密解密功能。