本文整理汇总了Python中paramiko.rsakey.RSAKey.get_base64方法的典型用法代码示例。如果您正苦于以下问题:Python RSAKey.get_base64方法的具体用法?Python RSAKey.get_base64怎么用?Python RSAKey.get_base64使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类paramiko.rsakey.RSAKey
的用法示例。
在下文中一共展示了RSAKey.get_base64方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: KeyPair
# 需要导入模块: from paramiko.rsakey import RSAKey [as 别名]
# 或者: from paramiko.rsakey.RSAKey import get_base64 [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)