278 key = hash[:keyLength] |
278 key = hash[:keyLength] |
279 try: |
279 try: |
280 cipher = encryptData(key, data) |
280 cipher = encryptData(key, data) |
281 except ValueError: |
281 except ValueError: |
282 return b"", False |
282 return b"", False |
283 return CryptoMarker.encode() + Delimiter.encode().join([ |
283 return CryptoMarker.encode("utf-8") + Delimiter.encode("utf-8").join([ |
284 digestname.encode(), |
284 digestname.encode("utf-8"), |
285 str(iterations).encode(), |
285 str(iterations).encode("utf-8"), |
286 base64.b64encode(salt), |
286 base64.b64encode(salt), |
287 base64.b64encode(cipher) |
287 base64.b64encode(cipher) |
288 ]), True |
288 ]), True |
289 |
289 |
290 |
290 |
297 @keyparam keyLength length of the key to be generated for decryption |
297 @keyparam keyLength length of the key to be generated for decryption |
298 (16, 24 or 32) |
298 (16, 24 or 32) |
299 @return decrypted data (bytes) and flag indicating |
299 @return decrypted data (bytes) and flag indicating |
300 success (boolean) |
300 success (boolean) |
301 """ |
301 """ |
302 if not edata.startswith(CryptoMarker.encode()): |
302 if not edata.startswith(CryptoMarker.encode("utf-8")): |
303 return edata, False # it was not encoded using dataEncrypt |
303 return edata, False # it was not encoded using dataEncrypt |
304 |
304 |
305 from .py3AES import decryptData |
305 from .py3AES import decryptData |
306 from .py3PBKDF2 import rehashPassword |
306 from .py3PBKDF2 import rehashPassword |
307 |
307 |
308 hashParametersBytes, edata = edata[3:].rsplit(Delimiter.encode(), 1) |
308 hashParametersBytes, edata = edata[3:].rsplit(Delimiter.encode("utf-8"), 1) |
309 hashParameters = hashParametersBytes.decode() |
309 hashParameters = hashParametersBytes.decode() |
310 try: |
310 try: |
311 # recreate the key used to encrypt |
311 # recreate the key used to encrypt |
312 key = rehashPassword(password, hashParameters)[:keyLength] |
312 key = rehashPassword(password, hashParameters)[:keyLength] |
313 plaintext = decryptData(key, base64.b64decode(edata)) |
313 plaintext = decryptData(key, base64.b64decode(edata)) |