标签: php-openssl

AES 在 PHP 中使用 OpenSSL 加密/在 Node.js 中解密

我正在使用 PHP 和 Nodejs 使用 OpenSSL 进行对称加密。PHP 使用 OpenSSL 库,Node.js 解密基于实现的加密。问题是 Node.js 中解密的文本只是部分正确

用于加密的 PHP 函数

function encrypt($text, $pw, $base64 = true) {

    $method = 'aes-256-cbc';
    $iv_len = openssl_cipher_iv_length($method);
    $iv = openssl_random_pseudo_bytes($iv_len);
    
    $pw = substr(md5($pw),0,32);

    $cipher =  openssl_encrypt ($text ,$method ,$pw ,!$base64 ,$iv );

    if($base64) {
            $pw = base64_encode($pw);
            $iv = base64_encode($iv);
        }

    return array(
        'iv' => $iv,
        'pw' => $pw,
        'text' => $text,
        'cipher' => $cipher
    );
}
Run Code Online (Sandbox Code Playgroud)

nodejs中的解密

var cipher = new Buffer(data.cipher, 'base64');
var iv …
Run Code Online (Sandbox Code Playgroud)

php node.js php-openssl

5
推荐指数
1
解决办法
7958
查看次数

在openssl_public_encrypt()中获取密钥参数不是有效的公共密钥错误

$ publicKey =“ ../ssh/public/pub”; $ plaintext =“要加密的字符串”;

$pubKey = openssl_pkey_get_public($publicKey);

openssl_public_encrypt($plaintext, $encrypted, $pubKey);

echo $encrypted;   //encrypted string
Run Code Online (Sandbox Code Playgroud)

上面的代码生成以下错误

openssl_public_encrypt()[http://php.net/function.openssl-public-encrypt]:密钥参数不是有效的公用密钥[APP / controllers / supportservice_controller.php,第144行]

我使用以下命令使用openssl创建了密钥:

生成一个1024位的rsa私钥,要求输入密码以对其进行加密并将其保存到文件openssl genrsa -des3 -out / path / to / privatekey 1024

生成专用密钥的公用密钥并保存到文件

openssl rsa -in / path / to / privatekey -pubout -out / path / to / publickey

php encryption openssl public-key-encryption php-openssl

5
推荐指数
1
解决办法
4438
查看次数

Composer --> 错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败

我可以连接到 SSL 站点,通过 HTTPS 通过命令行安装 Composer。检查了 OPENSSL 版本SSL Version => OpenSSL/1.0.1j。那么问题出在哪里呢?想法?

这是原始输出。

[kunaaljain@localhost php]$ /opt/lampp/bin/php-5.6.3 composer.phar diagChecking composer.json: FAIL
the property name is required
the property description is required
No license specified, it is recommended to do so. For closed-source software you may use "proprietary" as license.
Checking platform settings: OK
Checking git settings: OK
Checking http connectivity: FAIL
[Composer\Downloader\TransportException] The "https://packagist.org/packages.json" file could not be downloaded: SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate …
Run Code Online (Sandbox Code Playgroud)

ssl lamp openssl composer-php php-openssl

5
推荐指数
1
解决办法
1万
查看次数

验证上传的文件是有效的 PEM 文件

我试图找出一种有效/优雅的方法来验证用户上传的文件是否是有效的 pem 文件,而无需依赖于扩展名的验证。任何人都可以做到这一点或有任何想法?

php openssl php-openssl

5
推荐指数
1
解决办法
3974
查看次数

使用 openSSL 在 PHP 中加密(大)文件

我正在尝试使用 AES 加密 PHP 中的(大)文件并研究使用 Mcrypt 和 OpenSSL,问题是到目前为止我发现的所有解决方案都只加密字符串,而我尝试加密的文件会触发最大值PHP 的内存限制(不幸的是不能设置得更高),我将如何实现这一目标?

php encryption file aes php-openssl

5
推荐指数
1
解决办法
7452
查看次数

PHP RSA密钥创建

我在创建/使用在PHP中创建和使用的RSA密钥时遇到问题.问题是,(公共和私人)密钥应该在不同服务器之间交换(例如,当移动用户帐户时).

现在,PHP的openssl-lib没有提供有关创建密钥的格式的任何详细信息.http://php.net/manual/en/function.openssl-pkey-export.php上的最新文档只是声明它是"PEM格式",但它没有说它是在PKCS#1还是PKCS#8

此外,私有密钥PEM的标头和预告片在PHP版本之间有所不同,如下面的代码所示:

<?php
$config = array(
    "digest_alg" => 'sha512',
        "private_key_bits" => 4096,
    "private_key_type" => OPENSSL_KEYTYPE_RSA
);
$keyPair = openssl_pkey_new($config);
$privateKey = NULL;
openssl_pkey_export($keyPair, $privateKey);
var_dump($privateKey);
$keyDetails = openssl_pkey_get_details($keyPair);
$publicKey = $keyDetails['key'];
var_dump($publicKey);
die();
?>
Run Code Online (Sandbox Code Playgroud)

将输出不同的东西:

PHP v 5.4:

string(3272) "-----BEGIN PRIVATE KEY-----
MIIJRAIBADANBgkqhkiG9w0BAQEFAASCCS4wggkqA//...
-----END PRIVATE KEY-----
"

string(800) "-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAO//...
-----END PUBLIC KEY-----
"
Run Code Online (Sandbox Code Playgroud)

PHP v 5.5:

string(3272) "-----BEGIN RSA PRIVATE KEY-----
MIIJRAIBADANBgkqhkiG9w0BAQEFAASCCS4wggkqA//...
-----END RSA PRIVATE KEY-----
"

string(800) "-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAO//...
-----END PUBLIC …
Run Code Online (Sandbox Code Playgroud)

php pki php-openssl

5
推荐指数
1
解决办法
3435
查看次数

在Windows上的Apache/PHP中禁用了OpenSSL支持

openssl用php7.1禁用了apache2.4

在phpinfo(); 结果给了我这个

禁用OpenSSL支持(安装ext/openssl)

  1. 我在php.ini中更改了这个

延长= php_openssl.dll

  1. 我使用WINDOWS CMD使用此代码

设置OPENSSL_CONF =/path/to/openssl.cnf

  1. 在CMD中使用时启用它,但在phpinfo()中禁用它;

php --ri openssl OpenSSL support => enabled OpenSSL Library Version => OpenSSL 1.0.2j 2016年9月26日Openssl default config => C:/jampp/php71/extras/ssl/openssl.cnf

它现在在CMD工作,但phpinfo(); 不在和laravel 5告诉我这个错误

调用未定义的函数openssl_encrypt()

谢谢

php windows apache laravel php-openssl

5
推荐指数
1
解决办法
6872
查看次数

调用未定义的函数openssl_decrypt

当我尝试使用POST向具有此行的脚本发出请求时:

$decrypted_data = openssl_decrypt($encrypted_data, 'AES-256-CBC', $key);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

致命错误:在第11行的mypath/usuario_webservice.php中调用未定义的函数openssl_decrypt()

经过一些研究后,常见的原因是为函数输入了错误的名称,或者我的Web服务器上没有安装openssl扩展名.事实证明,它是在我检查支持时安装的.那么,我还应该寻找什么呢?

php openssl php-openssl

4
推荐指数
2
解决办法
3万
查看次数

如何使用OpenSSL在PHP中使用AES-256 CBC加密明文?

我想在进入数据库之前加密敏感的用户数据,如我的php网站中的个人消息.我在互联网上研究了一下,我发现了一些要记住的重要事项:

  1. 永远不要使用mcrypt,它是放弃软件.

  2. AES基于Rijndael算法,至今尚未完整.

  3. AES也被NSA推荐并用于美国政府数据加密,但由于NSA推荐它,他们很可能很容易偷偷摸摸我的用户数据.

  4. Blowfish也没有中断,但速度慢且不太受欢迎.

所以,我决定先用AES-256 cbc试一试.但我仍然不确定我是否不应该认为Blowfish是一个更好的选择.所以欢迎任何建议.

我主要担心的是,如何在php中加密数据?我在php文档中找不到关于这个的好手册.实施它的正确方法是什么?

任何帮助都非常感谢.

php cryptography aes php-openssl

4
推荐指数
1
解决办法
1万
查看次数

Delphi 7 - DCPCrypt - TDCP_rijndael - DecryptString - 如何使其工作?

我正在 PHP 中加密文本(openssl_encrypt / 'aes-256-cbc'),然后尝试在 Delphi 7 中解密(DCPCrypt / TDCP_rijndael)。

PHP脚本文件以ANSI编码保存,希望传输的字符串(它是REST API Web服务)与Delphi兼容。

然而,Delphi 解密产生了错误的结果,我猜测代码中有问题。如果您能看一下并发现我在 Delphi 方面的错误,我将不胜感激:

PHP代码:

function encrypt($key, $payload) {
    $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
    $encrypted = openssl_encrypt($payload, 'aes-256-cbc', $key, 0, $iv);
    return base64_encode($encrypted . '::' . $iv);
}

function decrypt($key, $garble) {
        list($encrypted_data, $iv) = explode('::', base64_decode($garble), 2);
        return openssl_decrypt($encrypted_data, 'aes-256-cbc', $key, 0, $iv);
}
Run Code Online (Sandbox Code Playgroud)

德尔福代码:

var
  DCP_rijndael: TDCP_rijndael;

const
  cPASSWORD = 'myownpassword';

function Decrypt(AStr: string): string;
var
  d, s, iv: String;
  p: Integer;
begin
  d := Base64DecodeStr(AStr);
  p …
Run Code Online (Sandbox Code Playgroud)

delphi encryption delphi-7 encryption-symmetric php-openssl

4
推荐指数
1
解决办法
2994
查看次数