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

📄 elgamal.h

📁 各种加密算法的集合
💻 H
字号:
#ifndef CRYPTOPP_ELGAMAL_H 
#define CRYPTOPP_ELGAMAL_H 
 
#include "modexppc.h" 
 
NAMESPACE_BEGIN(CryptoPP) 
 
class ElGamalEncryptor : public PK_WithPrecomputation<PK_FixedLengthEncryptor> 
{ 
public: 
	ElGamalEncryptor(const Integer &p, const Integer &g, const Integer &y); 
	ElGamalEncryptor(BufferedTransformation &bt); 
 
	void DEREncode(BufferedTransformation &bt) const; 
 
	void Precompute(unsigned int precomputationStorage=16); 
	void LoadPrecomputation(BufferedTransformation &storedPrecomputation); 
	void SavePrecomputation(BufferedTransformation &storedPrecomputation) const; 
 
	void Encrypt(RandomNumberGenerator &rng, const byte *plainText, unsigned int plainTextLength, byte *cipherText); 
 
	unsigned int MaxPlainTextLength() const {return STDMIN(255U, modulusLen-3);} 
	unsigned int CipherTextLength() const {return 2*modulusLen;} 
 
protected: 
	ElGamalEncryptor() {} 
	void RawEncrypt(const Integer &k, const Integer &m, Integer &a, Integer &b) const; 
	unsigned int ExponentBitLength() const; 
 
	Integer p, g, y; 
	unsigned int modulusLen; 
	ModExpPrecomputation gpc, ypc; 
}; 
 
class ElGamalDecryptor : public ElGamalEncryptor, public PK_FixedLengthDecryptor 
{ 
public: 
	ElGamalDecryptor(const Integer &p, const Integer &g, const Integer &y, const Integer &x); 
	ElGamalDecryptor(RandomNumberGenerator &rng, unsigned int pbits); 
	// generate a random private key, given p and g 
	ElGamalDecryptor(RandomNumberGenerator &rng, const Integer &p, const Integer &g); 
 
	ElGamalDecryptor(BufferedTransformation &bt); 
	void DEREncode(BufferedTransformation &bt) const; 
 
	unsigned int Decrypt(const byte *cipherText, byte *plainText); 
 
protected: 
	void RawDecrypt(const Integer &a, const Integer &b, Integer &m) const; 
 
	Integer x; 
}; 
 
NAMESPACE_END 
 
#endif 

⌨️ 快捷键说明

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