Pregunta Invertir hash con MS Excel


Estaba viendo un video en YouTube llamado 'El rompecabezas de papel A4"En ella, el presentador toma una hoja de papel A4 y la pliega de cierta manera y luego le pide a los espectadores que calculen el perímetro, pero no da la solución, sino que le da un método para verificar que tiene la respuesta correcta usando un Hash.

La secuencia para saber la respuesta correcta es = Tome su respuesta y en una calculadora haga clic en sq rt 5 veces, luego del resultado tome los 6 dígitos en el lado derecho del punto decimal y vuelva a organizarlos en orden ascendente numérico y si igual 234477 tiene la respuesta correcta.

Entonces, en lugar de intentar calcular el perímetro, quería invertir el hash para llegar a la solución. Así que encendí Excel y en A5 ingresé el número de candidato (digamos 42) y luego en el B5 a F5 comencé el rooting cuadrado. En G5 resta 1 para dar 0.123897073 que en H5 multipliqué por 1 millón para dar 123897, luego en I5: I10 extraje cada uno de los números. En J5: J10 clasifiqué los números usando una fórmula para J5-1, J6 = 2, J7 = 3, J8 = 7, J9 = 8, J10 = 9, luego finalmente en K5 Concatené todos los números para dar 123789 y colocó el objetivo 234477 en L5.

Ahora aquí es donde estoy atascado. Supuse que podría usar Goal Seek para configurar K5 para que sea igual a 234477 cambiando A5 pero no encontrará una solución.

No quiero usar código / macro para encontrar la respuesta o las operaciones manuales, como ordenar etc., me gustó la idea de ver la búsqueda de objetivos y probar soluciones y ser capaz de "ver" el camino a la solución.

¿Alguien sabe cómo puedo completar esto?

Fórmulas
A5 = Número de entrada del usuario
B5 = SQRT (A5)
C5 = SQRT (B5)
D5 = SQRT (C5)
E5 = SQRT (D5)
F5 = SQRT (E5)
G5 = F5-1
H5 = IF (MID (G5,3,1) * 1 = 0, G5 * 10000000, G5 * 1000000)
(LISTA) I5: I10 = MID ($ F $ 5,3,1) * 1 [Incremento de 3 por 1 por fila)
J5: J10 {= INDICE (lista, PARTIDO (PEQUEÑO (CONTEO (lista, "<" y lista), FILA (1: 1)), CONTEO (lista, "<" y lista), 0))}
K5 = J5 y J6 y J7 y J8 y J9 y J10

enter image description here

EDITAR: Tal vez no debería usar la Búsqueda de objetivos puede tener limitaciones, incluso si ingreso el objetivo 123789 todavía no puede encontrar el valor de inicio de 42.


0


origen




Respuestas:


En general, debe intentar encontrar un algoritmo válido no solo para su solución.
Intenta incluso acelerar el cálculo como puedas.

Wrong solution

  • A5 Mantendrá su valor inicial
  • B5  =A5^(1/32), sí, un poco de matemáticas
    (SQRT (x) es equivalente a x ^ 1/2; hacerlo cinco veces significa 1/2 * 1/2 * .... = 1/32)
  • C5  =Mod(B5,1)
    Aquí no puedes simplemente hacer 1-x: imagina si fue 2.smth o 0.smth ...

    La función MOD devuelve el resto después de dividir un número por un divisor.

  • D5  =3-TRUNC(LOG(C5,10))
    Necesita tomar los primeros dígitos diferentes de cero (registro de función10), y omita el 0. de la cuerda.
  • E5  =MID(C5,D5,6) Aquí extraes la cadena.
  • F5:F10 Índices simples para las funciones de la próxima columna.
  • G5  =0+MID($E$5,F5,1)  extrae el dígito en F5. Copiar y pegar en G5:G10.
  • H5  =LARGE($G$5:$G$10,7-F5)  Toma el 7-F5th más grande de la gama G5:G10 . Copiar y pegar en H5:H10.
  • I5  =H5&H6&H7&H8&H9&H10 Componer la cadena de nuevo
  • J5 Mantendrá la solución HASH para encontrar (lo llamaste Objetivo)
  • K5  =I5=MID(J5,1,6) Compara la cuerda en I5 y de  J5.

Aquí debajo de la solución:

  enter image description here

Aquí un código de bash para SHA256

 Aquí un código de bash para SHA256
        StartSeq = 1; EndSeq = 5

for i in $(seq $StartSeq $EndSeq) ;
 do 
   [[ $(printf "$i" | sha256sum | awk '{print $1}'| xxd -r -p | base64) \
   == "SyJ3d9TdH8Ycb4hPSGQdArTRIdP9Moywi1Ux/Kzav4o=" ]] && \
   echo "### The Solution is "$i ; 
done

0



¿Utiliza este objetivo de meta? Porque no funciona para mí. - Raystafarian
No tengo MS eXcel conmigo. Lo hice con la hoja de cálculo de google. Si pones un número en A5, comprobará que la solución es correcta en K5. Creo que puedes usar la meta para buscarla. - Hastur
El video me suena como si necesitaras excluir todos los dígitos cero de E5 - Raystafarian
Ah lo tengo para usar objetivo buscar. ¡Gracias! - Raystafarian
@Raystafarian Sí lo hace, calculando en D5 desde donde comenzar (corta todos los ceros después del punto ... usando la base de registro 10 ... Log_10 (0.1) = -1, Log_10 (0.01) = -2 ...) - Hastur


Gracias a Hastur He encontrado la manera de que Goal Search funcione. Me ha encontrado dos soluciones hasta ahora -

4 y 2340.

Bien, aquí vamos basados ​​en La respuesta de Hastur

Nuevamente comenzaremos en A5

  • A5 = cualquier número
  • B5  =INT(A5)
  • C5  =B5^(1/32)
  • D5  =INT(MID(C5,FIND(".",C5,1)+1,10))
  • E5  =INT(IFERROR(IF(FIND("0",D5,1)<6,CONCATENATE(LEFT(D5,FIND("0",D5,1)-1),MID(D5,FIND("0",D5,1)+1,10-FIND("0",D5,1)))),LEFT(D5,6)))
  • F5  =INT(IFERROR(IF(FIND("0",E5,1)<=6,CONCATENATE(LEFT(E5,FIND("0",E5,1)-1),MID(E5,FIND("0",E5,1)+1,7-FIND("0",E5,1))),LEFT(E5,6)),LEFT(E5,6)))
  • G5 a G10 son índice 1,2,3,4,5,6 - nunca cambian
  • H5 a H10  =INT(0+MID($F$5,$G5,1)) arrastrado de tal manera que $G5 aumenta a 6, 7 etc.
  • I5 a I10  =SMALL($H$5:$H$10,ROW(A1)) arrastrado de tal manera que Row(A1) aumenta
  • J5  =INT(CONCATENATE(I5,I6,I7,I8,I9,I10))

Ahora puedes buscar gol en J5 a 234477 cambiando A5

enter image description here


Solución

  enter image description here


0