b64_encodef() was returning wrong size
b64_decodef() not yet working.
This commit is contained in:
parent
096766661a
commit
6dfd3e629a
36
base64.c
36
base64.c
|
@ -144,6 +144,7 @@ unsigned int b64_encodef(char *InFile, char *OutFile) {
|
||||||
else
|
else
|
||||||
fputc('=',pOutFile);
|
fputc('=',pOutFile);
|
||||||
fputc('=',pOutFile);
|
fputc('=',pOutFile);
|
||||||
|
i+=4;
|
||||||
}
|
}
|
||||||
|
|
||||||
fclose(pInFile);
|
fclose(pInFile);
|
||||||
|
@ -151,8 +152,39 @@ unsigned int b64_encodef(char *InFile, char *OutFile) {
|
||||||
|
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
unsigned int b64_decodef(char *InFile, char *OutFile) {
|
unsigned int b64_decodef(char *InFile, char *OutFile) {
|
||||||
|
|
||||||
|
FILE *pInFile = fopen(InFile,"rb");
|
||||||
|
FILE *pOutFile = fopen(OutFile,"wb");
|
||||||
|
if ( (pInFile==NULL) || (pOutFile==NULL) )
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
unsigned int c=0, j=0, k=0, s[4];
|
||||||
|
|
||||||
|
while(c!=EOF) {
|
||||||
|
c=fgetc(pInFile);
|
||||||
|
if (c==EOF)
|
||||||
|
break;
|
||||||
|
s[j++]=b64_int(c);
|
||||||
|
if (j==4) {
|
||||||
|
fputc((s[0]<<2)+((s[1]&0x30)>>4),pOutFile);
|
||||||
|
if (s[2]!=64) {
|
||||||
|
fputc(((s[1]&0x0F)<<4)+((s[2]&0x3C)>>2),pOutFile);
|
||||||
|
if ((s[3]!=64)) {
|
||||||
|
fputc(((s[2]&0x03)<<6)+(s[3]),pOutFile); k+=3;
|
||||||
|
} else {
|
||||||
|
k+=2;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
k+=1;
|
||||||
|
}
|
||||||
|
j=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(pInFile);
|
||||||
|
fclose(pOutFile);
|
||||||
|
|
||||||
|
return k;
|
||||||
}
|
}
|
||||||
*/
|
|
2
base64.h
2
base64.h
|
@ -2,7 +2,7 @@
|
||||||
base64.c - by Joe DF (joedf@ahkscript.org)
|
base64.c - by Joe DF (joedf@ahkscript.org)
|
||||||
Released under the MIT License
|
Released under the MIT License
|
||||||
|
|
||||||
Revision: 18:30 2014-09-22
|
Revision: 2015-06-12 00:02:32
|
||||||
|
|
||||||
Thank you for inspiration:
|
Thank you for inspiration:
|
||||||
http://www.codeproject.com/Tips/813146/Fast-base-functions-for-encode-decode
|
http://www.codeproject.com/Tips/813146/Fast-base-functions-for-encode-decode
|
||||||
|
|
48
test.c
48
test.c
|
@ -43,6 +43,8 @@ int main() {
|
||||||
test_b64_decode();
|
test_b64_decode();
|
||||||
puts("\nTesting test_b64_encodef() ...\n");
|
puts("\nTesting test_b64_encodef() ...\n");
|
||||||
printf("%s\n",STATUS(test_b64_encodef()));
|
printf("%s\n",STATUS(test_b64_encodef()));
|
||||||
|
puts("\nTesting test_b64_decodef() ...\n");
|
||||||
|
printf("%s\n",STATUS(test_b64_decodef()));
|
||||||
puts("\n[END]");
|
puts("\n[END]");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -135,7 +137,7 @@ int test_b64_encodef() {
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
int i, j=0;
|
int i, j=0;
|
||||||
unsigned int test_a[] = HEXNUM_A;
|
unsigned int test_a[] = HEXNUM_B;
|
||||||
unsigned int size_a = NELEMS(test_a);
|
unsigned int size_a = NELEMS(test_a);
|
||||||
|
|
||||||
for (i=0;i<size_a;i++) {
|
for (i=0;i<size_a;i++) {
|
||||||
|
@ -144,7 +146,7 @@ int test_b64_encodef() {
|
||||||
fclose(pFile);
|
fclose(pFile);
|
||||||
|
|
||||||
j = b64_encodef("B64_TEST01A.tmp","B64_TEST01B.tmp");
|
j = b64_encodef("B64_TEST01A.tmp","B64_TEST01B.tmp");
|
||||||
remove("B64_TEST01A.tmp");
|
//remove("B64_TEST01A.tmp");
|
||||||
|
|
||||||
if (!j)
|
if (!j)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -156,9 +158,45 @@ int test_b64_encodef() {
|
||||||
char *out = malloc(j+1);
|
char *out = malloc(j+1);
|
||||||
fgets(out,j+1,pFile);
|
fgets(out,j+1,pFile);
|
||||||
fclose(pFile);
|
fclose(pFile);
|
||||||
remove("B64_TEST01B.tmp");
|
//remove("B64_TEST01B.tmp");
|
||||||
printf("Comparing \"%s\" to \"%s\" : ",STRING_A,out);
|
printf("Comparing \"%s\" to \"%s\" : ",STRING_B,out);
|
||||||
if (strcmp(STRING_A,out)==0)
|
if (strcmp(STRING_B,out)==0)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int test_b64_decodef() {
|
||||||
|
|
||||||
|
FILE *pFile;
|
||||||
|
pFile = fopen("B64_TEST02A.tmp","wb");
|
||||||
|
if (pFile==NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
int j=0;
|
||||||
|
|
||||||
|
fputs(STRING_B,pFile);
|
||||||
|
fclose(pFile);
|
||||||
|
|
||||||
|
j = b64_decodef("B64_TEST02A.tmp","B64_TEST02B.tmp");
|
||||||
|
//remove("B64_TEST02A.tmp");
|
||||||
|
|
||||||
|
if (!j)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
pFile = fopen("B64_TEST02B.tmp","rb");
|
||||||
|
if (pFile==NULL)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
char *out = malloc(j+1);
|
||||||
|
fgets(out,j+1,pFile);
|
||||||
|
fclose(pFile);
|
||||||
|
//remove("B64_TEST02B.tmp");
|
||||||
|
printf("Comparing \"%s\" with : ",HEXSTR_B); hexputs((int*)out,j);
|
||||||
|
|
||||||
|
int r_b[] = HEXNUM_B;
|
||||||
|
|
||||||
|
if (compare((int*)HEXSTR_B,(int*)out,NELEMS(r_b)))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue