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

📄 heccalgo.h

📁 枚举主机网络设备
💻 H
字号:
// HEccAlgo.h: interface for the CHEccAlgo class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_HECCALGO_H__90CE6596_85F7_434F_9715_EA18641EDE41__INCLUDED_)
#define AFX_HECCALGO_H__90CE6596_85F7_434F_9715_EA18641EDE41__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "HLib32.h"
#include "import.h"

class AFX_EXT_CLASS CHEccAlgo  
{
public:
	CHEccAlgo();
	virtual ~CHEccAlgo();

private:
///////////////////////////////////////////////////////////////////////////////////
//
//				以下是椭圆曲线上数字签名的函数定义
//
//////////////////////////////////////////////////////////////////////////////////
	static void preqq();
	static void xyadd(BYTE a[48],BYTE b[48],BYTE c[48]);
	static void xyaddd1(BYTE a[48]);
	static void xysub(BYTE a[48],BYTE b[48],BYTE c[48]);
	static void xysubb1(BYTE a[48]);
	static void mulxy(BYTE a[32],BYTE b[32],BYTE c[48]);
	static void xydiv(BYTE a[48],BYTE b[32],BYTE q[48],BYTE r[32]);
	static void rround(BYTE a1[48],BYTE b1[32],BYTE a2[48],BYTE b2[32],BYTE c[32]);
	static void rmod(BYTE c0[32],BYTE c1[32],BYTE r0[48],BYTE r1[48]);
	static void rxymul(BYTE c0[32],BYTE c1[32],BYTE d0[32],BYTE d1[32],BYTE q0[48],BYTE q1[48]);
	static void rxydiv(BYTE c0[32],BYTE c1[32],BYTE d0[32],BYTE d1[32],BYTE q0[32],BYTE q1[32]);
	static void rinv(BYTE c0[32],BYTE c1[32],BYTE r0[32],BYTE r1[32]);
	static void radic(BYTE c0[32],BYTE useq[640]);
	static void radic1(BYTE c0[32],BYTE c1[32],BYTE useq[640]);
	static void abadd(BYTE a[30],BYTE b[30]);
	static void mod239(BYTE a[60],BYTE b[30]);
	static void squ239(BYTE a[30],BYTE b[30]);
	static void abcf(BYTE a[30],BYTE b[30],BYTE c[30]);
	static void ysf(BYTE a[30],BYTE b[30]);
	static int  cgxs(BYTE *a);
	static void ellisoinv(BYTE a[32],BYTE b[32],BYTE c[32],BYTE d[32]);
	static void elliso(BYTE a[32],BYTE b[32],BYTE c[32],BYTE d[32]);
	static void ell2x(BYTE a[30],BYTE b[30],BYTE c[30],BYTE d[30]);
	static void ellxy(BYTE a0[30],BYTE a1[30],BYTE b0[30],BYTE b1[30],BYTE c0[30],BYTE c1[30]);
	static void ellaut(BYTE a0[30],BYTE a1[30],BYTE b0[30],BYTE b1[30]);
	static int  valpoint(BYTE x0[32],BYTE y0[32]);
	static int  valpoint0(BYTE x0[32],BYTE y0[32]);
	static void ellmult(BYTE *a,BYTE *b,BYTE x0[32],BYTE y0[32]);
	static int  campn(BYTE *a,BYTE *b,unsigned int n);
	static void hashchange(BYTE *mes,BYTE mmm[32]);

///////////////////////////////////////////////////////////////////////////////////
//
//				以下是椭圆曲线上加/脱密的函数定义
//
//////////////////////////////////////////////////////////////////////////////////
	static void jellsign(BYTE bufPuk[288],BYTE bufPrk[36],DWORD mesh[14],BYTE mess[80]);
	static int jellval(BYTE bufPuk[288],DWORD mesh[14],BYTE mess[80]);
	static void jxyadd(BYTE a[80],BYTE b[80],BYTE c[80]);
	static void jxyaddd1(BYTE a[80]);
	static void jxysub(BYTE a[80],BYTE b[80],BYTE c[80]);
	static void jxysubb1(BYTE a[80]);
	static void jmulxy(BYTE a[40],BYTE b[40],BYTE c[80]);
	static void jxydiv(BYTE a[80],BYTE b[40],BYTE q[80],BYTE r[40]);
	static void jrround(BYTE a1[80],BYTE b1[40],BYTE a2[80],BYTE b2[40],BYTE c[40]);
	static void jrmod(BYTE c0[40],BYTE c1[40],BYTE r0[40],BYTE r1[40]);
	static void jrxymul(BYTE c0[40],BYTE c1[40],BYTE d0[40],BYTE d1[40],BYTE q0[80],BYTE q1[80]);
	static void jrxydiv(BYTE c0[40],BYTE c1[40],BYTE d0[40],BYTE d1[40],BYTE q0[40],BYTE q1[40]);
	static void jrinv(BYTE c0[40],BYTE c1[40],BYTE r0[40],BYTE r1[40]);
	static void jradic1(BYTE c0[40],BYTE c1[40],BYTE useq[1024]);
	static void jabadd(BYTE a[36],BYTE b[36]);
	static void mod283(BYTE a[72],BYTE b[36]);
	static void squ283(BYTE a[36],BYTE b[36]);
	static void jabcf(BYTE a[36],BYTE b[36],BYTE c[36]);
	static void jysf(BYTE a[36],BYTE b[36]);
	static int jcgxs(BYTE *a);
	static void jellisoinv(BYTE a[36],BYTE b[36],BYTE c[36],BYTE d[36]);
	static void jelliso(BYTE a[36],BYTE b[36],BYTE c[36],BYTE d[36]);
	static void jell2x(BYTE a[36],BYTE b[36],BYTE c[36],BYTE d[36]);
	static void jellxy(BYTE a0[36],BYTE a1[36],BYTE b0[36],BYTE b1[36],BYTE c0[36],BYTE c1[36]);
	static void jellaut(BYTE a0[36],BYTE a1[36],BYTE b0[36],BYTE b1[36]);
	static int jvalpoint(BYTE x0[36],BYTE y0[36]);
	static int jvalpoint0(BYTE x0[36],BYTE y0[36]);
	static void jellmult(BYTE *a,BYTE *b,BYTE x0[36],BYTE y0[36]);
	static void jpreqq();
	static void jmhash(DWORD TEXTLEN, BYTE *TEXTADR);
	static void hhash(DWORD TEXTLEN, BYTE *TEXTADR,BYTE *HASHADR);
	static void jmhashend(DWORD TEXTLEN, BYTE *TEXTADR,unsigned int flag,DWORD len);
	static void hhashend(DWORD TEXTLEN, BYTE *TEXTADR,BYTE *HASHADR,DWORD len);
	static void tmhash(DWORD TEXTLEN, BYTE *TEXTADR);
	static void tmhashend(DWORD TEXTLEN, BYTE *TEXTADR,unsigned int flag,DWORD len);
	static void jhashchange(BYTE *mes,BYTE mmm[36]);


///////////////////////////////////////////////////////////////////////////////////
//
//				以下是hash上的函数定义
//
//////////////////////////////////////////////////////////////////////////////////
static void hssh(DWORD *hssh_data);
static void schs();//消息调度,处理long xi[16][2]中的数据,处理后仍存放在xi[16][2]中
static void passhs(unsigned int pass_i);

//外部接口
public:
static void GenKeyPairForSign(BYTE bufPuk[240],BYTE bufPrk[30]);
static void Sign(BYTE *buf,DWORD dwLen,BYTE bufPuk[240],BYTE bufPrk[30],BYTE bufSign[64]);
static void Sign(BYTE bufHash[56],BYTE bufPuk[240],BYTE bufPrk[30],BYTE bufSign[64]);
static int VerifySign(BYTE *buf,DWORD dwLen,BYTE bufPuk[240],BYTE bufSign[64]);
static int VerifySign(BYTE bufHash[56],BYTE bufPuk[240],BYTE bufSign[64]);

/////////////////////////////////////////////////////////////////////////////
//                椭圆曲线上的接口函数
//////////////////////////////////////////////////////////////////////////////
static void GenKeyPairForEncrypt(BYTE bufPuk[288],BYTE bufPrk[36]);
static DWORD Encrypt(BYTE *buf,DWORD dwLen,BYTE bufPuk[288]);
static DWORD Decrypt(BYTE *buf,DWORD dwLen,BYTE bufPuk[288],BYTE bufPrk[36]);

/////////////////////////////////////////////////////////////////////////////
//                杂凑函数上的接口函数
//////////////////////////////////////////////////////////////////////////////
static void HashFile(char *szFile,DWORD dwLen[2],BYTE bufHash[56]);
static void Hash(BYTE *buf,DWORD dwLen,BYTE bufHash[56]);

};

#endif // !defined(AFX_HECCALGO_H__90CE6596_85F7_434F_9715_EA18641EDE41__INCLUDED_)

⌨️ 快捷键说明

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