def encrypt()

in Python/Encrypt credentials/Encryption sample/helper/asymmetric1024keyencryptionhelper.py [0:0]


    def encrypt(self, plain_text_bytes, modulus_bytes, exponent_bytes):
        ''' Encrypts the message with RSA, MGF and SHA hashes

        Args:
            plain_text_bytes (bytes): Message to be encrypted
            modulus_bytes (bytes): Modulus bytes returned from GET gateway API
            exponent_bytes (bytes): Exponent bytes returned from GET gateway API

        Returns:
            String: Encrypted credentials
        '''

        # Split the message into different segments, each segment's length is 60. So the result may be 60, 60, 60, ...
        has_incomplete_segment = len(
            plain_text_bytes) % self.SEGMENT_LENGTH != 0

        # Number of segments plain text bytes is sliced into
        segment_number = (len(plain_text_bytes) / self.SEGMENT_LENGTH) if not has_incomplete_segment else (
            (len(plain_text_bytes) / self.SEGMENT_LENGTH) + 1)

        # Convert to integer
        segment_number = int(segment_number)

        # Create a byte array for encrypted bytes
        encrypted_bytes = bytearray(
            [0] * (segment_number * self.ENCRYPTED_LENGTH))

        # For loop to run the encryption
        for i in range(0, segment_number):
            length_to_copy = None
            if i == segment_number - 1 and has_incomplete_segment:
                length_to_copy = len(plain_text_bytes) % self.SEGMENT_LENGTH
            else:
                length_to_copy = self.SEGMENT_LENGTH

            # Initialize segment byte array
            segment = bytearray([0] * length_to_copy)

            # Copy the array from src to dest array
            for k in range(length_to_copy):
                segment[k] = plain_text_bytes[k + (i * self.SEGMENT_LENGTH)]

            # Result of encryption
            segment_encrypted_result = self.encrypt_segment(
                modulus_bytes, exponent_bytes, segment)

            for j in range(0, len(segment_encrypted_result)):
                encrypted_bytes[(i * self.ENCRYPTED_LENGTH) +
                                j] = segment_encrypted_result[j]

        # Returns the decoded string message
        return base64.b64encode(encrypted_bytes).decode()