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

📄 cshift.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.                * *                                                                  * ********************************************************************//* *	shift(OPa,exp2b,result) */#include "arithmetic.h"void	_shift(A,exp2b,S)L_NUMBER	A[],S[];int		exp2b;{	register	int wordshift;	register	int bitshift;	register	int left = exp2b>0;	register	int right = exp2b<0;	register L_NUMBER   cnt;	register L_NUMBER   *Ap;	register L_NUMBER   *Sp;	register 	int WLmBITS;	register L_NUMBER	dH;	register L_NUMBER	dL;	if (right){		bitshift = (-exp2b) & (WLNG-1);	WLmBITS = WLNG - bitshift;		wordshift = (-exp2b) >>SWBITS;		cnt = lngofln(A) - wordshift;		if (cnt<=0) { lngofln(S) = 0; return; }		Sp = S;		Ap = A + wordshift;		lngofln(S) = cnt;		dH = dL = *++Ap;		for ( ; cnt>1 ; cnt-- ) {			dH = *++Ap;			if(bitshift){				*++Sp = (dH<<WLmBITS) | (dL>>bitshift);				dL = dH;			} else	*++Sp = dH;		}		dH >>= bitshift;		if (dH) *++Sp = dH;		else	lngofln(S)--;		return;	}	if (left) {		cnt = lngofln(A);		bitshift = (exp2b) & (WLNG-1);	WLmBITS = WLNG - bitshift;		wordshift = (exp2b) >>SWBITS;		lngofln(S) = wordshift + cnt;		Sp = S + lngofln(S);		Ap = A + cnt;		dH = dL = *Ap;/* sparc arch can't handle shifs with word length !!! */		if (bitshift) {			if (dL >>= WLmBITS){ lngofln(S)++; *(Sp+1) = dL; }		}		else    dL = 0;		for( ; cnt>1; cnt--){			dL = *--Ap;			if(bitshift)				*Sp-- = (dH<<bitshift) | (dL>>WLmBITS);			else	*Sp-- = dH;			dH = dL;		}		*Sp-- = dH<<bitshift;		for( ; Sp > S; Sp--) *Sp = 0;		return;	}	trans(A,S); 	return;}

⌨️ 快捷键说明

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