Rendere il proprio algoritmo crittografico è considerato una cattiva idea a meno che non si sia un crittografo e sia disposto a impiegare molto tempo a crearlo / testarlo.
L'algoritmo in P3 è (secondo le mailing list) creato da un ragazzo che conosce le sue cose, ma non è uno standard. Suggerisco invece di utilizzare AES se si desidera utilizzare password (AES è un algoritmo di crittografia simmetrica).
Il problema al momento è che non ci sono moduli prontamente disponibili per Python 3 forniti con il supporto AES. Per Python 2.x c'è Pycrypto , un'eccellente libreria per qualsiasi algoritmo crittografico, ma in questo momento viene ancora trasferito a Python 3. Tuttavia esiste un ramo che contiene già AES qui .
Ora quanto sarebbe difficile rompere AES con una password da 10 a 20 caratteri? Molto difficile. Se si utilizza il più sicuro (che è AES 256 al momento) e la password è composta solo da numeri, lettere maiuscole e minuscole. Allora avresti (26 + 26 + 10 possibilità per una lettera) ^ 10 (tutte le combinazioni possibili). Questo è un numero enorme di password che dovresti provare (statisticamente metà della quantità effettivamente). A causa della complessità e del carico della CPU che AES può causare, ci vorrebbe più di centomila anni per craccarlo.