2024 年日本 PHP 研討會

gnupg_import

(PECL gnupg >= 0.3)

gnupg_import匯入金鑰

說明

gnupg_import(資源 $identifier, 字串 $keydata): 陣列|false

匯入金鑰 keydata 並返回一個包含匯入過程資訊的陣列。

參數

identifier

gnupg 識別符,來自 gnupg_init()gnupg 類別的呼叫。

keydata

要匯入的金鑰資料。

返回值

成功時,此函式返回一個關於匯入過程的資訊陣列。失敗時,此函式返回 false

範例

範例 #1 程序式 gnupg_import() 範例

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

範例 #2 物件導向 gnupg_import() 範例

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

新增註記

使用者貢獻的註記 3 則註記

gst
3 年前
如果有人嘗試從檔案匯入金鑰,卻得到返回值 "false",而且完全沒有任何錯誤或警告訊息。

gpg 模組仍然以與命令列/bash 呼叫 gpg 相同的方式運作。

如果您從 Apache 下執行腳本,gpg 會嘗試訪問它的 ~/.gnupg,而 Apache 使用者 www-data 或同等使用者可能不存在這個目錄。

# su www-data -s /bin/bash -c "gpg"
gpg: 致命錯誤:無法建立目錄 '/var/www/.gnupg':權限被拒絕

您只需要建立該資料夾,並將其所有權更改為 Apache 使用者 www-data 或同等使用者。

# mkdir /var/www/.gnupg
# chown www-data:www-data /var/www/.gnupg
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。此時 fingerprint 值不存在。
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