当前位置: 首页>>代码示例>>Python>>正文


Python RSAKey.write_private_key方法代码示例

本文整理汇总了Python中paramiko.rsakey.RSAKey.write_private_key方法的典型用法代码示例。如果您正苦于以下问题:Python RSAKey.write_private_key方法的具体用法?Python RSAKey.write_private_key怎么用?Python RSAKey.write_private_key使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在paramiko.rsakey.RSAKey的用法示例。


在下文中一共展示了RSAKey.write_private_key方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: KeyPair

# 需要导入模块: from paramiko.rsakey import RSAKey [as 别名]
# 或者: from paramiko.rsakey.RSAKey import write_private_key [as 别名]
class KeyPair():
    KEY_SIZE = 4096
    SSH_PUB_KEY_PREFIX = 'ssh-rsa '

    def __init__(self, private_key=None, private_key_path=None, pub_data=None, _key=None, password=None):
        if private_key:
            self._key = RSAKey(file_obj=io.StringIO(private_key))
        elif private_key_path:
            self._key = RSAKey(filename=private_key_path, password=password)
        elif pub_data:
            if pub_data.startswith(self.SSH_PUB_KEY_PREFIX):
                pub_data = pub_data[len(self.SSH_PUB_KEY_PREFIX):]
            self._key = RSAKey(data=b64decode(pub_data.encode('utf-8')))
        elif _key:
            self._key = _key
        else:
            self._key = RSAKey.generate(self.KEY_SIZE)

    def public_key_str(self):
        return self.SSH_PUB_KEY_PREFIX + self._key.get_base64()

    def private_key_str(self):
        buf = io.StringIO()
        self._key.write_private_key(buf)
        buf.seek(0)
        private = buf.read()
        return private

    def get_keypair_str(self):
        return self.public_key_str(), self.private_key_str()

    def as_paramiko(self):
        return self._key

    def as_pycrypto(self):
        if self._key.can_sign():
            return RSA.importKey(self.private_key_str())
        else:
            return RSA.importKey(self.public_key_str())

    def encrypt(self, data, encoding='utf-8', encode_payload=False):
        if isinstance(data, str) and encoding:
            data = data.encode(encoding)
        cipher = PKCS1_OAEP.new(self.as_pycrypto())
        ciphertext = cipher.encrypt(data)
        if encode_payload:
            return base64.b64encode(ciphertext).decode('utf-8')
        else:
            return ciphertext

    def decrypt(self, ciphertext, encoding='utf-8'):
        if isinstance(ciphertext, str):
            ciphertext = base64.b64decode(ciphertext.encode('utf-8'))

        cipher = PKCS1_OAEP.new(self.as_pycrypto())
        data = cipher.decrypt(ciphertext)
        if encoding:
            text = data.decode(encoding)
        return text

    def to_file(self, path, password=None):
        if self._key.can_sign():
            self._key.write_private_key_file(path, password=password)
开发者ID:jdotpy,项目名称:pycloud,代码行数:65,代码来源:security.py


注:本文中的paramiko.rsakey.RSAKey.write_private_key方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。