PHP Conference Japan 2024

gnupg_import

(PECL gnupg >= 0.3)

gnupg_import导入密钥

描述

gnupg_import(资源 $identifier, 字符串 $keydata): 数组|false

导入密钥keydata并返回包含导入过程信息的数组。

参数

identifier

gnupg标识符,来自对gnupg_init()gnupg的调用。

keydata

正在导入的数据密钥。

返回值

成功时,此函数返回关于导入过程的 info 数组。失败时,此函数返回false

示例

示例 #1 过程式 gnupg_import() 示例

<?php
$res
= gnupg_init();
$info = gnupg_import($res,$keydata);
print_r($info);
?>

示例 #2 OO gnupg_import() 示例

<?php
$gpg
= new gnupg();
$info = $gpg->import($keydata);
print_r($info);
?>

添加备注

用户贡献的备注 3 条备注

9
gst
3 年前
如果有人尝试从文件导入密钥,最终返回值为“false”,并且没有任何错误或警告。

gpg 模块的操作方式与命令行/bash 调用的 gpg 相同。

如果从 apache 下运行脚本,gpg 尝试访问它的 ~/.gnupg,该目录可能不存在于 apache 用户 www-data 或等效用户。

# su www-data -s /bin/bash -c "gpg"
gpg: 致命错误:无法创建目录“/var/www/.gnupg”:权限被拒绝

您只需要创建该文件夹并将其 chown 给 apache 用户 www-data 或等效用户。

# mkdir /var/www/.gnupg
# chown www-data:www-data /var/www/.gnupg
5
php at cdauth dot de
17 年前
返回数组包含以下值
(
[imported] => (int),
[unchanged] => (int),
[newuserids] => (int),
[newsubkeys] => (int),
[secretimported] => (int),
[secretunchanged] => (int),
[newsignatures] => (int),
[skippedkeys] => (int),
[fingerprint] => (string)
)

当传递无效内容时,所有值(甚至 skippedkeys)都为 0。然后指纹值不存在。
-2
dimitri at digirati dot com dot br
16 年前
我建议密钥可以在 shell 命令行中生成,然后使用这组命令导出密钥。

gpg --export -a "用户名" > public.key
gpg --export-secret-key -a "用户名" > private.key

使用它进行导入,并用于加密和解密。

<?php

$GnuPG
= new gnupg();

$PublicData = file_get_contents('public.key');
$PrivateData = file_get_contents('public.key');

$PublicKey = $GnuPG->import($PublicData);
$PrivateKey = $GnuPG->import($PrivateData);

echo
'公钥:',$PublicKey['fingerprint'],' & 私钥:',$PrivateKey['fingerprint'];

?>
To Top