rotr() elimina el último valor de la matriz y lo coloca en el índice de matriz 0 (al principio). El método hace eso por n veces. Está girando la matriz x por n.
Mi problema es que el primer parámetro XORXOR es w[sh1] rotado por 7. ¡Bien! Está bien.
El segundo parámetro XORXOR se rota 7+18 y el último parámetro se rota 7+18+3. asi no lo quiero...
El primer parámetro de rotr debería y debe ser siempre la misma matriz. ¿Por qué la función cambia la matriz globalmente? ¿No está modificando el parámetro y devuelve una copia de esa modificación? ¿Con devolución? Siempre usé Python... luego una vez un poco JS y me está poniendo completamente nervioso... ¿alguien puede ayudarme y explicármelo? todo mi algoritmo es un fracaso debido a esa *****
const s0 = XORXOR(rotr(w[sh1], 7), rotr(w[sh1], 18), shr(w[sh1], 3)) function rotr(x, n) { for(let c = 0; c<n; c++) { x.unshift(x.pop()); } return x }Puede utilizar el operador de propagación (...)
const s0 = [1, 2, 3, 4]; function rotr(x, n) { const copy = [...x]; for (let c = 0; c < n; c++) copy.unshift(copy.pop()); console.log(`original array: ${x} and changed array: ${copy}`) return copy } rotr(s0, 2)