php中的RSA令人困惑

php中的RSA令人困惑,php,encryption,cryptography,openssl,rsa,Php,Encryption,Cryptography,Openssl,Rsa,我在php中搜索RSA。在php中使用RSA加密/解密文本,在该网站中我找到了我要搜索的内容: 但是第一个和第二个答案是不同的!第一个答案是库(外部文件),但第二个答案是内置命令openssl_public_encrypt() 那么库(外部文件)和openssl_public_encrypt()有什么不同呢。 因为库(外部文件)可以使用RSA加密,并且只能使用RSA加密,但是第二个是openssl! 我不明白openssl和RSA做了什么 和都是库。当然,用于PHP的OpenSSL库始终使用用

我在php中搜索RSA。在php中使用RSA加密/解密文本,在该网站中我找到了我要搜索的内容:

但是第一个和第二个答案是不同的!第一个答案是库(外部文件),但第二个答案是内置命令openssl_public_encrypt()

那么库(外部文件)和openssl_public_encrypt()有什么不同呢。 因为库(外部文件)可以使用RSA加密,并且只能使用RSA加密,但是第二个是openssl! 我不明白openssl和RSA做了什么

和都是库。当然,用于PHP的OpenSSL库始终使用用C编写的外部库。在使用phpseclib时,您似乎可以选择使用PHP代码或OpenSSL外部库(在仔细查看1615903提供的源代码之后)

请注意,OpenSSL是一个广泛的项目,包括SSL的实现(例如,由Apache web服务器的mod_SSL模块使用)、支持PKI和CMS的相当通用的加密库以及使用这些功能的命令行。所以也许这就是让你困惑的地方;OpenSSL作为加密库用于此项目,它不是由命令行接口调用的


OpenSSL是一个广泛使用的库(您希望它提供的安全性比它实际提供的更好)。对于加密操作,C代码比PHP代码快得多;大多数脚本语言都不太适合加密操作。

phpseclib在RSA方面比OpenSSL有两个优势。至少我能在脑海里想到:

  • 更好的键格式支持。OpenSSL仅支持PKCS1或PKCS8格式的密钥。phpseclib支持这些密钥和PuTTY格式的密钥以及XML签名密钥。还有原始钥匙
  • 您可以在phpseclib的SSH、SFTP和X.509实现中使用Crypt_RSA对象

该库还使用openssl进行加密/解密:什么!哈哈,这是新的…但在回答中的评论,所以我可以接受:)