【问题标题】:Stripping headers and footers剥离页眉和页脚
【发布时间】:2019-11-15 09:34:17
【问题描述】:

在 python 中执行此操作(我在 Ruby 中执行此操作)最优雅的方式是什么。

private_key = base64data.to_s.sub('-----BEGIN RSA PRIVATE KEY-----', '')
private_key = private_key.sub('-----END RSA PRIVATE KEY-----', '')

基本上我需要去掉私钥字符串的页眉和页脚。

问候。

【问题讨论】:

  • base64data.to_s.delete('-----BEGIN RSA PRIVATE KEY-----') 可能是 Ruby 中的正确方法。

标签: python ruby


【解决方案1】:

直截了当:

private_key = private_key.replace('-----BEGIN RSA PRIVATE KEY-----', '')
private_key = private_key.replace('-----END RSA PRIVATE KEY-----', '')

【讨论】:

  • 不错 - 比 Ruby 更优雅。开始爱上 Python!谢谢
【解决方案2】:

在 Python 中 str.replace() 等价于 Ruby 中的 sub

private_key = base64data.replace('-----BEGIN RSA PRIVATE KEY-----', '')
private_key = private_key.replace('-----END RSA PRIVATE KEY-----', '')

或者使用正则表达式:

import re
private_key = re.sub(r'-----(BEGIN|END) RSA PRIVATE KEY-----', '', base64data)

【讨论】:

  • 或者 - 可以反过来想,得到介于... re.search('BEGIN(.*?)END', base64data).group(1) 之间的文本,但外部位完全拼写出来 ;)
【解决方案3】:

pyasn1 documentation 有一个很好的衬里。打开密钥文件,在读取过程中删除第一行和最后一行,然后将其他所有内容重新连接在一起。

with open('.ssh/id_rsa') as key_file:
    b64_serialisation = ''.join(key_file.readlines()[1:-1])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-30
    • 2011-08-17
    • 2017-03-20
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多