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

📄 base64_code.cpp

📁 base64加密算法源代码
💻 CPP
字号:
// VC6.0 2008/8/31   zhongyunde@tom.com

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void base64(void *data, int length);

#define    MD5_LENGTH        40

int main(char argc,char *argv[])
{
	int i;
	unsigned char ch;
	unsigned char *str=NULL;
	int md5[4];      // 注意一定 int 类型
	char md5_string[9];
	char MD5Code[MD5_LENGTH];
    if(argc != 2) {
		printf("\nusage:");
		printf("\nname passward:");
		exit(0);
	}
	strcpy(MD5Code,argv[1]);
	if (strlen(MD5Code) != 32)
	{
		printf("\n Invalid passward, 请输入32个字符的md5字符串:\n");
		exit(0);
	}
	//printf("\n%d,%d",strlen(MD5Code),sizeof(MD5Code));
    for(i=0;i<4;++i)
	{
		//fgets(md5_string,9,stdin);
		for(int j=0;j<8;j++)
			md5_string[j] = MD5Code[8*i+j];
		md5_string[9] = 0;
		sscanf(md5_string, "%x",&md5[i]);
		//翻转字节序
		str = (unsigned char *)(md5 + i);               
		ch = str[0];
		str[0] = str[3];
		str[3] = ch;
		ch = str[1];
		str[1] = str[2];
		str[2] = ch;
	}
	printf("\nbase64加密后的字符串:");
	base64(md5,sizeof(md5));

	getchar();
    return 0;
}

void base64(void *data, int length)
{
	const char Base64_Alphabet[]=
        "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
	int i;
	unsigned char ch[4];
	unsigned char *str = (unsigned char*)data;
	
	for(i=0;i+2<length;i+=3)
	{
		ch[0] = str[i]>>2;
		ch[1] = (str[i]<<4 & 0x3f) | (str[i+1]>>4);
		ch[2] = (str[i+1]<<2 & 0x3f) | (str[i+2]>>6);
		ch[3] = str[i+2] & 0x3f;
		
		putchar(Base64_Alphabet[ch[0]]);
		putchar(Base64_Alphabet[ch[1]]);
		putchar(Base64_Alphabet[ch[2]]);
		putchar(Base64_Alphabet[ch[3]]);               
		
	}
	
	if(length % 3 == 0)
	{
		puts("\n");
		return ;
	}
	
	if(length % 3 == 1)
	{
		putchar(Base64_Alphabet[str[i]>>2]);
		putchar(Base64_Alphabet[str[i]<<4 & 0x30]);
		puts("==\n");
		return ;
	}
	
	if(length % 3 == 2)
	{
		putchar(Base64_Alphabet[str[i]>>2]);
		putchar(Base64_Alphabet[(str[i]<<4 & 0x3f) | (str[i+1]>>4)]);
		putchar(Base64_Alphabet[(str[i+1]<<2 & 0x3f)]);
		puts("=\n");
	}
}

⌨️ 快捷键说明

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