in

Rompecabezas: romper una función hash [closed]

Por favor, perdóname: soy nuevo en la codificación, por favor, sé amable.

Quiero escribir una función hash de python simple que use la suma y la multiplicación que encontrará un par de cadenas que devolverán el mismo hash cuando se transpongan dos letras como en ‘ABCDE’ y ‘ABDCE’. A través de prueba y error, hice el cálculo manualmente y descubrí que cuando intercambio la primera y la última letra (por ejemplo, FOOD y DOOF) de una cadena de 4 dígitos, ambas causarán una colisión. Me resulta difícil producir el código que hará eso.

El siguiente código calcula la cadena

while True:
    txt = input("Enter a string: ")
    if len(txt) < 1 : break

    hv = 0
    pos = 0
    for let in txt:
        pos = ( pos % 3 ) + 1  
        hv = (hv + (pos * ord(let))) % 1000000
        print(let, pos, ord(let), hv)

    print(hv, txt)

Ejemplo:

Enter a string: ABCDE
A 1 65 65
B 2 66 197
C 3 67 398
D 1 68 466
E 2 69 604
604 ABCDE

Enter a string: BACDE
B 1 66 66
A 2 65 196
C 3 67 397
D 1 68 465
E 2 69 603
603 BACD

0

¿Te ayudó la respuesta?

Subscribirse
Notificar por
guest

0 Comentarios
Inline Feedbacks
Ver todas las Respuestas

Obtener el nivel de mensaje legible de un Qgis.MessageLevel

Outlook 2013 no puede enviar correo electrónico («Mensaje rechazado bajo sospecha de SPAM», error 554)