问题标签 [php-openssl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 无法在 PHP 5.6.22 中启用 openssl
我在 XAMPP 和 PHP 5.4.19 上运行我的应用程序,当我尝试升级到 PHP 5.6.22 时,我无法启用 openssl。
从这里下载的线程安全二进制文件:http: //windows.php.net/downloads/releases/php-5.6.22-Win32-VC11-x86.zip
除了 openssl_encrypt() 表示未定义函数的 openssl 之外,我能够升级我的 PHP 版本。
我仔细检查了 php.ini 是否取消注释 extension=php_openssl.dll 但仍然没有运气。
还通过评论其他扩展来检查它们,它们按预期工作。
在 phpinfo 中,我一直可以看到 OpenSSL disabled ( install ext/openssl) 消息。
我确保需要的 dll 正确。但仍然没有运气。
php - AES 与随机 IV 的冲突
假设:我的加密/解密机制出现故障,整数明文消息 Pi1 被加密,后来被解密成整数明文 Pi2。
技术环境:我使用 AES 128 位和随机 IV 进行加密/解密。每天更换钥匙。我使用 openssl php 扩展。
实际问题:我加密了 Pi1,但随后我将其解密为 Pi2。这些分别是 120000 和 120100 左右的数字。我不知道是使用密钥(前一天)还是密钥(今天)来解密消息。
问题:有没有可能
- 用 k 加密的 Pi1 用 k 解密到 Pi2?或者
- 用 k(today-n) 加密的 Pi1 用 k(today) 解密到 Pi2?
谢谢
php - OpenSSL 只生成公钥
这是我第一次尝试加密。这是我的代码:
我收到以下错误;
警告:openssl_pkey_export_to_file(): cannot get key from parameter 1 in C:\xampp\htdocs\PHP\25000.php on line 40
警告:openssl_pkey_get_details() 期望参数 1 是资源,布尔值在第 43 行的 C:\xampp\htdocs\PHP\25000.php 中给出
警告:openssl_free_key() 期望参数 1 是资源,布尔值在第 48 行的 C:\xampp\htdocs\PHP\25000.php 中给出
我已经搜索过了。我发现我必须做以下事情:
- 在 XAMPP 中安装 OpenSSL
- 打开PHP和 Apache SSL 模组
我不确定我是否做了这些,我想知道这是否是我错误的原因?
php - PearMailer、PHP7 和 OpenSSL 无法连接到 gmail,出现未知错误
我正在建立一个网站,其中一部分需要发送电子邮件(一个用于帐户密码重置链接,另一个用于一般用户管理员联系)。我一直在使用 PearMailer 通过 GMail 帐户发送电子邮件,而且效果很好……直到现在。出于某种原因,它停止发送电子邮件,它给了我这个非常无益的错误:
openSSL 已启用,并且我使用的所有凭据都是正确的(我可以使用它们手动登录该 GMail 帐户)。
这是我正在使用的代码,其中 $config 保存帐户凭据,而 $_POST 数据来自“联系我们”表单(在我开发时忽略它缺乏清理):
它应该向我的 GMail 帐户发送一封来自它自己的电子邮件,但它却给了我上面提到的错误。更改往返地址后,无论如何,它仍然给我那个错误。这特别奇怪,因为我一直在使用几乎相同的代码来发送密码重置链接,并且直到现在都可以正常工作;当然,它现在也无法连接。
我找不到任何说 Google 已更改其设置的信息,而且我绝对没有超过 smtp.gmail.com 应该允许的每天 2,000 条消息的限制,所以这里发生了什么?
codeigniter-3 - 在 verify_peer 和 verify_peer_name 中将 OpenSSL 设置为 false
我需要帮助。我得到了许多关于 PHP 5.6 必须手动设置为 openSSL 功能的文档。它说“通过将 verify_peer 上下文选项设置为 FALSE 来禁用请求的对等证书验证,并通过将 verify_peer_name 上下文选项设置为 FALSE 来禁用对等名称验证”。但我不知道在哪里以及如何应用这些设置。我正在使用 PHP CodeIgniter 3 并想发送电子邮件,但在 fsockopen() 中出现错误。请你帮助我好吗?谢谢你的回答,我很感激 :D
php - 加密字符串写入文件,然后在 PHP 中解密文件
我有一个小问题,我使用“openssl_encrypt”加密包含 HTML 的文本字符串,将该字符串写入文件,然后在单独的页面中,我使用“openssl_decrypt”解密整个文件。我确保使用相同的加密密钥、相同的方法和相同的 iv。我想这是加密的新手,我只是看不到。预先感谢您的任何帮助!
这是一些示例代码:
java - 用 php openssl 加密和用 Java 解密
我正在尝试用 php open_ssl 加密一个字符串,然后用 Java 解密它。我以为我有点明白发生了什么,但显然不是。
起初我无法让算法匹配。据我所知,openssl_private_encrypt() 正在使用 RSA,虽然文档是关于 PKCS1_PADDING 的,但从我读到的内容看来,它似乎已更改为使用 PKCS5/7 以变得更加安全。而且我无法使用 RSA/NONE/PKCS5 或 PKCS7 获得任何 Java 密码。
但我认为我通过使用 NoPadding 并自己填充块取得了成功。这是我使用 openssl 从 DER 转换为 PEM 的现有 512 位密钥。我有一个测试字符串
我能够在 php 中读取私钥并使用
然后回到Java中,我能够正确解密该字符串使用
所以我想我可以让事情变得有用。但是,然后我稍微更改了测试字符串,例如最后一个 'f' 到 'g'
然后我在解密时得到了完全的垃圾。虽然没有错误。如果我只是更改了第一个字符,它仍然可以正确解密。
在这一点上,我什至不确定我不明白的是什么。但是有没有办法实现我最初的目标?用 php open_ssl 加密,用 Java 解密。
谢谢
php - 使用 DER 格式的密钥在 PHP 上签署文档
我需要在 PHP 上签署 PDF 文档,我正在使用 TCPDF 库来做
问题是我的.CER和我的.Key文件是DER格式,如果是这种格式,openssl_pkcs7_sign()函数可以加载私钥
如果我在终端上使用 openssl 命令将密钥从二进制DER格式转换为ASCII ,一切正常,但我不想使用exec函数通过 PHP 调用系统函数。
经过一点研究,我发现了这个问题: Load a .key file from DER format to PEM with PHP On 答案建议打开文件,获取内容并使用转换。
但是当我使用这个函数来转换我的数据时,结果与控制台上由openssl生成的文件不同,并且函数openssl_pkcs7_sign()再次向我抛出错误
更新
这是我转换文件的 PHP 代码:
这是我的openssl命令:
对此有解释吗?
正确的方法是如何做到的?
我应该使用exec来解决我的问题吗?
非常感谢提前
让我知道您是否需要更多信息
c# - PHP openssl_encrypt c# 实现
我正在用 C# 开发一个集成,它将 Office365 分发列表同步到用 PHP 编写的 Sendy (sendy.co)。
在 PHP 应用程序中,一些 ID 被加密,我想在 C# 中实现相同的功能,这样我就可以使用他们的 API 进行通信,而无需查找“秘密”ID。
这是他们的应用程序中计算这些 ID 的 PHP 代码(我替换了密码):
我通过在某处托管 PHP 脚本并从我的 C# 应用程序中调用它来克服这个“问题”,但我想让它成为开源的,所以我希望将它集成到应用程序中。
我想我必须从 .NET 开始AesCryptoServiceProvider
,但我似乎无法做到正确(我得到关于密钥长度和内容的例外情况)。
到目前为止,我试过这个:
然而,这会引发一个异常,指出 IV 与算法的块大小不匹配。
我想 PHP 中的 openssl_encrypt 方法从示例中给定的 API KEY 派生出实际的 IV(因此 $password 参数),但我找不到太多关于它的文档以便能够在 C# 中实现相同的目标。
php - 使用 MCRYPT_RIJNDAEL_256 将 mcrypt_encrypt 替换为 openssl_encrypt
你们可能知道,扩展 mcrypt 将在 php 7.1 上被弃用。
我用来维护一个“遗留”应用程序,我希望最终迁移到这个版本,所以我运行测试并验证我不能再获得 100% 的覆盖率,因为有一段代码使用以下代码:
我尝试使用此代码将这段代码移植到 openssl_encrypt
但我有两个问题:
- IV 长度应该是 16 个字符(而 md5 给了我 32 个字符),所以我得到一个 PHP 警告
- 输出不一样(即使我截断为 16 个字符)
任何人都有类似的问题(或知道如何解决它?)
顺便说一句:我正在使用 PHP 的开发主版本(应该是 7.1.0 alpha 3)。