#include "pch.h"
#include "Hash/cHashSHA1.h"
|
#define | P(a, b, c, d, e, x) |
|
#define | R(t) |
|
#define | F(x, y, z) (z ^ (x & (y ^ z))) |
|
#define | K 0x5A827999 |
|
#define | F(x, y, z) (x ^ y ^ z) |
|
#define | K 0x6ED9EBA1 |
|
#define | F(x, y, z) ((x & y) | (z & (x | y))) |
|
#define | K 0x8F1BBCDC |
|
#define | F(x, y, z) (x ^ y ^ z) |
|
#define | K 0xCA62C1D6 |
|
FIPS-180-1 compliant SHA-1 implementation The SHA-1 standard was published by NIST in 1993. http://www.itl.nist.gov/fipspubs/fip180-1.htm
- Copyright
- 1992 - 2020 Dennis Robinson (http://www.menasoft.com)
◆ F [1/4]
#define F |
( |
|
x, |
|
|
|
y, |
|
|
|
z |
|
) |
| (z ^ (x & (y ^ z))) |
◆ F [2/4]
#define F |
( |
|
x, |
|
|
|
y, |
|
|
|
z |
|
) |
| (x ^ y ^ z) |
◆ F [3/4]
#define F |
( |
|
x, |
|
|
|
y, |
|
|
|
z |
|
) |
| ((x & y) | (z & (x | y))) |
◆ F [4/4]
#define F |
( |
|
x, |
|
|
|
y, |
|
|
|
z |
|
) |
| (x ^ y ^ z) |
◆ K [1/4]
◆ K [2/4]
◆ K [3/4]
◆ K [4/4]
#define P |
( |
|
a, |
|
|
|
b, |
|
|
|
c, |
|
|
|
d, |
|
|
|
e, |
|
|
|
x |
|
) |
| |
Value: { \
e += cBits::Rotl<UINT32>(a,5) +
F(b,c,d) +
K + x; b = cBits::Rotl<UINT32>(b,30); \
}
Value: ( \
temp = w[( t - 3 ) & 0x0F] ^ w[( t - 8 ) & 0x0F] ^ w[( t - 14 ) & 0x0F] ^ w[ t & 0x0F], \
( w[t & 0x0F] = cBits::Rotl<UINT32>(temp,1) ) \
)