将一行私钥转换为多行(原始)

  • 本文关键字:原始 转换 一行 私钥 sed
  • 更新时间 :
  • 英文 :


我必须将RSA私钥转换为一行以存储在密码管理器中(密码状态(。我用tr -d 'n' < id_rsa转换为单行,cat id_rsa.line | sed -e "s/-----BEGIN RSA PRIVATE KEY-----/&n/" -e "s/S{64}/&n/g"转换回原来的多行。

转换回多行在 Ubuntu 上有效,但在 Mac 上不起作用。为什么这在Macbook上不起作用

请尝试:

LF=$'\x0A'
cat id_rsa.line | sed -e "s/-----BEGIN RSA PRIVATE KEY-----/&${LF}/" -e "s/-----END RSA PRIVATE KEY-----/${LF}&${LF}/" | sed -e "s/[^[:blank:]]{64}/&${LF}/g"

LF=$'\x0A'
cat id_rsa.line | sed -e "s/-----BEGIN RSA PRIVATE KEY-----/&${LF}/" -e "s/-----END RSA PRIVATE KEY-----/${LF}&${LF}/" | fold -w 64

非 GNUsed不会将替换中的 "" 解释为换行符。 解决方法是将变量分配给换行符并将其嵌入替换中。
请注意,我保留了UUC以提高可读性:P。

建立在tshiono的答案之上。编写了一个 shell 脚本来实现相同的目的:

#!/bin/sh
# Convert single-line certificate to multi-line certificate
echo "$1" > secret
LF=$'\x0A'; cat secret | sed -e "s/-----BEGIN RSA PRIVATE KEY-----/&${LF}/" -e "s/-----END RSA PRIVATE KEY-----/${LF}&${LF}/" | sed -e "s/[^[:blank:]]{64}/&${LF}/g" > secret-temp
x=`echo "-----BEGIN RSA PRIVATE KEY-----"; cat secret-temp; echo "-----END RSA PRIVATE KEY-----"`
echo "$x" > secret.pem
echo "nn## Private Key ##nn"
cat secret.pem

最新更新