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

📄 rsablock.c

📁 SecuDe是一个由安全应用程序接口组成,对验证机制、证件处理、PEM、X.400报文处理和密钥管理提供支持。SecuDe提供DES、 RSA杂凑函数、密钥生成以及数字签名的生成和核实等多种密码机制。
💻 C
字号:
/* *  SecuDE Release 4.1 (GMD) *//******************************************************************** * Copyright (C) 1991, GMD. All rights reserved.                    * *                                                                  * *                                                                  * *                         NOTICE                                   * *                                                                  * *    Acquisition, use, and distribution of this module             * *    and related materials are subject to restrictions             * *    mentioned in each volume of the documentation.                * *                                                                  * ********************************************************************//* *	RSA - one block encryption / decryption * *	it depends on the calling algorithm (resp type of key), which *	method is used for computing the block. * *	rsa_sign, rsa_decrypt: (secure)private key is CARDINFO *	rsa_auth, rsa_encrypt: public key is exp, modul */#include "arithmetic.h"#include  "rsa.h"void rsa_encblock(in,enc,pk)register L_NUMBER       in[], enc[];Pkeys   *pk;{extern  L_NUMBER   lz_fermat5[];register int       i;	if (comp(pk->e,lz_fermat5)){ /* then use mexp */		mexp(in,pk->e,enc,pk->n);	} else {/* exp == lz_fermat5 */		mmult(in,in,enc,pk->n);		for(i=2; i<=16; i++)		    mmult(enc,enc,enc,pk->n);		mmult(enc,in,enc,pk->n);	}	return;}void rsa_decblock(in,dec,sk)register L_NUMBER in[], dec[];register Skeys    *sk;      /* for efficiency, precomputed values */{	extern  L_NUMBER        lz_eins[];	extern  L_NUMBER        lz_fermat5[];		L_NUMBER	messq[MAXLGTH];		L_NUMBER	acc[MAXLGTH];	/* compute values, if necessary */	if (!lngofln(sk->u)) {		sub(sk->p,lz_eins,acc);		mdiv(lz_eins,lz_fermat5,sk->sp,acc);		sub(sk->q,lz_eins,acc);		mdiv(lz_eins,lz_fermat5,sk->sq,acc);		mdiv(lz_eins,sk->q,sk->u,sk->p);	}	/* decrypt signature */	div   (in,sk->q,messq,messq);	div   (in,sk->p,dec,dec);	mexp  (messq,sk->sq,messq,sk->q);	mexp  (dec,sk->sp,dec,sk->p);	/* apply chinese residual lemma */	msub  (dec,messq,dec,sk->p);	mmult (dec,sk->u,dec,sk->p);	mult  (dec,sk->q,dec);	add   (dec,messq,dec);	return;}

⌨️ 快捷键说明

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