Partage
  • Partager sur Facebook
  • Partager sur Twitter

Cryptographie et programmation

Anonyme
20 novembre 2011 à 12:04:34

Il me semble que j'utilise le 2.7
Merci sa marche (juste dans le programme mais c'est vrai que l'erreur était bete (de toute façon toutes les erreurs sont bêtes ^^)

Voilà mon début de code (pour l'instant je ne fais que 1 décalage mais vu que sa marche pas, pas la peine de continuer:

from string import maketrans

decalage = input("Choisissez le decalage : ")
d = decalage

if d == 0

no crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
conversion = maketrans(nocrypt, crypt)

a_crypte = raw_input().translate(conversion)
print a_crypte

if d == 1

no crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
crypt = "BCDEFGHIJKLMNOPQRSTUVWXYZAbcdefghijklmnopqrstuvwxyza"
conversion = maketrans(nocrypt, crypt)

a_crypte = raw_input().translate(conversion)
print a_crypte

# On bloque le programme avant la fermeture
raw_input('\n\nFin\n\n')


Donc je me suis dit que peut etre c'était du au résultat:
a_crypte = raw_input().translate(conversion)
print a_crypte


Faut-il l'écrire à chaque fois ou juste à la fin? (à la fin une seule fois me semblerait plus logique ...)

PS: je précise qu si j'enlève les if (c'est à dire que je fais un programme par décalage, sa marche nickel ...)
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
20 novembre 2011 à 12:43:07

En même temps si tu ne connais pas les bases de Python, ça ne risque pas de fonctionner !

Mais si ton but final est de faire un formulaire sur une page HTML, le JavaScript te sera plus utile (ou intéressant) dans un premier temps.

Le seul conseil que l'on puisse te donner actuellement, c'est de te trouver un bon tutoriel et d'apprendre l'un de ces langages. Le SDZ est la pour ça !
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
20 novembre 2011 à 12:54:35

Ben j'ai regardé les pythonneries, je me suis appuyé sur des codes sources et j'ai monté sa ...

On m'a conseillé le python donc je le fait en python et maintenant on me dit qu'il faut mieux faire du javascript ... ^^'
  • Partager sur Facebook
  • Partager sur Twitter
20 novembre 2011 à 13:03:02

Déjà petite question, pourquoi utiliser une variable "decalage" pour ensuite la renommer "d" ? As tu déjà essayer d'utiliser tout de suite la variable "d" pour stocker la valeur d'input? Mais bon, ça ne changerai pas grand chose à ton code.
Pour mieux comprendre la fonction stringmaketrans, regarde peut être ceci.
Et lis le tutoriel sur python du sdz, pas de simple vidéo sur python.
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
20 novembre 2011 à 14:09:07

Citation : magiik0rel

On m'a conseillé le python donc je le fait en python et maintenant on me dit qu'il faut mieux faire du javascript ... ^^'


Ici, c'est le forum Python, donc on parle essentiellement de Python. Alors oui, tout ce que tu sembles vouloir est faisable en Python, mais si tu veux proposer une page Web (avec formulaire) qui permettrai aux visiteurs de crypter un texte de leur choix, juste pour démontrer un algorithme, alors il vaut mieux que ce soit leurs ordinateurs qui travail plutôt que ton serveur.

Actuellement et de mon point de vue, il y a trois langages indispensables pour faire un site internet : HTML, CSS et JavaScript. Tous ces langages sont interprétés par les navigateurs internet des clients. Enfin bref, si tu veux faire un site internet il faut que tu commences par apprendre ces langages et après tu choisiras le langage (ou les langages) à utiliser du coté serveur (Python ou autres...).
  • Partager sur Facebook
  • Partager sur Twitter
20 novembre 2011 à 14:12:42

Citation : magiik0rel

Ben j'ai regardé les pythonneries, je me suis appuyé sur des codes sources et j'ai monté sa ...

On m'a conseillé le python donc je le fait en python et maintenant on me dit qu'il faut mieux faire du javascript ... ^^'



non vaut mieux faire du python
pour faire un décalage il suffit d'insérer des espaces
from string import maketrans

decalage = input("Choisissez le decalage : ")
d = decalage

if d == 0:
    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte

if d == 1:

    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "BCDEFGHIJKLMNOPQRSTUVWXYZAbcdefghijklmnopqrstuvwxyza"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte

# On bloque le programme avant la fermeture
raw_input('\n\nFin\n\n')


quelques détail
après les if il faut mettre des :
une variable ne peut pas contenir d'espace donc c'est nocrypt ou no_crypt mais pas no_crypt
tu doit surveiller tes noms de variables toujours les appeler pareil sinon python te remontera une erreur
voilà le code que j'ai livré n'est volontairement pas testé à toi de jouer et de décoder les erreurs que python te renverra
  • Partager sur Facebook
  • Partager sur Twitter
20 novembre 2011 à 14:15:07

Personne ne semble l'avoir dit, alors je vais le faire : pourquoi faire une interface web ?

Je pense que les examinateurs seront tout aussi contents si tu mets à disposition ton script python avec l'usage. Ils pourront fouiner dans le code source, faire des tests bien plus facilement qu'avec l'interface web, etc.
  • Partager sur Facebook
  • Partager sur Twitter
20 novembre 2011 à 14:18:15

Citation


Actuellement et de mon point de vue, il y a trois langages indispensables pour faire un site internet : HTML, CSS et JavaScript.



pour faire un site basique il n'y a que le HTML qui soit vraiement nécessaire vu le mal qu'il a en python j'estime que ce serait un mauvais conseil de lui dire d'apprendre le javascript. Les erreurs renvoyées par javascript sont beaucoup plus cryptique que celles renvoyées par python.
Et la syntaxe est nettement plus compliquée.
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
20 novembre 2011 à 14:51:56

Bon d'accord merci xcombelle, j'ai compris les erreurs, voici mon code complet qui MARCHE ^^ Je vous laisse l'admirer (c'est sur je sais qu'il est bien trop log et qu'on peux le simplifier, j'ai pas trouvé comment donc j'ai laissé ! :) )

from string import maketrans

decalage = input("Choisissez le decalage : ")
d = decalage

if d == 0:
    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte

if d == 1:

    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "BCDEFGHIJKLMNOPQRSTUVWXYZAbcdefghijklmnopqrstuvwxyza"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte

if d == 2:

    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "CDEFGHIJKLMNOPQRSTUVWXYZABcdefghijklmnopqrstuvwxyzab"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte

if d == 3:

    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "DEFGHIJKLMNOPQRSTUVWXYZABCdefghijklmnopqrstuvwxyzabc"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte

if d == 4:

    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "EFGHIJKLMNOPQRSTUVWXYZABCDefghijklmnopqrstuvwxyzabcd"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte

if d == 5:

    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "FGHIJKLMNOPQRSTUVWXYZABCDEfghijklmnopqrstuvwxyzabcde"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte

if d == 6:

    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "GHIJKLMNOPQRSTUVWXYZABCDEFghijklmnopqrstuvwxyzabcdef"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte

if d == 7:

    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "HIJKLMNOPQRSTUVWXYZABCDEFGhijklmnopqrstuvwxyzabcdefg"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte

if d == 8:

    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "IJKLMNOPQRSTUVWXYZABCDEFGHijklmnopqrstuvwxyzabcdefgh"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte

if d == 9:

    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "JKLMNOPQRSTUVWXYZABCDEFGHIjklmnopqrstuvwxyzabcdefghi"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte

if d == 10:

    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "KLMNOPQRSTUVWXYZABCDEFGHIJklmnopqrstuvwxyzabcdefghij"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte

if d == 11:

    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "LMNOPQRSTUVWXYZABCDEFGHIJKlmnopqrstuvwxyzabcdefghijk"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte

if d == 12:

    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "MNOPQRSTUVWXYZABCDEFGHIJKLmnopqrstuvwxyzabcdefghijkl"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte

if d == 13:

    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte

if d == 14:

    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "OPQRSTUVWXYZABCDEFGHIJKLMNopqrstuvwxyzabcdefghijklmn"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte

if d == 15:

    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "PQRSTUVWXYZABCDEFGHIJKLMNOpqrstuvwxyzabcdefghijklmno"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte

if d == 16:

    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "QRSTUVWXYZABCDEFGHIJKLMNOPqrstuvwxyzabcdefghijklmnop"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte

if d == 17:

    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "RSTUVWXYZABCDEFGHIJKLMNOPQrstuvwxyzabcdefghijklmnopq"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte

if d == 18:

    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "STUVWXYZABCDEFGHIJKLMNOPQRstuvwxyzabcdefghijklmnopqr"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte

if d == 19:

    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "TUVWXYZABCDEFGHIJKLMNOPQRStuvwxyzabcdefghijklmnopqrs"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte

if d == 20:

    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "UVWXYZABCDEFGHIJKLMNOPQRSTuvwxyzabcdefghijklmnopqrst"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte

if d == 21:

    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "VWXYZABCDEFGHIJKLMNOPQRSTUvwxyzabcdefghijklmnopqrstu"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte

if d == 22:

    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "WXYZABCDEFGHIJKLMNOPQRSTUVwxyzabcdefghijklmnopqrstuv"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte

if d == 23:

    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "XYZABCDEFGHIJKLMNOPQRSTUVWxyzabcdefghijklmnopqrstuvw"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte

if d == 24:

    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "YZABCDEFGHIJKLMNOPQRSTUVWXyzabcdefghijklmnopqrstuvwx"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte

if d == 25:

    no_crypt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    crypt = "ZABCDEFGHIJKLMNOPQRSTUVWXYzabcdefghijklmnopqrstuvwxy"
    conversion = maketrans(no_crypt, crypt)

    a_crypte = raw_input().translate(conversion)
    print a_crypte



# On bloque le programme avant la fermeture
raw_input('\n\nFin\n\n')
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
20 novembre 2011 à 15:13:46

Je suis sans voix
  • Partager sur Facebook
  • Partager sur Twitter
20 novembre 2011 à 15:14:54

wonderfull ...
  • Partager sur Facebook
  • Partager sur Twitter

Python c'est bon, mangez-en. 

Anonyme
20 novembre 2011 à 15:16:52

Lol, c'est de l'ironie non? ;p

Après ya la possibilité d'intégrer le mode de cryptage et le mode décryptage dans le meme code?
En gros au début sa met :
crypter=1
décrypter=2
quitter=3

(Il ne faudrait faire que trois boucles au final?)
  • Partager sur Facebook
  • Partager sur Twitter
20 novembre 2011 à 15:18:21

Pour simplifier ton code (et éviter de répéter 26 fois le même bloc d'instructions), regarde du côté des fonctions.
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
20 novembre 2011 à 15:19:56

Tu te rends compte que tu fais 25 fois la même chose, heureusement pour toi que tu ne le fais pas 2500 fois...
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
20 novembre 2011 à 15:34:07

Je me disais aussi ^^

Ben c'est comme tout quand tu connais pas quelque chose mais que tu veux réussir et bien tu te débrouilles, c'est ce que j'ai fais ...
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
20 novembre 2011 à 15:39:05

Citation

Ben c'est comme tout quand tu connais pas quelque chose mais que tu veux réussir et bien tu te débrouilles, c'est ce que j'ai fais ...



Oui, mieux vaut apprendre les bases, en prenant un tuto et tout doucement tu arriveras au terme de ton projet.

  • Partager sur Facebook
  • Partager sur Twitter
20 novembre 2011 à 15:46:42

Utilise une boucle! A la place de if d == 0:, remplace le 0 par une variable que tu incrémente à chaque passage de la boucle. Regarde vraiment le tuto de prolix sur le sdz.
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
20 novembre 2011 à 16:22:53

ok je verrais plus tard.

Existe-il une commande qui quitte le programme? (sans forcément etre a la fin. Par ex si au début on veut le quitter alors que l'on pas fais commencé:

# -*-coding:Latin-1 -*
from string import maketrans
print 'Bonjour, que voulez-vous faire : '
print '1. Crypter'
print '2. Decrypter'
print '3. Quitter'

choix = input('Choix n : ')
c = choix

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
20 novembre 2011 à 16:36:08

s = input("Mon programme est super, non ?").lower()
if s in ("lol", "mdr", "n", "no", "non", "nop", "mouarf!", "xD"):
    print("Pardon... :(")
    exit() # <- *_*
...
  • Partager sur Facebook
  • Partager sur Twitter
20 novembre 2011 à 17:01:51

C'est vraiment pas le plus urgent.

De plus, il est bien plus agréable pour l'utilisateur d'entrer les paramètres sur la ligne de commande. Par exemple :
$ mypgm -crypt -method=rsa -public_key=1097 'Secret msg !'

(Ca facilite par exemple la correction par une batterie de tests.)
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
20 novembre 2011 à 17:15:59

C'est à dire? Qu'entends-tu par paramètres?
  • Partager sur Facebook
  • Partager sur Twitter