decoder_du_chiffrement_affine.py

Created by jerem-jarsaillon

Created on March 27, 2025

4.92 KB


#n=N/Na 
#n=quantité de matière ; N=nb d'entités; Na=6.02*10**23
#n=m(ech)/M(masse molaire)
#n(gaz)=V(gaz)/Vm
#Cm=m/V(sol)
#C(concentration en mol)=n/V(sol)
#M=Cm/C
#F=ci/cf=vf/vi
#Comparaison : (|x(mesurée)-x(référence)|)/u(x)(l'incertitude)
#Si le rapport est inférieur à 2 alors la valeur est en accord avec la réf
#u(x)=s(x)(l'écart-type expérimental)/Vn(racine carré du nb de valeurs)
#l'oxydant gagne des éléctrons
#le réducteur en perd
#A=ε.l.C(concentraion en espece chimique colorée)
#ça peut aussi s'écrire A=k*c k étant ε*l
#C en mol.l;l est en cm;ε est en L.cm**-1 .mol**-1
#La solution titrante est progressivement apportée à l'aide d'une burette graduée, au mélange réactionnel dans lequel a été introduit un volume précis de solution titrée (mesurée à l'aide d'une pipette jaugée)
#L'équivalence est l'état du système pour lequel les réactifs titrants et titrés ont été introduits dans les proportions stoechiométriques
#A l'equivalence : (Ca*Va)/a=(Cb*Ve)/b


#Force gravitationelle : Fa/b=G*((ma*mb)/d**2))*vecteuru
#F en N; d en m
#Force électrostatique : Fa/b=k*((Qa*Qb)/d**2))*vecteuru
#Q en C; d en m
#Force d'attraction gravitationelle : F=mg
#m masse; g champ d'attraction
#champ de gravitation : g=GM/d**2
#g en N.kg; M en kg; d en m
#Force électrostatique ; F=qE
#Champ électrostatique ; E=k*(Q/d**2)
#E en N.C; Q en C; d en m
#champ du condensateur plan = E=u/d


#Écrire la valeur absolue du nombre en base 2.
#Inverser les bits : les 0 deviennent des 1 et vice versa (il s’agit du complément à 1).
#Ajouter 1 au résultat.
#Représentation binaire en complément à 2 sur 1 octect du nombre (-19)10.
#on code en binaire la valeur absolue (19)10 : (0001 0011)2
#on inverse les bits (0001 0011)2 devient (1110 1100)c1
#on ajoute 1, soit (1110 1100)c1 + 1 = (1110 1101)c2
#On obtient : (-19)2 = (1110 1101)c2
#1 bit de signe (1 si le nombre est négatif et 0 si le nombre est positif)
#des bits consacrés à l'exposant (8 bits pour la simple précision et 11 bits pour la double
#précision)
#des bits consacrés à la mantisse (23 bits pour la simple précision et 52 bits pour la double
#précision)


#x=0 cos=1 sin=0
#x=π/6 cos=V3/2 sin=1/2
#x=π/4 cos=V2/2 sin=V2/2
#x=π/3 cos=1/2 sin=V3/2
#x=π/2 cos=0 sin=1
#x=π cos=-1 sin=0


#P=F/S ou F=P*S P en Pas F en N S en m2
#Pb-Pa=ρ*g*(za-zb) ρ en kg.m-3 g=9.81N.kg-1 z en m
#P*V=Constante

#v=M/2t
#2e loi de Newton F=m(v/t)

#taux d'accroissement=(f(b)-f(a))/b-a
#f'(a)=limh->(f(a+h)+f(a))/h

#PA(B)=P(AnB)/P(A)
#P(AnB)=P(A)*P(B) alors ils sont indépendants

#titrage:
#(Ca*Va)/a=(Cb*Ve)/b
#polaire quand elle a 2 poles
#cations positif
#ioniques insoluble avec les apolaires

#Albédo=Rr/Ri
#Precue=Pabsorbée+Préfléchie
#c+273.15
#longueur d'onde max d'emission lambda en m=b/température de surface en K
#Ps=constante o*T**4 en K

#tension (U) en V 
#Voltmètre en dérivation
#U(V)=R*(ohm)*I que pour les conducteurs ohmiques
#U=E(ordonnée à l'origine)-r(coef directeur)*I
#P(W)=U(V)*I(A) ou E(J)=P(N)*t(s)
#E=R*I**2*t
#rendement=Putile/Pentrée ou E
#P=R*I**2
#Cation (+)+->-
#Aninon (-)-->+

#Ec=(1/2)*m*v2
#Travail d'une force constante:
#Wab(F)(J)=F.AB=F(N)*AB(m)*cos(F;AB)
#Wab(P)=m(kg)*g*h(m)
#Wab(f)=-f*AB
#deltaEC=ECb-ECa=1/2mvB2-1/2mvA2=sommeWab(Fi)

#ax+by+c=0
#si a=0 la droite est horizontale
#si b=0 la droite est verticale
#si c=0 la droite passe par le repère
#u(-b;a) vecteur directeur
#v(a;b) vecteur normal
#centre C(xC;yC)
#(x-xC)2+(y+yC)2=R2
#le cercle de diamètre AB (x-xA)(x-xB)+(y-yA)(y-yB)=0
#V((xB-xA)2+(yB-yA)2) Calculer la distance entre 2pt
#Orthocentre : intersection des 3 hauteurs
#Centre d'un cercle circonscrit : intersection des 3 médiatrices
#Centre de gravité : intersection des 3 médianes

























































# Programme de décodage de chiffrement affine sur la calculatrice NumWorks

# Fonction pour calculer l'inverse multiplicatif modulo n
def inverse_modulo(a, n):
    for x in range(1, n):
        if (a * x) % n == 1:
            return x
    return None

# Fonction pour décoder le chiffrement affine
def decode_affine(ciphertext, a, b):
    decrypted_text = ""
    inverse_a = inverse_modulo(a, 26)
    if inverse_a is None:
        return "Impossible de décoder avec cette clé."
    else:
        for char in ciphertext:
            if char.isalpha():
                char_num = ord(char) - ord('A')
                decrypted_num = (inverse_a * (char_num - b)) % 26
                decrypted_text += chr(decrypted_num + ord('A'))
            else:
                decrypted_text += char
        return decrypted_text

# Entrée de l'utilisateur pour le message chiffré et la clé
ciphertext = input("Entrez le message chiffré : ").upper()
a = int(input("Entrez la valeur de a : "))
b = int(input("Entrez la valeur de b : "))

# Décodage et affichage du message déchiffré
decrypted_message = decode_affine(ciphertext, a, b)
print("Message déchiffré :", decrypted_message)

During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:

With the exception of Cookies essential to the operation of the site, NumWorks leaves you the choice: you can accept Cookies for audience measurement by clicking on the "Accept and continue" button, or refuse these Cookies by clicking on the "Continue without accepting" button or by continuing your browsing. You can update your choice at any time by clicking on the link "Manage my cookies" at the bottom of the page. For more information, please consult our cookies policy.