循环左移实现(非常巧妙)
如果要实现一个数组的循环移动,可以用shfit和push方法配合:
目标:将整个数组的元素向左循环移动几位。
原理:shfit方法在删除一个元素的同时会返回这个被删除的元素的值,然后再通过push方法将这个值重新添加到数组后面,就实现了循环移动。
实现:
arr = [1,2,3,4]
arr.push(arr.shift())
console.log(arr) // [2,3,4,1]
拆分理解:
arr.shfit() -> 删除1的同时返回一个数 1,即arr.shift() = 1
arr.push(arr.shift()) -> arr.push(1)
子密钥生成
16轮迭代中的PC-1
PC-1的用处是从64位密钥中取出56位,根据PC-1置换表来取数,不需要手动去除那8位校验位,直接按照表取值之后就是56位了
人的逻辑:去除校验位 -> 交换顺序
代码:直接按表取值,赋值给另一个数组接收即可。
以上结论对于任何置换都是通用的