def _block_final_decrypt(self, data, padding=PADDING_DEFAULT): if padding == PADDING_DEFAULT: return strip_PKCS7_padding(self.decrypt(data)) if padding == PADDING_NONE: if len(data) != 16: raise Exception('invalid data length for final block') return self.decrypt(data) raise Exception('invalid padding option')
def _block_final_decrypt(self, data, padding = PADDING_DEFAULT): if padding == PADDING_DEFAULT: return strip_PKCS7_padding(self.decrypt(data)) if padding == PADDING_NONE: if len(data) != 16: raise Exception('invalid data length for final block') return self.decrypt(data) raise Exception('invalid padding option')
def decrypt(self, edata: bytes) -> bytes: if not self._password_hash: raise Exception('You need to call .init() for first') elif not isinstance(edata, bytes): raise Exception('edata must be bytes') else: aes_cbc = Decrypter( AESModeOfOperationCBC(self._password_hash, self.__iv)) decrypted = aes_cbc.feed(edata) decrypted += aes_cbc.feed() return strip_PKCS7_padding(decrypted)
def decrypt(self, edata: bytes) -> bytes: if not self._scrypt_key: raise Exception('You need to call .init() for first') elif not isinstance(edata, bytes): raise Exception('edata must be bytes') else: iv = edata[-16:] edata = edata[:-16] # LAST 16 BYTES OF ENCRYPTED DATA IS IV ! aes_cbc = Decrypter(AESModeOfOperationCBC(self._scrypt_key, iv)) decrypted = aes_cbc.feed(edata) decrypted += aes_cbc.feed() try: return strip_PKCS7_padding(decrypted) except ValueError: return decrypted # no padding
# # Copyright (c) 2014 Richard Moore # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. import sys sys.path.append('../pyaes') from pyaes.util import append_PKCS7_padding, strip_PKCS7_padding for i in xrange(0, 17): data = 'A' * i padded = append_PKCS7_padding(data) print repr(padded), strip_PKCS7_padding(padded) == data
# Copyright (c) 2014 Richard Moore # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. import sys sys.path.append('../pyaes') from pyaes.util import append_PKCS7_padding, strip_PKCS7_padding for i in xrange(0, 17): data = 'A' * i padded = append_PKCS7_padding(data) print repr(padded), strip_PKCS7_padding(padded) == data
def _block_final_decrypt(self, data): return strip_PKCS7_padding(self.decrypt(data))
def _block_final_decrypt(self, data): return strip_PKCS7_padding(self.decrypt(data))