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 + -
显示快捷键?