openssl研究

GitHub - fries/android-external-openssl: Extensions to openssl shipped with android to suit openvpn needs.

GitHub - CyanogenMod/android_external_openssl: OpenSSL for Android

GitHub - robertying/openssl-curl-android: Compile openssl and curl for Android

一。OpenSSL 是一个开源的密码学库,它提供了丰富的密码学功能和安全协议的实现。在 OpenSSL 的源码中,crypto 和 ssl 是两个主要的模块,分别用于密码学功能和 SSL/TLS 协议的实现。

crypto 模块:

提供了丰富的密码学功能,包括对称加密算法(如 AES、DES)、哈希算法(如 MD5、SHA)、公钥加密算法(如 RSA、ECDSA)等。
实现了各种密码学协议,例如 SSL/TLS、S/MIME、PKCS 等。
提供了密码学相关的数据结构和函数,例如大数运算、随机数生成、证书操作等。
支持密码学算法的加密、解密、签名、验证、密钥生成等操作。
ssl 模块:

实现了 SSL/TLS 协议,提供了安全的通信通道,确保数据在传输过程中的保密性、完整性和认证性。
实现了 SSL/TLS 握手协议,用于建立安全连接、协商加密算法和密钥。
实现了 SSL/TLS 记录协议,用于将应用层数据分割成记录并按照协议要求进行加密和传输。
提供了 SSL/TLS 相关的数据结构和函数,例如 SSL 上下文、SSL 连接、握手阶段的函数等。
支持 SSL/TLS 的客户端和服务器的编程接口,方便应用程序进行 SSL/TLS 通信。
需要注意的是,crypto 模块提供了密码学相关的功能,而 ssl 模块则建立在 crypto 模块之上,使用密码学库来实现 SSL/TLS 协议。通过 OpenSSL 的 crypto 和 ssl 模块,开发者可以在自己的应用程序中实现各种密码学功能和安全的通信机制。

二。OpenSSL 的 crypto 模块提供了很多主要接口,用于执行各种密码学相关的操作。以下是一些主要的 crypto 接口:

Hash 函数接口:

EVP_MD_CTX_new() 和 EVP_MD_CTX_free():创建和释放哈希函数上下文。
EVP_DigestInit()、EVP_DigestUpdate() 和 EVP_DigestFinal():初始化、更新和完成哈希计算。
EVP_MD_size():获取哈希摘要的输出字节长度。
对称加密接口:

EVP_CIPHER_CTX_new() 和 EVP_CIPHER_CTX_free():创建和释放对称加密算法上下文。
EVP_CipherInit()、EVP_CipherUpdate() 和 EVP_CipherFinal():初始化、更新和完成对称加密算法的加密或解密操作。
EVP_CIPHER_key_length() 和 EVP_CIPHER_iv_length():获取对称加密算法的密钥长度和初始化向量长度。
随机数生成接口:

RAND_bytes():生成随机数字节序列。
RAND_pseudo_bytes():生成伪随机数字节序列。
公钥加密接口:

EVP_PKEY_new() 和 EVP_PKEY_free():创建和释放公钥(或私钥)对象。
EVP_PKEY_encrypt() 和 EVP_PKEY_decrypt():使用公钥(或私钥)加密或解密数据。
数字签名接口:

EVP_SignInit()、EVP_SignUpdate() 和 EVP_SignFinal():初始化、更新和完成数字签名操作。
EVP_VerifyInit()、EVP_VerifyUpdate() 和 EVP_VerifyFinal():初始化、更新和完成数字签名验证操作。
密钥对和证书操作:

RSA_generate_key():生成 RSA 密钥对。
EVP_PKEY_assign_RSA():将 RSA 密钥对赋值给 EVP_PKEY 对象。
EVP_PKEY_get1_RSA():从 EVP_PKEY 对象中获取 RSA 密钥对。
PEM_write_X509():将 X.509 格式的证书写入文件。
这些仅是 crypto 模块提供的一小部分接口示例,实际上还有很多其他函数和数据结构可以用于执行不同类型的密码学操作。开发者可以通过 OpenSSL 的官方文档和头文件来了解更多详细的接口信息。

三。

SSL 模块是 OpenSSL 中用于实现 SSL/TLS 协议的部分,它提供了一系列接口来支持 SSL/TLS 安全通信。以下是一些 SSL 模块对外提供的主要接口:

  1. 上下文(Context)操作接口:

    • SSL_CTX_new() 和 SSL_CTX_free():创建和释放 SSL 上下文对象。
    • SSL_CTX_set_options() 和 SSL_CTX_clear_options():设置和清除 SSL 上下文的选项。
    • SSL_CTX_use_certificate_file() 和 SSL_CTX_use_PrivateKey_file():设置 SSL 上下文的证书和私钥。
    • SSL_CTX_load_verify_locations():设置 SSL 上下文的 CA 证书位置。
  2. 连接(Connection)操作接口:

    • SSL_new() 和 SSL_free():创建和释放 SSL 连接对象。
    • SSL_set_fd() 和 SSL_get_fd():关联和获取 SSL 连接的套接字文件描述符。
    • SSL_connect() 和 SSL_accept():在客户端和服务器端建立 SSL 连接。
    • SSL_read() 和 SSL_write():读取和写入 SSL 加密通道上的数据。
    • SSL_shutdown():优雅地关闭 SSL 连接。
  3. 握手(Handshake)操作接口:

    • SSL_set_connect_state() 和 SSL_set_accept_state():设置 SSL 连接的握手状态。
    • SSL_do_handshake():执行 SSL 连接的握手过程。
  4. 加密(Encryption)和验证(Verification)接口:

    • SSL_get_cipher() 和 SSL_get_cipher_list():获取 SSL 连接使用的加密算法和加密套件列表。
    • SSL_get_peer_certificate() 和 SSL_get_peer_cert_chain():获取对端的证书和证书链。
    • SSL_get_verify_result():获取验证对端证书的结果。

这些仅是 SSL 模块提供的一小部分接口示例,实际上还有许多其他函数和数据结构可用于配置和操作 SSL/TLS 连接。开发者可以通过 OpenSSL 的官方文档和头文件来了解更多详细的接口信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用OpenSSL的EVP_CIPHER接口来进行文件加密。根据引用中的信息,您可以封装一个通用的加密和解密的DLL,该DLL可以支持OpenSSL 3.0支持的各种加密算法进行加密和解密操作。可以使用Python编写一个封装功能的函数来调用这个DLL。 如果您需要参考别人的源代码来实现文件加密,可以阅读和参考一些开源的信息安全实现,如PGP和OpenSSL,这些代码中包含了大量的信息安全实现的代码,对于实现文件加密会有很大的帮助。这可以通过引用中提到的信息安全编程指南来实现。 此外,如果您需要更详细的信息和示例代码,可以参考引用中提供的链接,该链接可能包含有关如何使用OpenSSL进行文件加密的更多信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Python调用-基于OpenSSL自己封装对称加密的DLL](https://blog.csdn.net/enhydraboy75/article/details/125092491)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [信息安全编程指南,对学术研究的有帮助](https://download.csdn.net/download/x1m2j3/3035767)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值