📄 base64_code.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 + -