SHA 256 pseuedocode?
J'ai essayé de travailler sur la façon SHA-256 œuvres. Une chose que j'ai fait pour les autres algorithmes est que j'ai travaillé en une sorte de étape par étape de pseudo-fonction de l'algorithme.
J'ai essayé de faire de même pour SHA256, mais jusqu'à présent je suis tout à fait avoir un peu de difficulté.
J'ai essayé de travailler sur la façon dont le wikipedia schéma fonctionne, mais en plus de la partie texte expliquant les fonctions, je ne suis pas sûr que j'ai bien compris.
Voici ce que j'ai à ce jour:
Input is an array 8 items long where each item is 32 bits.
Output is an array 8 items long where each item is 32 bits.
Calculate all the function boxes and store those values.
|I'll refer to them by function name
Store input, right shifted by 32 bits, into output.
| At this point, in the out array, E is the wrong value and A is empty
Store the function boxes.
| now we need to calculate out E and out A.
| note: I've replaced the modulo commands with a bitwise AND 2^(32-1)
| I can't figure out how the modulus adding lines up, but I think it is like this
Store (Input H + Ch + ( (Wt+Kt) AND 2^31 ) ) AND 2^31 As mod1
Store (sum1 + mod1) AND 2^31 as mod2
Store (d + mod2) AND 2^31 into output E
|now output E is correct and all we need is output A
Store (MA + mod2) AND 2^31 as mod3
Store (sum0 + mod3) AND 2^31 into output A
|output now contains the correct hash of input.
|Do we return now or does this need to be run repeatedly?
Ai-je tous ces plus modulos droit? Aussi, quels sont les poids et les Kt?
Aussi serait-il exécuté une seule fois et vous avez terminé, ou est-il besoin d'exécuter un certain nombre de fois, avec la sortie de re-utilisé comme entrée.
Voici le lien.
http://en.wikipedia.org/wiki/SHA-2#Hash_function
Merci beaucoup,
Brian
Ah ok... l'ont bien compris. Ainsi, chacun de l'entrée/sortie des boîtes dans le diagramme serait... 32 bits? Je pense que vous vouliez dire, bits. Je vais modifier mon code de départ pour en tenir compte.
OriginalL'auteur codelion | 2012-08-13
Vous devez vous connecter pour publier un commentaire.
Ont un look à la norme officielle qui décrit l'algorithme, les variables sont décrites ici: http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf
(Oh, maintenant je vois que je suis presque un an de retard de ma réponse, ah, jamais l'esprit...)
OriginalL'auteur lathspell
W_t est dérivé du bloc courant en cours de traitement alors que K_t est une constante fixe déterminé par le nombre d'itération. La fonction de compression est répété 64 fois pour chaque bloc de SHA256. Il y a une constante spécifique K_t et une valeur dérivée W_t pour chaque itération 0 <= t <= 63.
J'ai fourni ma propre mise en œuvre de SHA256 à l'aide de Python 3.6. Le tuple K contient les 64 valeurs de constante de K_t. Le Sha256 fonction montre comment la valeur de W_t est calculé dans la liste W. La mise en œuvre se concentre sur le code de la clarté et de pas haute performance.
OriginalL'auteur nickandross
righto.com/2014/09/...
Vous devriez être beaucoup plus concernés que les gens trouvent point fixe collisions avec des solveurs SAT.
J'ai entendu dire que la constante de sélection raisonnement trop, mais ce que vous devriez essayer de trouver est ce que le codage ils ont utilisé, du nombre de chiffres de précision ont été utilisés, big-endian ou little-moyenne, a été le point décimal chuté à partir du processus d'encodage, de 4 bits morceaux utilisé pour convertir en base 10 à la base 2, et enfin comment ils ont décidé de faire face sera arrondi.
Vous avez écrit un beaucoup plus propre mise en œuvre! Vous devriez écrire pour SHA-3 maintenant!
OriginalL'auteur Q-Club