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

📄 flint.h

📁 rsa的c++实现,此程序实现使用公钥的加密
💻 H
📖 第 1 页 / 共 2 页
字号:
#define eqz_l(a_l) \
    (equ_l ((a_l), nul_l) == 1)         /* a_l == 0         */


#define EQONE_L(a_l) \
    (equ_l ((a_l), one_l) == 1)         /* a_l == 1         */

#define eqone_l(a_l) \
    (equ_l ((a_l), one_l) == 1)         /* a_l == 1         */


#define SET_L(a_l,ul)\
    ul2clint_l ((a_l), (ul))            /* a_l <-- unsigned long ul */

#define set_l(a_l,ul)\
    ul2clint_l ((a_l), (ul))            /* a_l <-- unsigned long ul */


#define ASSIGN_L(dest_l,src_l)\
    cpy_l ((dest_l), (src_l))           /* src_l <-- dest_l */

#define assign_l(dest_l,src_l)\
    cpy_l ((dest_l), (src_l))           /* src_l <-- dest_l */


#define ISEVEN_L(a_l)\
    (DIGITS_L (a_l) == 0 || (DIGITS_L (a_l) > 0 && (*LSDPTR_L (a_l) & 1U) == 0))
                                        /* true: a_l is even   */

#define iseven_l(a_l)\
    (DIGITS_L (a_l) == 0 || (DIGITS_L (a_l) > 0 && (*LSDPTR_L (a_l) & 1U) == 0))
                                        /* true: a_l is even   */

#define ISODD_L(a_l)\
    (DIGITS_L (a_l) > 0 && (*LSDPTR_L (a_l) & 1U) == 1)
                                        /* true: a_l is odd */

#define isodd_l(a_l)\
    (DIGITS_L (a_l) > 0 && (*LSDPTR_L (a_l) & 1U) == 1)
                                        /* true: a_l is odd */



/* Standard-Output of CLINT variables */
#define DISP_L(S,A) printf ("%s%s\n%u bit\n\n", (S), hexstr_l(A), ld_l(A))
#define disp_l(S,A) printf ("%s%s\n%u bit\n\n", (S), hexstr_l(A), ld_l(A))


/* Initialization of pseudorandom number generators */
/* with values derived from time                    */
#define INITRAND_LT()\
        ulseed64_l ((unsigned long)time(NULL))

#define initrand_lt()\
        ulseed64_l ((unsigned long)time(NULL))


#define INITRAND64_LT()\
        ulseed64_l ((unsigned long)time(NULL))

#define initrand64_lt()\
        ulseed64_l ((unsigned long)time(NULL))


#define INITRANDBBS_LT()\
        ulseedBBS_l ((unsigned long)time(NULL))

#define initrandBBS_lt()\
        ulseedBBS_l ((unsigned long)time(NULL))


/* Compatibility with version 1.0 : Macro clint2str_l */

#define CLINT2STR_L(n_l,b) xclint2str_l ((n_l), (b), 0)
#define clint2str_l(n_l,b) xclint2str_l ((n_l), (b), 0)


/* Implementation of functions xxxstr_l as macros */

#define HEXSTR_L(n_l) xclint2str_l ((n_l), 16, 0)
#define hexstr_l(n_l) xclint2str_l ((n_l), 16, 0)

#define DECSTR_L(n_l) xclint2str_l ((n_l), 10, 0)
#define decstr_l(n_l) xclint2str_l ((n_l), 10, 0)

#define OCTSTR_L(n_l) xclint2str_l ((n_l), 8, 0)
#define octstr_l(n_l) xclint2str_l ((n_l), 8, 0)

#define BINSTR_L(n_l) xclint2str_l ((n_l), 2, 0)
#define binstr_l(n_l) xclint2str_l ((n_l), 2, 0)


/* Simple factorization with sieve_l() */

#define SFACTOR_L(n_l) sieve_l ((n_l), NOOFSMALLPRIMES);
#define sfactor_l(n_l) sieve_l ((n_l), NOOFSMALLPRIMES);


/* Miller-Rabin primality test, parameters according to Lenstra and [MOV] */

#define ISPRIME_L(n) prime_l ((n), 302, 0)
#define isprime_l(n) prime_l ((n), 302, 0)




/* Purge of CLINT variables by overwriting the storage */

#ifdef FLINT_SECURE
  #define ZEROCLINT_L(A)  Assert (sizeof(A) >= CLINTMAXBYTE);\
                          purge_l (A)

  #define ZEROCLINTD_L(A) Assert (sizeof(A) >= sizeof(CLINTD));\
                          purged_l (A)

  #define ZEROCLINTQ_L(A) Assert (sizeof(A) >= sizeof(CLINTQ));\
                          purgeq_l (A)
#else
  #define ZEROCLINT_L(A)  (void)0
  #define ZEROCLINTD_L(A) (void)0
  #define ZEROCLINTQ_L(A) (void)0
#endif


/***********************************************************/
/* Typedefs                                                */
/***********************************************************/

typedef unsigned short clint;
typedef unsigned long clintd;
typedef clint CLINT[CLINTMAXSHORT];
typedef clint CLINTD[1 + (CLINTMAXDIGIT << 1)];
typedef clint CLINTQ[1 + (CLINTMAXDIGIT << 2)];
typedef clint *CLINTPTR;
#ifndef UCHAR
typedef unsigned char  UCHAR;
#endif  /* UCHAR */
#ifndef USHORT
typedef unsigned short USHORT;
#endif  /* USHORT */
#ifndef ULONG
typedef unsigned long  ULONG;
#endif  /* ULONG */


/***********************************************************/
/* Function prototypes                                     */
/***********************************************************/

#ifndef __FLINT_API
#ifdef FLINT_USEDLL
#define __FLINT_API                   __cdecl
#else
#define __FLINT_API                   /**/
#endif /* FLINT_USEDLL */
#endif /* !defined __FLINT_API */

#if !defined __FLINT_API_A
#if defined __GNUC__ && !defined __cdecl
#define __FLINT_API_A                 /**/
#else
#define __FLINT_API_A                 __cdecl
#endif /* !defined __GNUC__ */
#endif /* !defined __FLINT_API_A */


/* If the FLINT/C-Package is used under MS Visual C/C++ as DLL,               */
/* all modules accessing data nul_l, one_l, two_l or smallprimes from outside */
/* the DLL must be compiled with -D__FLINT_API_DATA=__declspec(dllimport)     */

#ifndef __FLINT_API_DATA
#if (defined _MSC_VER && _MSC_VER >= 11) && defined FLINT_USEDLL
#define __FLINT_API_DATA              __declspec(dllimport)
#else
#define __FLINT_API_DATA              /**/
#endif /* MSC_VER && FLINT_USEDLL */
#endif /* !defined __FLINT_API_DATA */


extern int      __FLINT_API  add_l         (CLINT, CLINT, CLINT);
extern int      __FLINT_API  cmp_l         (CLINT, CLINT);
extern void     __FLINT_API  cpy_l         (CLINT, CLINT);
extern clint *  __FLINT_API  create_l      (void);
extern int      __FLINT_API  create_reg_l  (void);
extern int      __FLINT_API  dec_l         (CLINT);

#if !defined FLINT_ASM
extern int      __FLINT_API  div_l         (CLINT, CLINT, CLINT, CLINT);
#else
extern int      __FLINT_API_A div_l        (CLINT, CLINT, CLINT, CLINT);
#endif /* FLINT_ASM */


extern void     __FLINT_API  and_l         (CLINT, CLINT, CLINT);
extern int      __FLINT_API  byte2clint_l  (CLINT, UCHAR *, int);
extern UCHAR *  __FLINT_API  clint2byte_l  (CLINT, int *);
extern char *   __FLINT_API  xclint2str_l  (CLINT, USHORT, int);
extern int      __FLINT_API  equ_l         (CLINT, CLINT);
extern char *   __FLINT_API  fbinstr_l     (CLINT);
extern char *   __FLINT_API  fdecstr_l     (CLINT);
extern char *   __FLINT_API  fhexstr_l     (CLINT);
extern char *   __FLINT_API  foctstr_l     (CLINT);
extern void     __FLINT_API  free_l        (CLINT);
extern void     __FLINT_API  free_reg_l    (void);
extern void     __FLINT_API  fswap_l       (CLINT, CLINT);
extern ULONG *  __FLINT_API  genprimes     (ULONG);
extern clint *  __FLINT_API  get_reg_l     (unsigned int);
extern void     __FLINT_API  gcd_l         (CLINT, CLINT, CLINT);
extern int      __FLINT_API  inc_l         (CLINT);
extern void     __FLINT_API  inv_l         (CLINT, CLINT, CLINT, CLINT);
extern USHORT   __FLINT_API  invmon_l      (CLINT);
extern void     __FLINT_API  iroot_l       (CLINT, CLINT);
extern unsigned __FLINT_API  ld_l          (CLINT);
extern int      __FLINT_API  madd_l        (CLINT, CLINT, CLINT, CLINT);
extern int      __FLINT_API  mequ_l        (CLINT, CLINT, CLINT);
extern int      __FLINT_API  mexp_l        (CLINT, CLINT, CLINT, CLINT);
extern int      __FLINT_API  mexpk_l       (CLINT, CLINT, CLINT, CLINT);
extern int      __FLINT_API  mexpkm_l      (CLINT, CLINT, CLINT, CLINT);
extern int      __FLINT_API  mmul_l        (CLINT, CLINT, CLINT, CLINT);
extern int      __FLINT_API  mod2_l        (CLINT, ULONG, CLINT);
extern int      __FLINT_API  mod_l         (CLINT, CLINT, CLINT);
extern int      __FLINT_API  msqr_l        (CLINT, CLINT, CLINT);
extern int      __FLINT_API  msub_l        (CLINT, CLINT, CLINT, CLINT);
extern int      __FLINT_API  mul_l         (CLINT, CLINT, CLINT);
extern void     __FLINT_API  mulmon_l      (CLINT, CLINT, CLINT, USHORT, USHORT, CLINT);
extern void     __FLINT_API  or_l          (CLINT, CLINT, CLINT);
extern int      __FLINT_API  prime_l       (CLINT, unsigned int, unsigned int);
extern void     __FLINT_API  purge_l       (CLINT);
extern void     __FLINT_API  purged_l      (CLINTD);
extern int      __FLINT_API  purge_reg_l   (unsigned int);
extern int      __FLINT_API  purgeall_reg_l(void);
extern clint *  __FLINT_API  rand64_l      (void);
extern void     __FLINT_API  rand_l        (CLINT, int);
extern void     __FLINT_API  randBBS_l     (CLINT, int);
extern int      __FLINT_API  randbit_l     (void);
extern clint *  __FLINT_API  seed64_l      (CLINT);
extern int      __FLINT_API  seedBBS_l     (CLINT);
extern void     __FLINT_API  set_noofregs_l(unsigned int);
extern int      __FLINT_API  setbit_l      (CLINT, unsigned int);
extern clint *  __FLINT_API  setmax_l      (CLINT);
extern int      __FLINT_API  shift_l       (CLINT, long int);
extern int      __FLINT_API  shl_l         (CLINT);
extern int      __FLINT_API  shr_l         (CLINT);
extern USHORT   __FLINT_API  sieve_l       (CLINT, unsigned int);
extern int      __FLINT_API  sqr_l         (CLINT, CLINT);
extern void     __FLINT_API  sqrmon_l      (CLINT, CLINT, USHORT, USHORT, CLINT);
extern int      __FLINT_API  str2clint_l   (CLINT, char *, USHORT);
extern char *   __FLINT_API  strlwr_l      (char *);
extern char *   __FLINT_API  strrev_l      (char *);
extern char *   __FLINT_API  strupr_l      (char *);
extern int      __FLINT_API  sub_l         (CLINT, CLINT, CLINT);
extern int      __FLINT_API  tolower_l     (int);
extern int      __FLINT_API  toupper_l     (int);
extern void     __FLINT_API  u2clint_l     (CLINT, USHORT);
extern int      __FLINT_API  uadd_l        (CLINT, USHORT, CLINT);
extern UCHAR    __FLINT_API  ucrand64_l    (void);
extern UCHAR    __FLINT_API  ucrandBBS_l   (void);
extern int      __FLINT_API  udiv_l        (CLINT, USHORT, CLINT, CLINT);
extern void     __FLINT_API  ul2clint_l    (CLINT, ULONG);
extern ULONG    __FLINT_API  ulrand64_l    (void);
extern ULONG    __FLINT_API  ulrandBBS_l   (void);
extern clint *  __FLINT_API  ulseed64_l    (ULONG);
extern void     __FLINT_API  ulseedBBS_l   (ULONG);
extern char *   __FLINT_API  ultoa_l       (char *, ULONG, int);
extern int      __FLINT_API  umadd_l       (CLINT, USHORT, CLINT, CLINT);
extern int      __FLINT_API  umexp_l       (CLINT, USHORT, CLINT, CLINT);
extern int      __FLINT_API  umexpm_l      (CLINT, USHORT, CLINT, CLINT);
extern int      __FLINT_API  ummul_l       (CLINT, USHORT, CLINT, CLINT);
extern USHORT   __FLINT_API  umod_l        (CLINT, USHORT);
extern int      __FLINT_API  umsub_l       (CLINT, USHORT, CLINT, CLINT);
extern int      __FLINT_API  umul_l        (CLINT, USHORT, CLINT);
extern USHORT   __FLINT_API  usrand64_l    (void);
extern USHORT   __FLINT_API  usrandBBS_l   (void);
extern int      __FLINT_API  usub_l        (CLINT, USHORT, CLINT);
extern int      __FLINT_API  vcheck_l      (CLINT);
extern ULONG    __FLINT_API  version_l     (void);
extern char *   __FLINT_API  verstr_l      (void);
extern int      __FLINT_API  wmexp_l       (USHORT, CLINT, CLINT, CLINT);
extern int      __FLINT_API  wmexpm_l      (USHORT, CLINT, CLINT, CLINT);
extern void     __FLINT_API  xgcd_l        (CLINT, CLINT, CLINT, CLINT, int *, CLINT, int *);
extern void     __FLINT_API  xor_l         (CLINT, CLINT, CLINT);
extern int      __FLINT_API  twofact_l     (CLINT, CLINT);


/* Kernel functions without Overflow-Detection */
#if defined FLINT_ASM
extern void     __FLINT_API_A mult         (CLINT, CLINT, CLINT);
extern void     __FLINT_API_A umul         (CLINT, USHORT, CLINT);
extern void     __FLINT_API_A sqr          (CLINT, CLINT);
#else
extern void     __FLINT_API  mult          (CLINT, CLINT, CLINT);
extern void     __FLINT_API  umul          (CLINT, USHORT, CLINT);
extern void     __FLINT_API  sqr           (CLINT, CLINT);
#endif
extern void     __FLINT_API  add           (CLINT, CLINT, CLINT);
extern void     __FLINT_API  sub           (CLINT, CLINT, CLINT);


/* Functions operating on signed CLINT-Values */
extern int      __FLINT_API  sadd          (CLINT, int, CLINT, int, CLINT);
extern int      __FLINT_API  ssub          (CLINT, int, CLINT, int, CLINT);
extern int      __FLINT_API  smod          (CLINT, int, CLINT, CLINT);


/* Constants */
extern clint  __FLINT_API_DATA nul_l[];
extern clint  __FLINT_API_DATA one_l[];
extern clint  __FLINT_API_DATA two_l[];
extern USHORT __FLINT_API_DATA smallprimes[];

#ifdef  __cplusplus
}
#endif

#endif /* #defined __FLINTH__ */

⌨️ 快捷键说明

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