// Execute the BlockMix operation
// input - the input vector. The length must be a multiple of 128.
// output - the output vector. Must be the same length as input.
Execute the BlockMix operation
input - the input vector. The length must be a multiple of 128.
output - the output vector. Must be the same length as input.
Execute the BlockMix operation input - the input vector . The length must be a multiple of 128 . output - the output vector . Must be the same length as input .
fn scrypt_block_mix(input: &[u8], output: &mut [u8]) {
    let mut x = [0u8, ..64];
    x.clone_from_slice(input.slice_from(input.len() - 64));
    let mut t = [0u8, ..64];
    for (i, chunk) in input.chunks(64).enumerate() {
        xor(x, chunk, t);
        salsa20_8(t, x);
        let pos = if i % 2 == 0 { (i / 2) * 64 } else { (i / 2) * 64 + input.len() / 2 };
        output.mut_slice(pos, pos + 64).clone_from_slice(x);
    }
}
fn scrypt_block_mix ( input : & [ u8 ] , output : & mut [ u8 ] ) { let mut x = [ 0u8 , .. 64 ] ; x . clone_from_slice ( input . slice_from ( input . len ( ) - 64 ) ) ; let mut t = [ 0u8 , .. 64 ] ; for ( i , chunk ) in input . chunks ( 64 ) . enumerate ( ) { xor ( x , chunk , t ) ; salsa20_8 ( t , x ) ; let pos = if i % 2 == 0 { ( i / 2 ) * 64 } else { ( i / 2 ) * 64 + input . len ( ) / 2 } ; output . mut_slice ( pos , pos + 64 ) . clone_from_slice ( x ) ; } }
Execute the BlockMix operation
input - the input vector.
Execute the BlockMix operation input - the input vector .
input
&[u8]
output
&mut [u8]