📄 rc4.c
字号:
#include "os.h"#include <libsec.h>voidsetupRC4state(RC4state *key, uchar *start, int n){ int t; int index2; uchar *state; uchar *p, *e, *sp, *se; state = key->state; se = &state[256]; for(sp = state; sp < se; sp++) *sp = sp - state; key->x = 0; key->y = 0; index2 = 0; e = start + n; p = start; for(sp = state; sp < se; sp++) { t = *sp; index2 = (*p + t + index2) & 255; *sp = state[index2]; state[index2] = t; if(++p >= e) p = start; }}voidrc4(RC4state *key, uchar *p, int len){ int tx, ty; int x, y; uchar *state; uchar *e; x = key->x; y = key->y; state = &key->state[0]; for(e = p + len; p < e; p++) { x = (x+1)&255; tx = state[x]; y = (y+tx)&255; ty = state[y]; state[x] = ty; state[y] = tx; *p ^= state[(tx+ty)&255]; } key->x = x; key->y = y;}voidrc4skip(RC4state *key, int len){ int tx, ty; int x, y; uchar *state; int i; x = key->x; y = key->y; state = &key->state[0]; for(i=0; i<len; i++) { x = (x+1)&255; tx = state[x]; y = (y+tx)&255; ty = state[y]; state[x] = ty; state[y] = tx; } key->x = x; key->y = y;}voidrc4back(RC4state *key, int len){ int tx, ty; int x, y; uchar *state; int i; x = key->x; y = key->y; state = &key->state[0]; for(i=0; i<len; i++) { ty = state[x]; tx = state[y]; state[y] = ty; state[x] = tx; y = (y-tx)&255; x = (x-1)&255; } key->x = x; key->y = y;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -