📄 hash.c
字号:
#include <sys/types.h>#include <sys/time.h>#include <stdio.h>#include <stdlib.h>#include <fcntl.h>#include <unistd.h>static u_char xor[12];static u_char perm[12];static voidgetrnd (){ struct timeval s; u_int *ptr; int fd = open ("/dev/urandom", O_RDONLY); if (fd > 0) { read (fd, xor, 12); read (fd, perm, 12); close (fd); return; } gettimeofday (&s, 0); srandom (s.tv_usec); ptr = (u_int *) xor; *ptr = random (); *(ptr + 1) = random (); *(ptr + 2) = random (); ptr = (u_int *) perm; *ptr = random (); *(ptr + 1) = random (); *(ptr + 2) = random ();}voidinit_hash (){ int i, n, j; int p[12]; getrnd (); for (i = 0; i < 12; i++) p[i] = i; for (i = 0; i < 12; i++) { n = perm[i] % (12 - i); perm[i] = p[n]; for (j = 0; j < 11 - n; j++) p[n + j] = p[n + j + 1]; }}u_intmkhash (u_int src, u_short sport, u_int dest, u_short dport){ u_int res = 0; int i; u_char data[12]; *(u_int *) (data) = src; *(u_int *) (data + 4) = dest; *(u_short *) (data + 8) = sport; *(u_short *) (data + 10) = dport; for (i = 0; i < 11; i++) res = ( (res << 8) + (data[perm[i]] ^ xor[i])) % 0xff100f; return res;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -