encrypt(data, [pad], [padmode]) -> bytes data : bytes to be encrypted pad : Optional argument for encryption padding. Must only be one byte padmode : Optional argument for overriding the padding mode. The data must be a multiple of 8 bytes and will be encrypted with the already specifie
(self, data, pad=None, padmode=None)
| 761 | key.setIV(IV) |
| 762 | |
| 763 | def encrypt(self, data, pad=None, padmode=None): |
| 764 | """encrypt(data, [pad], [padmode]) -> bytes |
| 765 | |
| 766 | data : bytes to be encrypted |
| 767 | pad : Optional argument for encryption padding. Must only be one byte |
| 768 | padmode : Optional argument for overriding the padding mode. |
| 769 | |
| 770 | The data must be a multiple of 8 bytes and will be encrypted |
| 771 | with the already specified key. Data does not have to be a |
| 772 | multiple of 8 bytes if the padding character is supplied, or |
| 773 | the padmode is set to PAD_PKCS5, as bytes will then added to |
| 774 | ensure the be padded data is a multiple of 8 bytes. |
| 775 | """ |
| 776 | ENCRYPT = des.ENCRYPT |
| 777 | DECRYPT = des.DECRYPT |
| 778 | data = self._guardAgainstUnicode(data) |
| 779 | if pad is not None: |
| 780 | pad = self._guardAgainstUnicode(pad) |
| 781 | # Pad the data accordingly. |
| 782 | data = self._padData(data, pad, padmode) |
| 783 | if self.getMode() == CBC: |
| 784 | self.__key1.setIV(self.getIV()) |
| 785 | self.__key2.setIV(self.getIV()) |
| 786 | self.__key3.setIV(self.getIV()) |
| 787 | i = 0 |
| 788 | result = [] |
| 789 | while i < len(data): |
| 790 | block = self.__key1.crypt(data[i:i+8], ENCRYPT) |
| 791 | block = self.__key2.crypt(block, DECRYPT) |
| 792 | block = self.__key3.crypt(block, ENCRYPT) |
| 793 | self.__key1.setIV(block) |
| 794 | self.__key2.setIV(block) |
| 795 | self.__key3.setIV(block) |
| 796 | result.append(block) |
| 797 | i += 8 |
| 798 | if _pythonMajorVersion < 3: |
| 799 | return ''.join(result) |
| 800 | else: |
| 801 | return bytes.fromhex('').join(result) |
| 802 | else: |
| 803 | data = self.__key1.crypt(data, ENCRYPT) |
| 804 | data = self.__key2.crypt(data, DECRYPT) |
| 805 | return self.__key3.crypt(data, ENCRYPT) |
| 806 | |
| 807 | def decrypt(self, data, pad=None, padmode=None): |
| 808 | """decrypt(data, [pad], [padmode]) -> bytes |