程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 解密-關於C語言的base64字符串解碼

解密-關於C語言的base64字符串解碼

編輯:編程綜合問答
關於C語言的base64字符串解碼

各位大神,我現在急需將一段字符串解碼的方法(C語言實現),希望各位出手援助一下。
我需要解碼的字符串是:
vU3xynE6ee6KymPB1cpwVGwZMrS/GZdXYBXiPNWfWktX6uq0gdIKB6yWG8dq49ywRKjCljpVipbTWyHIOEhS0jpSVuB/y4q3rWI3bvMGCWK9/rHLkUrdi4NIQLKj+hFEZbvgmWfdAyc0mvdIcjQOtRKVTFzQUekoJ5RvMAAqNt+usa99ym9hG2inmploNH8vP7sIMwBOqZg5qZUZdplZqaWpMkjoPGHvk7Qo05wxV+uW6ZF2Hs08w4x6suEQSYkg4w9GoRgcVihDBnHaDn2J6LCA3r6d6oxXCewrVPtWOdtck9GZ9EJx3njU7ympQ16SK197Rw9x5ByYRe5MwB2HwnavwmLi6gaZYFmv3Fz0XA4/sifZBChDuI0HSqYOLmHP2iZXJqwQ+s+FPJZcPzoXhey2m06jTBEobhKaLlRiHHnKScE/boasE6aQOUQLSKVCu3DKMM0TV3YKGVfCtKD4GcxYTBjdDU4ZKqJIL2QfOmY2fJs9CKFMpHVnz5VdNMJxD22Cc4x9U48hIn3xvNohbtGBwyA+1eLQpVW7u1swH+0H8cQQPJTg7bEsGenHHCwvK6z1WHnjRxeNY9vbSvwDQU/nuGw4w9yTBRgmlcxdWcEYqi2+pSYvRPo7XJikwDl/Cdu/VFf2tFWzjaWFUoO5uTHczXh4mDqwfiMdOqS06UBKzk/mGXKpAhaMQE/FcWXOVz46XyXcgSgP4RGajPPvwjmw43CYPytU9YGwr7Bt1Yovxv5WQJo2JH/DC7jlTwx/KF/xtPT72GYMe8GW4pWATt3SFbUf9DSjshX6xawYLMn/9NFZYVuOc2sHW60f0k5RKoksFUO/XmvE/YGvdDgpvO/28c/7msjBRU0z03Xc/5+rwKZlo2DcJk1fESQbRzfYEsS+YuSe+6IqfZcRm06KQrgChOzHcZdl5avm7yo858uQHC9LaoZoHAMzFJzTHUj+vuVG6S+0RN6PLTwBxOkdVHpSSUSkGyz+NO/ksw8zNq0Wp7x1fDUXFA9Ov3u4/3k7KUqkwxfLSkLRSX8tQDjn448ZZQCdwUKK

這個字符串是經過加密了的。需要先將字符串從base64轉成正常串,然後再進行解密。我已經實現了這個功能,不過,對於小的字符串,如200字節長度,可以解出來,但是對於上面這個長的字符串,解出來就只有124字節長度。。。。。
4個字節對應3個字節。。。。肯定解出來不對。
實在是想不出來,希望有知道的人悉心解答,萬分感謝。

最佳回答:


const char * base64char = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

int base64_decode( const char * base64, unsigned char * bindata )
{
int i, j;
unsigned char k;
unsigned char temp[4];
for ( i = 0, j = 0; base64[i] != '\0' ; i += 4 )
{
memset( temp, 0xFF, sizeof(temp) );
for ( k = 0 ; k < 64 ; k ++ )
{
if ( base64char[k] == base64[i] )
temp[0]= k;
}
for ( k = 0 ; k < 64 ; k ++ )
{
if ( base64char[k] == base64[i+1] )
temp[1]= k;
}
for ( k = 0 ; k < 64 ; k ++ )
{
if ( base64char[k] == base64[i+2] )
temp[2]= k;
}
for ( k = 0 ; k < 64 ; k ++ )
{
if ( base64char[k] == base64[i+3] )
temp[3]= k;
}

    bindata[j++] = ((unsigned char)(((unsigned char)(temp[0] << 2))&0xFC)) |
            ((unsigned char)((unsigned char)(temp[1]>>4)&0x03));
    if ( base64[i+2] == '=' )
        break;

    bindata[j++] = ((unsigned char)(((unsigned char)(temp[1] << 4))&0xF0)) |
            ((unsigned char)((unsigned char)(temp[2]>>2)&0x0F));
    if ( base64[i+3] == '=' )
        break;

    bindata[j++] = ((unsigned char)(((unsigned char)(temp[2] << 6))&0xF0)) |
            ((unsigned char)(temp[3]&0x3F));
}
return j;

}
這個是我的base64解密,各位看一下

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved