Curso Git #15 - Git commit id algoritmo SHA

in #spanish7 years ago (edited)

Hola todos! espero que se encuentren muy bien! 🤗 🤓 😎

En este post les explico un poco como funciona el algoritmo SHA el cual es el encargado de generar los CommitsId en git, y que es casi imposible tener uno de estos repetidos.

SHA (Secure Hash Algorithm)

Algoritmo desarrollado por el NIST y publicado como estándar federal para el procesamiento de la información (FIBS PUB 180); en 1995 se publicó una versión revisada como FIBS PUB 180-1 conocida como SHA-1. 🤗 🤓 😎

El algoritmo toma como entrada mensajes de longitud máxima de 264 bits que son procesados en bloques de 512 bits. 🤗 🤓 😎

El algoritmo se genera con los siguientes pasos...

1- Se incorporan bits de relleno al mensaje de entrada de tal modo que cumpla: longitud. El relleno consiste en un uno seguido de los ceros que sean necesarios. Aunque el mensaje ya tenga la longitud deseada, se debe efectuar el relleno, por lo que el número de bits de dicho relleno está en el rango de 1 a 512 bits. 🤗 🤓 😎

2 - A la salida del paso 1, se le añade un bloque de 64 bits que represente la longitud del mensaje original antes de ser rellenado. 🤗 🤓 😎

3- Se inicializa la memoria temporal MD, la cual consta de 160 bits y su finalidad es almacenar los resultados intermedios y finales de la función de dispersión. 🤗 🤓 😎 La MD consta de 5 registros (A,B,C,D,E) de 32 bits cada uno, los valores con los que se inicializan son los siguientes (valores hexadecimales):

A= 67452301
B= EFCDAB89
C= 98BADCFE
D= 10325476
E= C3D2E1F0

4- Se procesa el mensaje por bloques de 512 bits, cada uno pasa por un módulo que consta de 4 rondas de procesamiento de 20 pasos cada una. 🤗 🤓 😎 Las rondas tienen una estructura similar, con la excepción de que cada una ocupa una función lógica primitiva diferente (f1, f2, f3 y f4).

La entrada a cada ronda consta del bloque de 512 bits que se esté procesando (Yq) y los 160 bits de la memoria MD, nótese que cada bloque de 512 bits actualizará el valor de la memoria temporal. Cada ronda también hace uso de la constante aditiva Kt, donde t indica uno de los 80 pasos a lo largo de las cuatro rondas.

5- Una vez que se procesan los L bloques de 512 bits, el resumen del mensaje son los 160 bits de salida del último bloque.

Bueno ese es el funcionamiento de este algoritmo.

Saludos! 🤗 🤓 😎

Sort:  

Este Post ha recibido un Upvote desde la cuenta del King: @dineroconopcion, El cual es un Grupo de Soporte mantenido por 5 personas mas que quieren ayudarte a llegar hacer un Top Autor En Steemit sin tener que invertir en Steem Power. Te Gustaria Ser Parte De Este Projecto?

This Post has been Upvote from the King's Account: @dineroconopcion, It's a Support Group by 5 other people that want to help you be a Top Steemit Author without having to invest into Steem Power. Would You Like To Be Part of this Project?

Congratulations! This post has been upvoted from the communal account, @minnowsupport, by juanpchica from the Minnow Support Project. It's a witness project run by aggroed, ausbitbank, teamsteem, theprophet0, someguy123, neoxian, followbtcnews/crimsonclad, and netuoso. The goal is to help Steemit grow by supporting Minnows and creating a social network. Please find us in the Peace, Abundance, and Liberty Network (PALnet) Discord Channel. It's a completely public and open space to all members of the Steemit community who voluntarily choose to be there.

This post has received a 1.04 % upvote from @drotto thanks to: @banjo.

This post has been ranked within the top 10 most undervalued posts in the first half of Sep 16. We estimate that this post is undervalued by $87.08 as compared to a scenario in which every voter had an equal say.

See the full rankings and details in The Daily Tribune: Sep 16 - Part I. You can also read about some of our methodology, data analysis and technical details in our initial post.

If you are the author and would prefer not to receive these comments, simply reply "Stop" to this comment.

Coin Marketplace

STEEM 0.17
TRX 0.13
JST 0.028
BTC 59325.16
ETH 2609.11
USDT 1.00
SBD 2.41