pass.c

来自「一个简单实用的加解密算法」· C语言 代码 · 共 90 行

C
90
字号
#include "pass.h"static char HexArray[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};/***************************Encode132***********//* Future: 将一个字符串按一定算法进行加密         *//* Input:   char *sIn: 要加密的字符串           *//*                     每个字符会产生3位        *//* Output:  char *sOut: 加密后的字符串          *//* ********************************************/     void Encode132(char *sIn,char *sOut){	int iRan,iPos;	unsigned i;	char bAscii,bTemp;	char Result[100];   	if(strlen(sIn)==0)   	{   		strcpy(sOut,"");		return;   	}   	memset(Result,0,100);	srand(time(NULL));	iRan=rand()%4;	iPos=0;	for(i=0;i<strlen(sIn);i++)	{		bAscii=sIn[i];    	bTemp=bAscii;    	bTemp=bTemp >> 5; //取第5高位    	Result[iPos++]=HexArray[bTemp];    	    	bTemp=bAscii;      	bTemp=(bTemp & 0x1C) >> 2; /* 1C是11100,再右移2位,即取中间3位*/    	Result[iPos++]=HexArray[bTemp];    	    	bTemp=bAscii;    	bTemp=bTemp & 3; /* 3是0x11,即取最后2位*/		bTemp=iRan*4+bTemp; //虽然加了随机数,由于*4,即是加在第3位上,所以不影响,仅起迷惑作用。    	Result[iPos++]=HexArray[bTemp];  	}  	Result[iPos++]=iRan+0x30; //最后再加一位迷惑位  	Result[iPos]='\0';  	strcpy(sOut,Result);}/***************************Decode132***********//* Future: 将一个字符串按一定算法进行加密         *//* Input:   char *sIn: 要解密的字符串           *//* Output:  char *sOut: 解密后的字符串          *//* ********************************************/void Decode132(char *sIn,char *sOut){	unsigned i,j,iPos;  	char bAscii;  	char Result[100];	if (strlen(sIn)<4) 	{		strcpy(sOut,"");		return;	}  	i=0;  	memset(Result,0,100);  	iPos=0;  	while (1)  	{		j=0;		while (1)		{	      	if (sIn[i+2]==HexArray[j]) break;      		j++;      		if (j>=16)       		{      			strcpy(sOut,"");       			return;      		}		}		bAscii=(sIn[i]-0x30)*32+(sIn[i+1]-0x30)*4+(j & 3);		Result[iPos++]=bAscii;		i+=3;		if ((i+1)>=strlen(sIn)) break;	}	Result[iPos]='\0';	strcpy(sOut,Result);}/***************************LicenseCheck*******//* Future: 判断一个可执行程序是否经过许可认证     *//* Input:   char *strProgramName: 程序名       *//* Return:  -1: 程序名.key 文件不存在

⌨️ 快捷键说明

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