16/18 - Programar en C# - SHA256 Explicado paso a paso (incluye SHA-224, SHA-384, SHA-512)

แชร์
ฝัง
  • เผยแพร่เมื่อ 12 ธ.ค. 2024

ความคิดเห็น • 11

  • @el_kraken2315
    @el_kraken2315 2 ปีที่แล้ว +1

    Mi hermano no entiendo como no tienes mas seguidores! mil gracias Bro cuentas con un nuevo alumno y de antemano agradecerle por compartir tus conocimientos con nosotros saludos desde Colombia

    • @pererovira-tutoriales7914
      @pererovira-tutoriales7914  2 ปีที่แล้ว

      Gracias a vosotr@s. A medida que disponga de más tiempo iré subiendo nuevo contenido. Me alegro que te guste y aprendas. No olvides seguir y complementar mis explicaciones con gente especializada, que seguro te introducirá en los temas de forma más profunda, con los tecnicismos apropiados.
      Un cordial saludo ^_^

  • @arquitecturasostenibleysocial
    @arquitecturasostenibleysocial 2 ปีที่แล้ว +1

    Muy interesante. Puedes ayudarme con un trabajo y algunas dudas?

    • @pererovira-tutoriales7914
      @pererovira-tutoriales7914  ปีที่แล้ว +1

      Hola,
      Pues depende, ya que por ahora no dispongo de mucho tiempo para responder comentarios que expongan dudas particulares.
      En todo caso, no me importa publicar tu duda y así sucedan tres opciones básicas:
      · Responderte al comentario correctamente.
      · Que alguien más pueda responderte en los comentarios y nos ayude a tod@s a resolverlas.
      · Que entre todos podamos resolverlo.
      En todo caso, te animo a que si tu consulta es muy urgente o muy técnica, utilices más canales como foros especializados y otras personas que puedan ser mucho más expertas en el tema que yo.
      Gracias por participar ^_^

    • @arquitecturasostenibleysocial
      @arquitecturasostenibleysocial ปีที่แล้ว +1

      Mi duda es si se puede crear un Algoritmo SHA256 que pueda utilizar en cualquier lenguaje.
      Básicamente me gustaría que me devuelva el mismo resultado independientemente del dispositivo que utilice. (Celular, PC o Tablet)

    • @pererovira-tutoriales7914
      @pererovira-tutoriales7914  ปีที่แล้ว +1

      Hola, vamos a ver si resuelvo la duda:
      SHA-2 es un algoritmo determinista, eso significa que, si se conocen todas las entradas, siempre producirá la misma salida.
      No obstante, un algoritmo determinista puede volverse no determinista por motivos relacionados con el funcionamiento del hardware u operaciones internas del dispositivo y/o su sistema operativo.
      Quizá una analogía muy básica es el CSS que, sin ser un lenguaje de programación, ha dado muchos quebraderos de cabeza a los diseñadores porqué cada navegador puede ofrecer resultados distintos en ciertos puntos.
      En el caso de los lenguajes de programación, lo que transforma el código a código máquina es el compilador. Antes de crear una aplicación, hay que saber su finalidad, a qué plataforma estará dirigida y qué lenguaje/s vas a utilizar para que los interprete y se ejecute correctamente. Todo esto, lleva a conceptos mucho más técnicos como la escalabilidad, el rendimiento, la seguridad…
      Implementar SHA-2 en Python, C#, VB, C, C++, Ruby, JAVA, SQL… y ejecutarlo te dará el mismo resultado. Si no es así, algo se está haciendo mal o alguna vulnerabilidad se ha descubierto.
      Hay muchos lenguajes que tienen librerías destinadas a ello y te facilitan su implementación, pero eso no nos exime de errores o malas praxis por nuestra parte: www.ui1.es/blog-ui1/por-una-internet-mas-segura-el-caso-de-las-firmas-ecdsa
      Por tanto, la aplicación ejecutada en tu Tablet o teléfono deberá mostrar el mismo resultado que en tu PC. Otra cosa es que tu Tablet o teléfono esté preparado y pueda ejecutar esa aplicación: Intenta instalar un videojuego en tu teléfono que requiera un i7 4770, 16GB de RAM y una NVIDIA GTX 1060 de 6G… que no se instale no significa que esté mal hecho, sino que está destinado a una plataforma en concreto con unas características de hardware concretas.
      Si tu teléfono utiliza una aplicación destinada a sus características (hardware, sistema operativo…), está funcionará.
      Puede que el videojuego del PC y la aplicación del teléfono utilicen una función SHA-2 para vincularse entre ellas, por ejemplo, acceder a tu cuenta de usuario. Ambas plataformas, aún siendo distintas y estar desarrolladas (posiblemente) con distintos lenguajes de programación, obtendrán el mismo resultado de SHA-2.
      Te dejo unos cuantos links:
      barcelonageeks.com/como-elegir-un-lenguaje-de-programacion-para-un-proyecto/
      developer.mozilla.org/es/docs/Glossary/Compile
      es.wikipedia.org/wiki/Compilador
      support.microsoft.com/es-es/topic/requisito-de-soporte-t%C3%A9cnico-para-la-firma-de-c%C3%B3digo-sha-2-2019-para-windows-y-wsus-64d1c82d-31ee-c273-3930-69a4cde8e64f
      es.wikipedia.org/wiki/Algoritmo_determinista
      Muchas gracias por participar, no sé si me he ido mucho por las ramas… pero espero que te haya servido ^_^

    • @arquitecturasostenibleysocial
      @arquitecturasostenibleysocial ปีที่แล้ว +1

      @@pererovira-tutoriales7914 muchas gracias. Si, es de mucha ayuda.

  • @leonardosolimano2197
    @leonardosolimano2197 2 ปีที่แล้ว +1

    Me da error en s1 al hacer la parte de :
    for (int i = 0; i < 1; i++)
    {
    for (int c = 16; c < 64; c++)
    {
    uint s0 = rightRotate(W[i, c - 15], 7) ^ rightRotate(W[i, c - 15], 18) ^ rightShift(W[i, c - 15], 3);
    uint s1 = rightRotate(W[i, c - 2], 17) ^ rightRotate(W[i, c - 2], 19) ^ rightShift(W[i, c - 2], 10);
    W[i, c] = W[i, c - 16] + s0 + W[i, c - 7] + s1;
    }
    }

    • @leonardosolimano2197
      @leonardosolimano2197 2 ปีที่แล้ว +1

      Sabrás que es? Llevo 3 horas mirando y no entiendo
      Sale que se está usando en un ámbito local envolvente y no deja usarlo

    • @pererovira-tutoriales7914
      @pererovira-tutoriales7914  2 ปีที่แล้ว +1

      ¡Hola!
      Gracias por participar. Dispongo de muy poco tiempo para contestar dudas, por eso procuro que el código en pantalla se vea claro y lo ejecuto en tiempo real, sin errores ni vueltas atrás, para corroborar que todo funciona correctamente.
      En tu trozo de código veo un error que es el siguiente:
      for (int i = 0; i < 1; i++)
      Cuando debería ser este:
      for (int i = 0; i < l; i++)
      (nota que donde tu tienes el número UNO yo tengo la letra ele “l”.
      No obstante, el error que indicas es por haber declarado dos veces la misma variable, es decir, s1.
      docs.microsoft.com/es-es/dotnet/csharp/misc/cs0136
      A priori, sin más información de la que me proporcionas y localizando este error en tu bucle “for”, creo que tienes mal definida esta variable en tu código:
      string sl = Convert.ToString(sb.Length, 2).PadLeft(64, '0');
      Donde creo que en vez de SL has puesto S1, y por tanto, te detecta que S1 ya existe cuando la creas en el bucle for.
      En resumen, revisa estas variables en tu código y fíjate en el código del vídeo, puede que hayas confundido la letra ele “l” con el número uno “1” (escribo en mayúsculas para que veas mejor la diferencia):
      VARIABLE STRING SL (05:27)
      VARIABLE INT L (08:21)
      BUCLE FOR CON LA ELE “L” (12:30)
      VARIABLE UINT S1 (13:04)
      Revisa bien donde has usado eles y donde has usado unos. Creo que el error que tienes te viene de aquí.
      Gracias por participar.

    • @leonardosolimano2197
      @leonardosolimano2197 2 ปีที่แล้ว +1

      @@pererovira-tutoriales7914 Arreglado, muchas gracias, está bueno tu contenido.