#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <errno.h>
데이타 구조 | |
struct | SHA1_CONTEXT |
매크로 | |
#define | rol(x, n) (((x) << (n)) | ((x) >> (32-(n)))) |
#define | K1 0x5A827999L |
#define | K2 0x6ED9EBA1L |
#define | K3 0x8F1BBCDCL |
#define | K4 0xCA62C1D6L |
#define | F1(x, y, z) (z ^ (x & (y ^ z))) |
#define | F2(x, y, z) (x ^ y ^ z) |
#define | F3(x, y, z) ((x & y) | (z & (x | y))) |
#define | F4(x, y, z) (x ^ y ^ z) |
#define | M(i) |
#define | R(a, b, c, d, e, f, k, m) |
타입정의 | |
typedef unsigned int | u32 |
함수 | |
void | transform (SHA1_CONTEXT *hd, unsigned char *data) |
void | sha1_write (SHA1_CONTEXT *hd, unsigned char *inbuf, size_t inlen) |
void | sha1_final (SHA1_CONTEXT *hd) |
int | sha1sum (char *file_name, SHA1_CONTEXT *ctx) |
SHA1 message digest 계산. |
#define F1 | ( | x, | |||
y, | |||||
z | ) | (z ^ (x & (y ^ z))) |
#define F2 | ( | x, | |||
y, | |||||
z | ) | (x ^ y ^ z) |
#define F3 | ( | x, | |||
y, | |||||
z | ) | ((x & y) | (z & (x | y))) |
#define F4 | ( | x, | |||
y, | |||||
z | ) | (x ^ y ^ z) |
#define K1 0x5A827999L |
#define K2 0x6ED9EBA1L |
#define K3 0x8F1BBCDCL |
#define K4 0xCA62C1D6L |
#define M | ( | i | ) |
값:
(tm = x[i & 0x0f] ^ x[(i - 14) & 0x0f] \ ^ x[(i - 8) & 0x0f] ^ x[( i - 3) & 0x0f] \ , (x[i & 0x0f] = rol(tm, 1)))
#define R | ( | a, | |||
b, | |||||
c, | |||||
d, | |||||
e, | |||||
f, | |||||
k, | |||||
m | ) |
#define rol | ( | x, | |||
n | ) | (((x) << (n)) | ((x) >> (32-(n)))) |
typedef unsigned int u32 |
void sha1_final | ( | SHA1_CONTEXT * | hd | ) |
void sha1_write | ( | SHA1_CONTEXT * | hd, | |
unsigned char * | inbuf, | |||
size_t | inlen | |||
) |
int sha1sum | ( | char * | file_name, | |
SHA1_CONTEXT * | ctx | |||
) |
SHA1 message digest 계산.
file_name | SHA1 message digest를 계산할 파일 | |
ctx | 계산 결과를 저장할 Context 포인터 |
void transform | ( | SHA1_CONTEXT * | hd, | |
unsigned char * | data | |||
) |