如何通过Bash脚本从OpenSSL输出中提取RSA公钥模数?
从OpenSSL公钥文本输出中提取RSA模数的Shell方法
方法一:直接用OpenSSL内置参数提取(推荐)
无需解析格式化文本,OpenSSL原生支持直接导出模数,命令简洁且稳定性高:
openssl rsa -pubin -in key_rsa_pub_1024.pub -modulus -noout
输出为单行十六进制模数,示例:
Modulus=C5F34BC7A3C0237A0ED4F33E07064A1E7C9DED4D238F4B006FB CF3053B622E350078D2AF7F7AF0FEE3C037F6C3584F3491B791A1323ED528ABF75D5EE6BA1476B884D6452D48476853395455D370EFF89209787731D6EEE56F8E594DC2401F6D7B32C7B691C4759E95D6D7D93960F713D5954EFF4B7DDCE8FDB0A1255732F5FF
方法二:解析OpenSSL文本输出(awk实现)
如果必须处理-text参数的输出,可通过awk筛选并拼接模数内容:
openssl rsa -pubin -inform PEM -in key_rsa_pub_1024.pub -text | awk ' /Modulus:/ { flag=1; next } /Exponent:/ { flag=0 } flag { gsub(/^\s+|:|\n/, "", $0); printf "%s", $0 } END { print "" } '
该命令会跳过Modulus:和Exponent:行,将模数的多行十六进制内容拼接为单行,自动去除空格与冒号。
方法三:解析OpenSSL文本输出(sed+tr实现)
用sed筛选模数所在区间,再通过tr清理换行符与多余符号:
openssl rsa -pubin -inform PEM -in key_rsa_pub_1024.pub -text | sed -n '/Modulus:/,/Exponent:/{ /Modulus:/!{ /Exponent:/!s/^\s*//;s/://g;p } }' | tr -d '\n'
内容的提问来源于stack exchange,提问作者basangouda46
相关产品推荐
相关产品推荐

