MaksimLinux
Сообщений: 3
Оценки: 0
Присоединился: 2010-12-28 16:10:29.413333
|
Мне нужно зашифорвать строку в base64. Вот что я написал: #include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* base64code(char *text)
{
char sl[]={
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"};
int fs=0, pl=strlen(text)*3, bc=0, tc=0;
//char *res=malloc(sizeof(char)*(pl/2+pl%2+1));
char *res=malloc(10000);
while (text[tc]!='\0')
{
switch (fs)
{
case 0:
res[bc++]=sl[text[tc]>>2];
break;
case 1:
res[bc++]=sl[text[tc]&2<<4+text[++tc]>>4];
break;
case 2:
res[bc++]=sl[text[tc]<<2&(~192)+text[++tc]>>6];
break;
case 3:
res[bc++]=sl[text[tc++]&(~192)];
break;
}
fs++;
if (fs==4) fs=0;
}
return res;
}
int main(int argc, char *argv[])
{
printf("%s\n",base64code("Hellog"));
return 0;
}
Код не работает как надо. Помогите, что исправить??
|