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

📄 cryputil.h

📁 伯克利做的SFTP安全文件传输协议
💻 H
字号:
// cryputil.h// a number of utilities built on crypto++// copyright SafeTP Development Group, Inc., 2000  Terms of use are as specified in license.txt#ifndef __CRYPUTIL_H#define __CRYPUTIL_H#include "trans.h"        // Trans#include "cryptlib.h"     // BlockTransformation#include "modes.h"        // CBC{En,De}cryption#include "ssha.h"         // SHA#include "shmac.h"        // HMAC#include "des.h"          // TripleDES_{En,De}cryption// shared-key encryption, with padding as necessaryclass EncryptBlockTrans : public Trans {private:  // the encryption transformation object  BlockTransformation &blockTrans;public:  // ctor  EncryptBlockTrans(BlockTransformation &bt)    : blockTrans(bt) {}  virtual int minInputSize() const;  virtual int maxInputSize() const;  virtual int minOutputSize(int inputSize) const;  virtual int maxOutputSize(int inputSize) const;  virtual void trans(DataBlock &data);};// shared-key decryption, which undoes padding done by EncryptBlockTransclass DecryptBlockTrans : public Trans {private:  // the encryption transformation object  BlockTransformation &blockTrans;public:  // ctor  DecryptBlockTrans(BlockTransformation &bt)    : blockTrans(bt) {}  virtual int minInputSize() const;  virtual int maxInputSize() const;  virtual int minOutputSize(int inputSize) const;  virtual int maxOutputSize(int inputSize) const;  virtual void trans(DataBlock &data);};// convenient wrappers for cbc-3desclass CBC3DESEncTrans : public EncryptBlockTrans {  TripleDES_Encryption tdes;  CBCEncryption cbc;public:  CBC3DESEncTrans(DataBlock const &key, DataBlock const &IV);    // 24 bytes for 3des key and    // 8 bytes for CBC initialization vector};class CBC3DESDecTrans : public DecryptBlockTrans {  TripleDES_Decryption tdes;  CBCDecryption cbc;public:  CBC3DESDecTrans(DataBlock const &key, DataBlock const &IV);    // 24 bytes for 3des key and    // 8 bytes for CBC initialization vector};// wrapper for SHA1HMACclass SHA1HMAC : public HMAC {  SHA *sha;private:  SHA *initSha();    // necessary to defeat braindead C++ member initializer order semanticspublic:  SHA1HMAC(DataBlock const &key);    // key can be of any size, but should be at least 16 bytes  ~SHA1HMAC();};// most of the DataBlock utilities have been moved to blokutil.hvoid checkNBO32(DataBlock &stream, long value, char const *message);// HMAC computation, verificationvoid appendDigest(DataBlock &data, HashModule &hash);void checkDigest(DataBlock &data, MessageAuthenticationCode &mac,                 char const *message);// These had to be moved to ssha to prevent libsmcrypto.a from// depending upon libsftp.a// generic hash//DataBlock hashDataBlock(DataBlock const &data, HashModule &hash);//DataBlock Sha1(DataBlock const &data);// DSAvoid dsaSign(DataBlock const &privKey, DataBlock &data);void dsaVerify(DataBlock const &pubKey, DataBlock &data,               char const *message);// ElGamalDataBlock elGamalEncrypt(DataBlock const &pubKey, DataBlock const &src);DataBlock elGamalDecrypt(DataBlock const &privKey, DataBlock const &src);#endif // __CRYPUTIL_H

⌨️ 快捷键说明

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