问题标签 [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.

0 投票
0 回答
1228 浏览

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 正确。但仍然没有运气。

0 投票
0 回答
168 浏览

php - AES 与随机 IV 的冲突

假设:我的加密/解密机制出现故障,整数明文消息 Pi1 被加密,后来被解密成整数明文 Pi2。

技术环境:我使用 AES 128 位和随机 IV 进行加密/解密。每天更换钥匙。我使用 openssl php 扩展。

实际问题:我加密了 Pi1,但随后我将其解密为 Pi2。这些分别是 120000 和 120100 左右的数字。我不知道是使用密钥(前一天)还是密钥(今天)来解密消息。

问题:有没有可能

  1. 用 k 加密的 Pi1 用 k 解密到 Pi2?或者
  2. 用 k(today-n) 加密的 Pi1 用 k(today) 解密到 Pi2?

谢谢

0 投票
0 回答
28 浏览

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 模组

我不确定我是否做了这些,我想知道这是否是我错误的原因?

0 投票
2 回答
1993 浏览

php - PearMailer、PHP7 和 OpenSSL 无法连接到 gmail,出现未知错误

我正在建立一个网站,其中一部分需要发送电子邮件(一个用于帐户密码重置链接,另一个用于一般用户管理员联系)。我一直在使用 PearMailer 通过 GMail 帐户发送电子邮件,而且效果很好……直到现在。出于某种原因,它停止发送电子邮件,它给了我这个非常无益的错误:

openSSL 已启用,并且我使用的所有凭据都是正确的(我可以使用它们手动登录该 GMail 帐户)。

这是我正在使用的代码,其中 $config 保存帐户凭据,而 $_POST 数据来自“联系我们”表单(在我开发时忽略它缺乏清理):

它应该向我的 GMail 帐户发送一封来自它自己的电子邮件,但它却给了我上面提到的错误。更改往返地址后,无论如何,它仍然给我那个错误。这特别奇怪,因为我一直在使用几乎相同的代码来发送密码重置链接,并且直到现在都可以正常工作;当然,它现在也无法连接。

我找不到任何说 Google 已更改其设置的信息,而且我绝对没有超过 smtp.gmail.com 应该允许的每天 2,000 条消息的限制,所以这里发生了什么?

0 投票
1 回答
1435 浏览

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

0 投票
2 回答
1478 浏览

php - 加密字符串写入文件,然后在 PHP 中解密文件

我有一个小问题,我使用“openssl_encrypt”加密包含 HTML 的文本字符串,将该字符串写入文件,然后在单独的页面中,我使用“openssl_decrypt”解密整个文件。我确保使用相同的加密密钥、相同的方法和相同的 iv。我想这是加密的新手,我只是看不到。预先感谢您的任何帮助!

这是一些示例代码:

0 投票
0 回答
530 浏览

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 解密。

谢谢

0 投票
1 回答
618 浏览

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来解决我的问题吗?

非常感谢提前
让我知道您是否需要更多信息

0 投票
1 回答
1895 浏览

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# 中实现相同的目标。

0 投票
3 回答
10066 浏览

php - 使用 MCRYPT_RIJNDAEL_256 将 mcrypt_encrypt 替换为 openssl_encrypt

你们可能知道,扩展 mcrypt 将在 php 7.1 上被弃用。

我用来维护一个“遗留”应用程序,我希望最终迁移到这个版本,所以我运行测试并验证我不能再获得 100% 的覆盖率,因为有一段代码使用以下代码:

我尝试使用此代码将这段代码移植到 openssl_encrypt

但我有两个问题:

  1. IV 长度应该是 16 个字符(而 md5 给了我 32 个字符),所以我得到一个 PHP 警告
  2. 输出不一样(即使我截断为 16 个字符)

任何人都有类似的问题(或知道如何解决它?)

顺便说一句:我正在使用 PHP 的开发主版本(应该是 7.1.0 alpha 3)。