nativo md5cryptoserviceprovider libreria example encriptar encriptacion datos como javascript encryption

md5cryptoserviceprovider - Caracteres desconocidos utilizados en el script de cifrado de JavaScript



md5 nativo javascript (3)

<< es un cambio a la izquierda bit a bit. >> es un cambio a la derecha a nivel de bit. | es un O a nivel de bits y es un AND a nivel de bit. Por favor, consulte esta referencia para más información.

Aquí hay un extracto de un script de encriptación JS que estoy estudiando.

function permutationGenerator(nNumElements) { this.nNumElements = nNumElements; this.antranspositions = new Array; var k = 0; for (i = 0; i < nNumElements - 1; i++) for (j = i + 1; j < nNumElements; j++) this.antranspositions[ k++ ] = ( i << 8 ) | j; // keep two positions as lo and hi byte! this.nNumtranspositions = k; this.fromCycle = permutationGenerator_fromCycle; }

¿Alguien puede explicar el uso del doble menos de signos <<, así como el único tubo | ?

Más tarde, en el guión, también se producen signos de doble mayor que >>, también signo único &.

function permutationGenerator_fromCycle(anCycle) { var anpermutation = new Array(this.nNumElements); for (var i = 0; i < this.nNumElements; i++) anpermutation[i] = i; for (var i = 0; i < anCycle.length; i++) { var nT = this.antranspositions[anCycle[i]]; var n1 = nT & 255; var n2 = (nT >> 8) & 255; // JC nT = anpermutation[n1]; anpermutation[n1] = anpermutation[n2]; anpermutation[n2] = nT; } return anpermutation; }

Estoy familiarizado con single <o> y, por supuesto, con lógica && y lógica || .

¿Pensamientos?


Desplazamiento a la izquierda 8 bits y OR a nivel de bit con j.

<< es el operador de desplazamiento a la izquierda. Cambia los bits en la variable a la izquierda de la cantidad de posiciones indicadas.

>> es el operador de desplazamiento correcto. Cambia los bits en la variable a la derecha el número de posición indicado.

| es el operador O bit a bit. Realiza un OR lógico en cada bit en los dos operandos.

& es el operador AND bit a bit. Realiza un Y lógico en cada bit en los dos operandos.


| = bitwise o

1010 0100 ---- 1110

& = a nivel de bit y

1011 0110 ---- 0010

entonces es lo mismo que && y || solo con los bits individuales

<< es el turno de la izquierda, por lo

0110 << 2 desplaza los números que quedan en dos posiciones, produciendo 011000 de otra manera para pensar que esto es multiplicación por dos, entonces x << 1 == x * 2, x << 2 == x * 2 * 2 y así sucesivamente , entonces es x * Math.pow (2, n) para x <

>>

es lo opuesto, entonces 0110 >> 2 ---> 0001 puedes pensar que es división por dos, PERO con redondeo abajo, entonces es igual

Math.floor(x/Math.pow(2,n))