--- a/src/eric7/Utilities/crypto/__init__.py Sun Nov 06 11:22:39 2022 +0100 +++ b/src/eric7/Utilities/crypto/__init__.py Mon Nov 07 17:19:58 2022 +0100 @@ -60,6 +60,8 @@ """ Private module function to get the password from the user. """ + from .py3PBKDF2 import verifyPassword + global MasterPassword pw, ok = QInputDialog.getText( @@ -69,8 +71,6 @@ QLineEdit.EchoMode.Password, ) if ok: - from .py3PBKDF2 import verifyPassword - masterPassword = Preferences.getUser("MasterPassword") try: if masterPassword: @@ -113,6 +113,9 @@ @return encrypted password (string) and flag indicating success (boolean) """ + from .py3AES import encryptData + from .py3PBKDF2 import hashPasswordTuple + if masterPW is None: if MasterPassword is None: __getMasterPassword() @@ -121,12 +124,8 @@ masterPW = pwDecode(MasterPassword) - from .py3PBKDF2 import hashPasswordTuple - digestname, iterations, salt, pwHash = hashPasswordTuple(masterPW) key = pwHash[:32] - from .py3AES import encryptData - try: cipher = encryptData(key, pw.encode("utf-8")) except ValueError: @@ -154,6 +153,9 @@ @return decrypted password (string) and flag indicating success (boolean) """ + from .py3AES import decryptData + from .py3PBKDF2 import rehashPassword + if not epw.startswith(CryptoMarker): return epw, False # it was not encoded using pwEncrypt @@ -165,9 +167,6 @@ masterPW = pwDecode(MasterPassword) - from .py3AES import decryptData - from .py3PBKDF2 import rehashPassword - hashParameters, epw = epw[3:].rsplit(Delimiter, 1) try: # recreate the key used to encrypt @@ -312,12 +311,12 @@ @return decrypted data (bytes) and flag indicating success (boolean) """ + from .py3AES import decryptData + from .py3PBKDF2 import rehashPassword + if not edata.startswith(CryptoMarker.encode("utf-8")): return edata, False # it was not encoded using dataEncrypt - from .py3AES import decryptData - from .py3PBKDF2 import rehashPassword - hashParametersBytes, edata = edata[3:].rsplit(Delimiter.encode("utf-8"), 1) hashParameters = hashParametersBytes.decode() try: