Bloques y palabras
Divide el mensaje preparado en bloques y lee palabras de 32 bits big-endian.
Constrúyelo en tu lenguaje
El tester trata tu programa como una caja negra: sirve cualquier lenguaje. Estos son los más cómodos para este proyecto.
Descomposición en Palabras de 32 bits (Message Words)
SHA-256 opera sobre palabras de 32 bits sin signo en orden big-endian. Cada bloque de 64 bytes se divide en 16 palabras de 32 bits ().
Modelo mental: 4 bytes por palabra de 32 bits
Cada palabra de 32 bits está compuesta por 4 bytes (8 caracteres hexadecimales):
"0000000100000002":
- Palabra 0:
"00000001"->0x00000001= 1 - Palabra 1:
"00000002"->0x00000002= 2
Tu objetivo en esta etapa
Leer por stdin un JSON con op: "words" y una cadena hex. Descomponer la cadena en palabras de 32 bits sin signo en el arreglo words.
Formato de Entrada
{
"op": "words",
"hex": "0000000100000002"
}
Formato de Salida
{
"words": [1, 2]
}
Qué debes hacer paso a paso
- Valida la longitud: La longitud de
hexdebe ser múltiplo de 8 (4 bytes por palabra). Si no, sal con código 1 yerroren stderr. - Parsea bloques de 8 caracteres:
- Itera en saltos de 8 caracteres (
i = 0, 8, 16, ...). - Extrae
hex.slice(i, i + 8). - Parsea como entero sin signo de 32 bits (
parseInt(slice, 16) >>> 0). - Agrégalo a
words.
- Itera en saltos de 8 caracteres (
- Emite la salida: Escribe
{"words": words}en stdout.
Criterios de aceptación
- ✅ Descompone cadenas hex en enteros de 32 bits big-endian sin signo.
- ✅ Maneja enteros que superan
0x7FFFFFFFmanteniéndolos como positivos sin signo.
Formato de salida y errores
Los ejemplos multilínea se muestran así para facilitar la lectura. Emite JSON compacto, sin espacios opcionales, con las propiedades en el orden de los ejemplos de salida y un salto de línea final. No escribas logs en stdout. Las pruebas comparan texto exacto.
Para entradas inválidas, usa stderr con la palabra error, stdout vacío y código 1. Para entradas válidas, código 0. Usa números JSON enteros cuando el resultado sea entero.