📄 ssha.h
字号:
// ssha.h// Scott McPeak's transmogrify of Wei Dai and Peter Gutmann's code, to// copyright SafeTP Development Group, Inc., 2000 Terms of use are as specified in license.txt// use a simpler subset of C++ for greater portability#ifndef __SSHA_H#define __SSHA_H// ---------------- iterhash.h, explicit word32 -------------------------#include "cryptlib.h"#include "misc.h"#include "datablok.h" // DataBlockclass IteratedHash32 : public HashModule{public: IteratedHash32(unsigned int blockSize, unsigned int digestSize); ~IteratedHash32(); void Update(const byte *input, unsigned int length); typedef word32 HashWordType;protected: void PadLastBlock(unsigned int lastBlockSize, byte padFirst=0x80); virtual void Init() =0; virtual void HashBlock(const word32 *input) =0; unsigned int blockSize; word32 countLo, countHi; // 64-bit bit count SecBlock<word32> data; // Data buffer SecBlock<word32> digest; // Message digest};// ---------- end of iterhash.h derivatives --------------------class SHA : public IteratedHash32{public: SHA(); void Final(byte *hash); unsigned int DigestSize() const {return DIGESTSIZE;};#ifdef SAFETP unsigned int DataSize() const { return DATASIZE; }#endif static void CorrectEndianess(word32 *out, const word32 *in, unsigned int byteCount) {#ifdef SAFETP_LITTLE_ENDIAN byteReverse(out, in, byteCount);#else if (in!=out) memcpy(out, in, byteCount);#endif } static void Transform(word32 *digest, const word32 *data ); enum {DIGESTSIZE = 20, DATASIZE = 64};private: void Init(); void HashBlock(const word32 *input);};// generic hashDataBlock hashDataBlock(DataBlock const &data, HashModule &hash);DataBlock Sha1(DataBlock const &data);#endif // __SSHA_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -