如何用PowerShell处理PEM公钥文件,转为带引号单行格式
PowerShell实现PEM公钥转指定单行格式
以下是完成格式转换的完整PowerShell代码,可将你的PEM公钥转换成目标的分段带引号单行格式:
$File = "C:\pathto\some.pem" # 读取文件并合并为单个字符串,保留原始换行结构 $content = Get-Content $File -Raw # 精准提取BEGIN和END标记之间的公钥内容 $pubKeyContent = [regex]::Match($content, '(?<=-----BEGIN PUBLIC KEY-----\r?\n)(.*?)(?=\r?\n-----END PUBLIC KEY-----)').Value # 移除所有换行、空格等空白字符,得到连续的Base64字符串 $cleanedKey = $pubKeyContent -replace '\s+', '' # 按要求拆分字符串并添加格式 $segments = @() # 处理第一段,添加指定前缀 $firstSegment = "k=rsa; p=$($cleanedKey.Substring(0, 64))" $segments += "`"$firstSegment`"" # 处理剩余内容,按64字符每段拆分 for ($i = 64; $i -lt $cleanedKey.Length; $i += 64) { $endIndex = [Math]::Min($i + 64, $cleanedKey.Length) $segments += "`"$($cleanedKey.Substring($i, $endIndex - $i))`"" } # 拼接成单行结果 $result = $segments -join ' ' # 输出结果,也可使用 Out-File 将结果保存到文件 $result
代码说明:
- 使用
-Raw参数读取文件,确保内容作为单个字符串处理,简化正则匹配逻辑 - 通过正向零宽断言的正则表达式,精准提取公钥核心内容,避免捕获多余标记行
- 移除所有空白字符后,按照示例中的64字符分段规则拆分字符串
- 为第一段添加指定前缀,所有分段用双引号包裹,最终用空格拼接成目标单行格式
内容的提问来源于stack exchange,提问作者Juan M
相关产品推荐
相关产品推荐

