⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 base64.c

📁 rsa密钥生成器
💻 C
字号:


/* 
    Public Base64 conversion tables
*/ 
unsigned char B64[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
unsigned char b64[256];


/* 
    void initb64(); 
    Initializes the base64->base16 conversion tab. 
    Call this function once when your program starts.
*/
void initb64(){
    unsigned int i;
    for (i=0; i<256; i++) b64[i]=0x00;
    for (i=0; i<64; i++) b64[(B64[i])]=i;
}

/*
   int b64toh(lpBase64String, lpDestinationBuffer);
   Converts base64 string b to hexnumber d.
   Returns size of hexnumber in bytes.
*/
int b64toh(char *b, char *d){
    unsigned int  i,k,l;

    l=strlen(b);
    if (l<2) return 0;
    i=0,k=0;
    while (1) {
        i++;
        if (k+1<l) d[i-1]=((b64[(b[k])])<<2);
        else break;
        k++;
        if (k<l) d[i-1]|=((b64[(b[k])])>>4);
        else break;
        i++;
        if (k+1<l) d[i-1]=((b64[(b[k])])<<4);
        else break;
        k++;
        if (k<l) d[i-1]|=((b64[(b[k])])>>2);
        else break;
        i++;
        if (k+1<l) d[i-1]=((b64[(b[k])])<<6);
        else break;
        k++;
        if (k<l) d[i-1]|=(b64[(b[k])]);
        else break;
        k++;
    }
    return i-1;
}

/*
   int htob64(lpHexNumber, lpDestinationBuffer);
   Converts hexnumber h (with length l bytes) to base64 string d.
   Returns length of base64 string.
*/
int htob64(char *h, char *d, unsigned int l){
    unsigned int  i,j,k;
    unsigned char m,t;

    if (!l) return 0;
    l<<=3;                              // no. bits
    m=0x80;
    for (i=0,j=0,k=0,t=0; i<l; i++){
        if (h[(i>>3)]&m) t|=1;
        j++;
        if (!(m>>=1)) m=0x80;
        if (!(j%6)) {
            d[k]=B64[t];
            t&=0;
            k++;
        }
        t<<=1;
    }
    m=5-(j%6);
    t<<=m;
    if (m) {
        d[k]=B64[t];
        k++;
    }
    d[k]&=0;
    return strlen(d);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -