Cómo representar el algoritmo de hash SHA256 en python

Para todos los fines prácticos, probablemente sea mejor usar

hashlib.sha256 (“mensaje aquí”) .hexdigest ()

Puede encontrar una implementación de Python puro aquí:

pypy / pypy / source / lib_pypy / _sha256.py

o aquí:

thomdixon / pysha2

Si realmente debe rodar el suyo, comience con el psuedocode de la documentación oficial, o la versión de Wikipedia funcionará igual de bien: SHA-2 Deberá:

  • rotar palabras de 32 bits: que se pueden escribir utilizando los operadores de desplazamiento de bits <>, a partir de uno de los ejemplos anteriores, la rotación de ‘x’ a la derecha por ‘y’ bits se escribe como:

def _rotr (self, x, y):
return ((x >> y) | (x << (32-y))) & 0xFFFFFFFFL

  • realizar operaciones lógicas (xor, or, and, not) en palabras de 32 bits: todas son compatibles de forma nativa, vea BitwiseOperators – Python Wiki
  • agregue palabras de 32 bits. La única sutileza para notar es que, a diferencia de C, la adición no se transfiere, por lo que debe usar manualmente ‘& 0xffffffffl’ después de cada adición para mantener la variable limitada a un valor de 32 bits.
  • Convierta la entrada de una cadena en palabras binarias: esto se hace con la función struct.unpack (y al revés con struct.pack)

More Interesting

Cómo mejorar si he pasado 10 años aprendiendo programación pero aún no puedo resolver la mayoría de los problemas de algoritmos

¿Cuál es el programa de clasificación rápida que tiene su mediana como pivote?

Cómo escribir un algoritmo de la pila de programas usando una matriz en C

¿Cuál es el número más pequeño [matemática] N [/ matemática] tal que [matemática] N \ equiv 2 \ mod 3, [/ matemática] [matemática] N \ equiv 1 \ mod 5, [/ matemática] [matemática] N \ equiv 4 \ mod 7 [/ matemáticas]?

¿Cuáles son algunos ejemplos de problemas que son: (1) NP pero no NP-Complete; (2) NP-Completo; (3) NP-Hard pero no NP-Complete?

¿Cuándo debería mirar la solución de algún problema algorítmico?

Cómo hacer que el siguiente código sea mejor y más eficiente para el problema de invertir las palabras en la oración dada

¿Cuál es el tiempo de entrenamiento promedio y el tiempo de prueba de los algoritmos de aprendizaje automático más comunes?

He estado tratando de aprender el análisis de algoritmos usando el libro CLRS, sin embargo, encuentro que ese libro es difícil de entender. ¿Soy el único?

¿Es posible codificar un programa que, dada una secuencia finita, encuentra al menos 2 reglas posibles que generan las series restantes?

Cómo resolver ADAGAME en SPOJ

¿Qué hay de malo con este código C?

¿Es razonable delegar decisiones importantes sobre algoritmos?

Cómo calcular la similitud semántica entre un automóvil y una bicicleta mediante el algoritmo Jian y Conrath

¿Cómo escribo un código C completo, incluidos todos los bucles y las condiciones de la línea de límite para la eliminación del nodo en el árbol de búsqueda binario?