182 votes

Comment encoder une chaîne de caractères en fonction d'un mot de passe ?

Python dispose-t-il d'un moyen simple et intégré d'encoder/décoder des chaînes de caractères à l'aide d'un mot de passe ?

Algo así:

>>> encode('John Doe', password = 'mypass')
'sjkl28cn2sx0'
>>> decode('sjkl28cn2sx0', password = 'mypass')
'John Doe'

Ainsi, la chaîne "John Doe" est cryptée sous la forme "sjkl28cn2sx0". Pour obtenir la chaîne originale, je dois la "déverrouiller" avec la clé "mypass", qui est un mot de passe dans mon code source. J'aimerais que ce soit la façon dont je peux crypter/décrypter un document Word avec un mot de passe.

J'aimerais utiliser ces chaînes cryptées comme paramètres d'URL. Mon objectif est l'obscurcissement, pas une sécurité forte ; rien de critique n'est codé. Je sais que je pourrais utiliser une table de base de données pour stocker les clés et les valeurs, mais j'essaie d'être minimaliste.

0voto

andrew cooke Points 20902

Si vous souhaitez un cryptage sécurisé :

pour python 2, vous devez utiliser keyczar http://www.keyczar.org/

pour python 3, en attendant que keyczar soit disponible, j'ai écrit simple-crypt http://pypi.python.org/pypi/simple-crypt

ces deux réponses utilisent le renforcement des clés, ce qui les rend plus sûres que la plupart des autres réponses. et comme elles sont si faciles à utiliser, vous pourriez vouloir les utiliser même si la sécurité n'est pas essentielle...

-1voto

Yash Mishra Points 21

Ainsi, en tant que rien de critique n'est encodé et vous souhaitez simplement crypter pour obscurcissement .

Permettez-moi de vous présenter Chiffre de César

enter image description here

Le chiffrement de César, ou décalage de César, est l'une des techniques de chiffrement les plus simples et les plus connues. Il s'agit d'un type de chiffrement par substitution dans lequel chaque lettre du texte en clair est remplacée par une lettre située à un nombre fixe de positions dans l'alphabet. Par exemple, avec un décalage de 3 vers la gauche, D serait remplacé par A, E deviendrait B, et ainsi de suite.

Exemple de code pour votre référence :

def encrypt(text,s): 
        result = "" 

        # traverse text 
        for i in range(len(text)): 
            char = text[i] 

            # Encrypt uppercase characters 
            if (char.isupper()): 
                result += chr((ord(char) + s-65) % 26 + 65) 

            # Encrypt lowercase characters 
            else: 
                result += chr((ord(char) + s - 97) % 26 + 97) 

        return result 

    def decrypt(text,s): 
        result = "" 

        # traverse text 
        for i in range(len(text)): 
            char = text[i] 

            # Encrypt uppercase characters 
            if (char.isupper()): 
                result += chr((ord(char) - s-65) % 26 + 65) 

            # Encrypt lowercase characters 
            else: 
                result += chr((ord(char) - s - 97) % 26 + 97) 

        return result 

    #check the above function 
    text = "ATTACKATONCE"
    s = 4
    print("Text  : " + text) 
    print("Shift : " + str(s)) 
    print("Cipher: " + encrypt(text,s))
    print("Original text: " + decrypt(encrypt(text,s),s))

Avantages : il répond à vos besoins, il est simple et fait l'encodage "y".

Inconvénient : peut être craqué par de simples algorithmes de force brute (il est très peu probable que quelqu'un tente de passer en revue tous les résultats supplémentaires).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X