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
可以很好地配合使用,实现安全的数据加密解密功能。