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

4

请看主题:如何在不使用本地存储(在~/.gpg下)的情况下从gpg中获取私钥公钥?

以下解决方案不能满足要求:

  $ gpg --import priv.key
  $ gpg --export $KEYID >pub.key
  $ gpg --delete-secret-and-public-key $KEYID
注:$KEYID是指私钥的ID号。
1个回答

9
我不明白为什么您对已经想出的解决方案不满意,但如果您真的想避免操作个人密钥环的话,我可以提供其他方法:
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'"
  }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接