Skip to content

9ea9552db3343564a84bc2b3bf3d6529

Publicado por Sergio Hernando el 23 diciembre 2007

9ea9552db3343564a84bc2b3bf3d6529

Be Sociable, Share!

Categoría/s → Freestyle

14 comentarios
  1. 24 diciembre 2007
    Ricardo permalink

    9ea9552db3343564a84bc2b3bf3d6529 a tí también …y 96aa01f0c3679071e28fce43e058fc6f

  2. 25 diciembre 2007

    definitivamente no se sabe quien es mas geek, tu que pones el mensaje, o nosotros que lo entendemos xD

  3. 26 diciembre 2007
    chmeee permalink

    Pues después de probar y probar y probar a mano sin éxito llegué a la conclusión de que era mejor hacer un script para sacar el mensaje y desempolvar mis ruby skills.

    Os lo dejo para aquellos que no son muy buenos adivinando o los que piensan que “aquello que puede hacer una máquina que no lo repita el hombre”.


    #!/usr/bin/env ruby

    require 'digest/md5'
    require 'pp'

    sergiomd5 = '9ea9552db3343564a84bc2b3bf3d6529'
    words = %w{felicidades feliz navidad 2008 año felices fiestas próspero nuevo y os deseo un una navidades }
    encontrado = ''

    # choose y append_all tomados prestados de semergence.com
    def choose(n, k)
    return [[]] if n.nil? || n.empty? && k == 0
    return [] if n.nil? || n.empty? && k > 0
    return [[]] if n.size > 0 && k == 0
    c2 = n.clone
    c2.pop
    new_element = n.clone.pop
    choose(c2, k) + append_all(choose(c2, k-1), new_element)
    end

    def append_all(lists, element)
    lists.map { |l| l << element }
    end

    (1...words.length).each do |n|
    choose(words,n).each do |msgarr|
    msgstr = msgarr.join(' ')
    # puts msgstr
    msgmd5 = Digest::MD5.hexdigest(msgstr)
    # puts msgmd5
    if msgmd5 == sergiomd5
    encontrado = msgstr
    end
    end
    end

    print "El mensaje de Sergio Hernando para esta Navidad "
    if !encontrado.nil?
    puts "es:", encontrado
    else
    puts "quedará oculto para siempre"
    end

    Si alguien se aburre que incluya además la posibilidad de comprobar las mismas palabras en mayúsculas (todo, sólo la primera de cada palabra, la primera de la frase, etc.).

    Feliz año, Sergio.

  4. 26 diciembre 2007

    chmeee,

    Feliz año también para tí, y para todos claro :) Como hay muchos que no comprenderán tu método, os dejo el fácil:

    http://us.md5.crysm.net/find?md5=9ea9552db3343564a84bc2b3bf3d6529

    ¿Nadie se atreve con el hash de Ricardo?

  5. 26 diciembre 2007
    chmeee permalink

    He mejorado un poco el script (aún es chungo pero tampoco estoy para muchos trotes…) y ahora también encuentra el mensaje de Ricardo :). También he reducido las palabras eliminando aquelas que me parecía que no iban a estar.

    Y además termina cuando los ha encontrado a los dos sin tener que pasar por todas las posibilidades.

    Os lo posteo por si alguien quiere conocerlo:


    #!/usr/bin/env ruby

    require 'digest/md5'
    require 'rubygems'
    require 'permutation'

    sergiomd5 = '9ea9552db3343564a84bc2b3bf3d6529'
    rickmd5 = '96aa01f0c3679071e28fce43e058fc6f'
    #words = %w{felicidades feliz navidad 2008 año felices fiestas próspero nuevo y os deseo un una navidades }
    words = %w{feliz navidad 2008 año felices fiestas próspero nuevo}
    encontradosergio = ''
    encontradorick = ''

    # choose y append_all tomados prestados de semergence.com
    def choose(n, k)
    return [[]] if n.nil? || n.empty? && k == 0
    return [] if n.nil? || n.empty? && k > 0
    return [[]] if n.size > 0 && k == 0
    c2 = n.clone
    c2.pop
    new_element = n.clone.pop
    choose(c2, k) + append_all(choose(c2, k-1), new_element)
    end

    def append_all(lists, element)
    lists.map { |l| l << element }
    end

    def check_msg(msg, md5)
    msgmd5 = Digest::MD5.hexdigest(msg)
    if msgmd5 == md5
    return true
    end
    return false
    end

    def print_msg(name, msg)
    print "El mensaje de #{name} para esta Navidad "
    if msg != ''
    puts "es:", msg
    else
    puts "quedará oculto para siempre"
    end
    end

    catch (:found) do
    (1...words.length).each do |n|
    perm = Permutation.new(n)
    choose(words,n).each do |msgarrsrc|
    perm.map { |p| p.project(msgarrsrc) }.each do |msgarr|
    msgstr = msgarr.join(' ')
    # puts msg
    if check_msg(msgstr, sergiomd5)
    encontradosergio = msgstr
    elsif check_msg(msgstr, rickmd5)
    encontradorick = msgstr
    end
    if encontradosergio != '' and encontradorick != ''
    throw :found
    end
    end
    end
    end
    end

    print_msg('Sergio', encontradosergio)
    print_msg('Ricardo', encontradorick)

    Por cierto, Sergio, ¿alguna forma de insertar código en comentarios que quede bonito?

  6. 26 diciembre 2007

    chmeee,

    Yo creo que encerrando el código entre tags “code” debería verse algo, pruebo con tu código:


    #!/usr/bin/env ruby

    require 'digest/md5'
    require 'rubygems'
    require 'permutation'

    sergiomd5 = '9ea9552db3343564a84bc2b3bf3d6529'
    rickmd5 = '96aa01f0c3679071e28fce43e058fc6f'
    #words = %w{felicidades feliz navidad 2008 año felices fiestas próspero nuevo y os deseo un una navidades }
    words = %w{feliz navidad 2008 año felices fiestas próspero nuevo}
    encontradosergio = ''
    encontradorick = ''

  7. 26 diciembre 2007

    Pues no, no hace gran cosa. No debe estar definido en el CSS del theme el comportamiento de los tags “code”.

    Sorry. ¿Qué resultados arroja el script para el hash de Ricardo? :D

  8. 27 diciembre 2007
    chmeee permalink

    Ya había usado el <code> para los comentarios anteriores pero parece que sin un <pre> no queda indentado, aunque supongo que nada que un poco de CSS magic no pueda arreglar.

    Respecto al resultado del script, es el siguiente:

    feliz
    navidad
    2008
    año
    felices
    fiestas
    próspero
    nuevo
    feliz navidad
    navidad feliz
    feliz 2008
    2008 feliz
    navidad 2008
    2008 navidad
    feliz año
    año feliz
    navidad año
    año navidad
    2008 año
    año 2008
    feliz felices
    felices feliz
    navidad felices
    felices navidad
    2008 felices
    felices 2008
    año felices
    felices año
    feliz fiestas
    fiestas feliz
    navidad fiestas
    fiestas navidad
    2008 fiestas
    fiestas 2008
    año fiestas
    fiestas año
    felices fiestas
    fiestas felices
    feliz próspero
    próspero feliz
    navidad próspero
    próspero navidad
    2008 próspero
    próspero 2008
    El mensaje de Sergio para esta Navidad es:
    felices fiestas
    El mensaje de Ricardo para esta Navidad es:
    próspero 2008

    Un saludo

  9. 27 diciembre 2007

    próspero 2008: 173d73414adc477c27fb951ef1c87bce
    prospero 2008: fcab467b035f801b4fc1cd17a3c59076

    Hash de Ricardo: 96aa01f0c3679071e28fce43e058fc6f

    Algo sigue fallando :)

  10. 27 diciembre 2007
    chmeee permalink

    Pues debe ser la códificación de caracteres para la tilde. Parece que Ricardo y Ruby usan la misma :).
    Lo siguiente es la salida del intérprete en línea de comando de ruby (puedes usarlo on-line si no lo tienes instalado en http://tryruby.hobix.com/)

    irb(main):001:0> require ‘digest/md5’
    => true
    irb(main):002:0> msg = “próspero 2008”
    => “pr\303\263spero 2008”
    irb(main):003:0> Digest::MD5.hexdigest(msg)
    => “96aa01f0c3679071e28fce43e058fc6f”

    Pensaba que era por el Unicode, pero el siguiente resultado me ha dejado confundido:

    irb(main):001:0> file = File.new(“p2008”, “w”)
    => #
    irb(main):002:0> msg = “próspero 2008”
    => “pr\303\263spero 2008”
    irb(main):003:0> file.puts msg
    => nil
    irb(main):004:0> file.close
    => nil
    irb(main):005:0> quit
    $ md5sum p2008
    75848c93c1fef976ddc735ee6a1ce394 p2008

    ¿Ein? Así que me imagino que debe ser que hay diferencias en cómo tratan los caracteres unicode el md5sum y el digest/md5 en ruby. Lo he buscado pero no he encontrado nada al respecto.

  11. 27 diciembre 2007
    chmeee permalink

    Ya está, parece ser que no es nada tan esotérico (yo y mis conspiranoias sobre las codificaciones de caracteres que me vuelven loco a veces). Es el \n de final de cadena.
    He aquí la prueba:

    $ echo “próspero 2008″|md5sum
    75848c93c1fef976ddc735ee6a1ce394 –
    $ echo -n “próspero 2008″|md5sum
    96aa01f0c3679071e28fce43e058fc6f –

    Vaya lo que va a dar de si una felicitación navideña :), quién lo iba a decir.

  12. 27 diciembre 2007

    Misterio resuelto :)

    Vaya lo que va a dar de si una felicitación navideña :), quién lo iba a decir.

    ¿Y lo que nos hemos divertido haciendo el gamba? :D

  13. 27 diciembre 2007

    jejej si efectivamente somos muy geek xD

  14. 27 diciembre 2007
    Ricardo permalink

    ¡Vaya!, no había seguido la pequeña batalla entre chmeee, Sergio, ruby y las felicitaciones navideñas…me he divertido mucho…pero fue otro día ;-P

    ¡felices fiestas y próspero 2008 a los dos!

Escribir un comentario

Note: XHTML permitido. Tu email nunca será publicado.

Suscribirse a los comentarios via RSS