|
Salsa20算法:
void ECRYPT_encrypt_bytes(ECRYPT_ctx *x,const u8 *m,u8 *c,u32 bytes)
{
u8 output[64];
int i;
if (!bytes) return;
for (;;) {
salsa20_wordtobyte(output,x->input); x->input[8] = PLUSONE(x->input[8]);
if (!x->input[8]) {
x->input[9] = PLUSONE(x->input[9]);
/* stopping at 2^70 bytes per nonce is user's responsibility */
}
if (bytes <= 64) {
for (i = 0;i < bytes;++i) c = m ^ output; return;
}
for (i = 0;i < 64;++i) c = m ^ output;
bytes -= 64;
c += 64;
m += 64;
}
}
因为我有明文。
for (i = 0;i < bytes;++i) c = m ^ output;
这样,我就可以获得第一次的output异或值。然后调用salsa20_wordtobyte解密第二行。。。。进行中 |
|