⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sha1.h

📁 xprobe package sources code
💻 H
字号:
/***** Copyright (C) 2003 Meder Kydyraliev <meder@areopag.net>** Copyright (C) 2001, 2002, 2003  Fyodor Yarochkin <fygrave@tigerteam.net>,**								Ofir Arkin       <ofir@sys-security.com>**** This program is free software; you can redistribute it and/or modify** it under the terms of the GNU General Public License as published by** the Free Software Foundation; either version 2 of the License, or** (at your option) any later version.****** This program is distributed in the hope that it will be useful,** but WITHOUT ANY WARRANTY; without even the implied warranty of** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the** GNU General Public License for more details.**** You should have received a copy of the GNU General Public License** along with this program; if not, write to the Free Software** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.*//*	$OpenBSD: sha1.h,v 1.11 2002/12/23 04:33:31 millert Exp $	*//* * SHA-1 in C * By Steve Reid <steve@edmweb.com> * 100% Public Domain */#ifndef SHA1_H#define SHA1_Hclass SHA1 {	private:		typedef struct {    		u_int32_t state[5];    		u_int32_t count[2];    		u_char buffer[64];		} SHA1_CTX;		void SHA1Transform(u_int32_t state[5], const u_char buffer[64]);		void SHA1Init(SHA1_CTX *context);		void SHA1Update(SHA1_CTX *context, const u_char *data, u_int len);		void SHA1Final(u_char digest[20], SHA1_CTX *context);		char *SHA1End(SHA1_CTX *, char *);		char *SHA1File(char *, char *);		char *SHA1Data(const u_char *, size_t, char *);	public:		int get_digest(u_char digest[20], const u_char *data, u_int len);};#define SHA1_DIGESTSIZE       20#define SHA1_BLOCKSIZE        64#define HTONDIGEST(x) do {                                              \        x[0] = htonl(x[0]);                                             \        x[1] = htonl(x[1]);                                             \        x[2] = htonl(x[2]);                                             \        x[3] = htonl(x[3]);                                             \        x[4] = htonl(x[4]); } while (0)#define NTOHDIGEST(x) do {                                              \        x[0] = ntohl(x[0]);                                             \        x[1] = ntohl(x[1]);                                             \        x[2] = ntohl(x[2]);                                             \        x[3] = ntohl(x[3]);                                             \        x[4] = ntohl(x[4]); } while (0)#define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits))))/* * blk0() and blk() perform the initial expand. * I got the idea of expanding during the round function from SSLeay */#if BYTE_ORDER == LITTLE_ENDIAN# define blk0(i) (block->l[i] = (rol(block->l[i],24)&0xFF00FF00) \    |(rol(block->l[i],8)&0x00FF00FF))#else# define blk0(i) block->l[i]#endif#define blk(i) (block->l[i&15] = rol(block->l[(i+13)&15]^block->l[(i+8)&15] \    ^block->l[(i+2)&15]^block->l[i&15],1))/* * (R0+R1), R2, R3, R4 are the different operations (rounds) used in SHA1 */#define R0(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk0(i)+0x5A827999+rol(v,5);w=rol(w,30);#define R1(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk(i)+0x5A827999+rol(v,5);w=rol(w,30);#define R2(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0x6ED9EBA1+rol(v,5);w=rol(w,30);#define R3(v,w,x,y,z,i) z+=(((w|x)&y)|(w&x))+blk(i)+0x8F1BBCDC+rol(v,5);w=rol(w,30);#define R4(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0xCA62C1D6+rol(v,5);w=rol(w,30);#endif /* SHA1_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -