def rsaEncrypt(self, data): rsa_key = self.getRsaPublicKey() rsa_chiper = PKCS1_OAEP.new(key=rsa_key, hashAlgo=SHA1, mgfunc=lambda x, y: pss.MGF1(x, y, SHA1)) return rsa_chiper.encrypt(data)
def decrypt(data: bytes, private_key: str, key_index: int): key = RSA.import_key(private_key) cipher_rsa = PKCS1_OAEP.new(key=key, hashAlgo=SHA256, mgfunc=lambda x, y: pss.MGF1(x, y, SHA256)) encrypted_aes_key_iv = (data[0:512] if key_index == 0 else data[512:1024] ) # RSA 4096 OAEP encrypts to 512 bytes aes_key_iv = cipher_rsa.decrypt( encrypted_aes_key_iv) # 32 bytes aes_key + 16 bytes aes_iv cipher_aes = AES.new(aes_key_iv[0:32], AES.MODE_CBC, aes_key_iv[32:]) return unpad(cipher_aes.decrypt(data[1024:]), AES.block_size)
def rsa_encrypt(self, data, key): data = bytes(data, 'utf-8') key = b64decode(key) key = RSA.importKey(key) cipher_rsa = PKCS1_OAEP.new(key=key, hashAlgo=SHA256.new(), mgfunc=lambda x,y: pss.MGF1(x,y, SHA1)) # cipher_rsa = PKCS1_v1_5.new(key=key) return cipher_rsa.encrypt(data)
def encrypt_rsa_oaep(data: bytes, pubkey: str) -> bytes: key = RSA.import_key(pubkey) cipher_rsa = PKCS1_OAEP.new( key=key, hashAlgo=SHA256, mgfunc=lambda x, y: pss.MGF1(x, y, SHA256) ) return cipher_rsa.encrypt(data)