如何在不使用本地存储(在〜/ .gpg下)的情况下从gpg私有公钥获取公钥?

问题描述:

Look to Subj:如何在不使用本地存储(在〜/ .gpg下)的情况下从gpg私有公钥获取公钥?如何在不使用本地存储(在〜/ .gpg下)的情况下从gpg私有公钥获取公钥?

该解决方案不能满足要求:

 
    $ gpg --import priv.key 
    $ gpg --export $KEYID >pub.key 
    $ gpg --delete-secret-and-public-key $KEYID 

我不明白你为什么不快乐与你已经想出了解决方案,但如果由于某种原因你真的想避免搞乱你的个人钥匙扣,我可以提供别的东西:

gtmp=$(mktemp -d) 
gpg --homedir $gtmp --import key 
gpg --homedir $gtmp --export key > pub.gpg 
rm -rf $gtmp 

或者作为一种方便的BASH功能:

# Requires keyfile as 1st argument; optional 2nd argument is output file 
gpg_priv_to_pub(){ 
    g=$(mktemp -d) 
    infile=$1 
    [[ $# > 1 ]] && outfile=$2 || outfile=${1%.*}_pub.gpg 
    gpg --homedir $g --import "$infile" 2>/dev/null 
    KEYID=$(gpg --homedir $g -k --with-colons | awk -F: '/^pub/{print $5}') 
    gpg --homedir $g --export $KEYID > "$outfile" 
    rm -rf $g 
    echo "Public key $KEYID extracted from '$infile' and saved to '$outfile'" 
    }