Base64编码解码c语言实现
来源:互联网 发布:linux 查看无线网卡 编辑:程序博客网 时间:2024/05/03 06:02
void Base64Encrypt(char *clearText_in, char *cipherText_out)
{
char *p = clearText_in;
char *q = cipherText_out;
char table[65] = {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"};
if(NULL == clearText_in || !strlen(clearText_in))
return ;
for(; *p; p += 3, q += 4)
{
q[0] = table[int(p[0] >> 2)];
if(0 == p[1])
{
q[1] = table[int((p[0] & 0x03) << 4)];
q[2] = '=';
q[3] = '=';
q[4] = 0;
break;
}
q[1] = table[int(((p[0] & 0x03) << 4) | ((p[1] & 0xF0) >> 4))];
if(0 == p[2])
{
q[2] = table[int((p[1] & 0x0F) << 2)];
q[3] = '=';
q[4] = 0;
break;
}
q[2] = table[int(((p[1] & 0x0F) << 2) | ((p[2] & 0xC0) >> 6))];
q[3] = table[int(p[2] & 0x3F)];
if('\0' == p[3])
q[4] = 0;
}
}
char getByteInTable(char ch)
{
char table[65] = {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"};
int i;
for(i = 0; i < 65; ++i)
{
if(ch == table[i])
return (char)i;
}
return (char)0xff;
}
void Base64Decrypt(char *cipherText_in, char *clearText_out)
{
char ret;
char *p = cipherText_in;
char *q = clearText_out;
if(NULL == cipherText_in || !strlen(cipherText_in))
return ;
for(; *p; p += 4, q += 3)
{
ret = getByteInTable(p[0]);
if((char)0xff == ret)
break;
q[0] = ret << 2;
ret = getByteInTable(p[1]);
if((char)0xff == ret)
return;
q[0] = q[0] | (ret >> 4);
q[1] = ret << 4;
ret = getByteInTable(p[2]);
if((char)0xff == ret)
return;
q[1] = q[1] | ret >> 2;
q[2] = ret << 6;
ret = getByteInTable(p[3]);
if((char)0xff == ret)
return;
q[2] = q[2] | ret;
}
q[0] = 0;
{
char *p = clearText_in;
char *q = cipherText_out;
char table[65] = {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"};
if(NULL == clearText_in || !strlen(clearText_in))
return ;
for(; *p; p += 3, q += 4)
{
q[0] = table[int(p[0] >> 2)];
if(0 == p[1])
{
q[1] = table[int((p[0] & 0x03) << 4)];
q[2] = '=';
q[3] = '=';
q[4] = 0;
break;
}
q[1] = table[int(((p[0] & 0x03) << 4) | ((p[1] & 0xF0) >> 4))];
if(0 == p[2])
{
q[2] = table[int((p[1] & 0x0F) << 2)];
q[3] = '=';
q[4] = 0;
break;
}
q[2] = table[int(((p[1] & 0x0F) << 2) | ((p[2] & 0xC0) >> 6))];
q[3] = table[int(p[2] & 0x3F)];
if('\0' == p[3])
q[4] = 0;
}
}
char getByteInTable(char ch)
{
char table[65] = {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"};
int i;
for(i = 0; i < 65; ++i)
{
if(ch == table[i])
return (char)i;
}
return (char)0xff;
}
void Base64Decrypt(char *cipherText_in, char *clearText_out)
{
char ret;
char *p = cipherText_in;
char *q = clearText_out;
if(NULL == cipherText_in || !strlen(cipherText_in))
return ;
for(; *p; p += 4, q += 3)
{
ret = getByteInTable(p[0]);
if((char)0xff == ret)
break;
q[0] = ret << 2;
ret = getByteInTable(p[1]);
if((char)0xff == ret)
return;
q[0] = q[0] | (ret >> 4);
q[1] = ret << 4;
ret = getByteInTable(p[2]);
if((char)0xff == ret)
return;
q[1] = q[1] | ret >> 2;
q[2] = ret << 6;
ret = getByteInTable(p[3]);
if((char)0xff == ret)
return;
q[2] = q[2] | ret;
}
q[0] = 0;
}
解码部分能解出来, 不过, 估计有问题, 有空再去看看
- base64编码解码的实现(C语言)
- base64编码解码的实现(C语言)
- Base64编码解码的实现(C语言)
- Base64编码解码c语言实现
- Base64编码解码C语言实现
- Base64编码解码的实现(C语言)
- base64 编码解码 c语言实现
- base64编码、解码的C语言实现
- Base64编码解码C语言实现
- base64编码、解码的C语言实现
- base64编码、解码的C语言实现
- base64编码、解码的C语言实现
- BASE64编码、解码的C语言实现
- C语言实现Base64编码/解码
- 用C语言实现的Base64编码&amp;解码
- base64编码/解码的实现(C语言)
- 基于BASE64原理编码解码实现-----C语言
- C语言base64编码与解码
- 函数调用方式的区别[thiscall,__cdecl,__stdcall]
- screen-session 0.6.5会话管理工具
- 四大开源3d游戏引擎探究(前言上)
- 内核-编译器-busybox版本之间的关系
- Xcode中的一些代码警告的处理方法
- Base64编码解码c语言实现
- <input type=“text” name="">width设定无效
- 测试linux和window下 jdk最大能使用多大内存
- 高效CSS属性缩写
- 寄存器功能
- linux scp 使用方法
- Linux Shell编程基础
- Android解析如何获取SDCard 内存
- checking for termcap functions library... configure: error: No curses/termcap library found