亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
12
最近訪問板塊 發(fā)新帖
樓主: ryr1990
打印 上一主題 下一主題

[C] 請(qǐng)教疑問!讀取png圖片內(nèi)容到字符串,類似java的byte數(shù)組 [復(fù)制鏈接]

論壇徽章:
0
11 [報(bào)告]
發(fā)表于 2018-03-05 10:26 |只看該作者
回復(fù) 10# dorodaloo

不好意思,回復(fù)晚了。下面是驗(yàn)簽的代碼
int verify(char *data, char *resp)
{
    char *signBuf= malloc(BUFFER_SIZE);
    char *timeBuf = malloc(BUFFER_SIZE);
    char *contentLenBuf = malloc(BUFFER_SIZE);
    memcpy(signBuf, data, strlen(data));
    memcpy(timeBuf, data, strlen(data));
    memcpy(contentLenBuf, data, strlen(data));
    int r,headnum,m, contentnum;
    char sign[500];
    char *timestamp = malloc(100);
    char contentLen[5];
    while (1)
    {
        r=sscanf(contentLenBuf, "Content-Length: %[^\n]%n", contentLen, &contentnum);
        if (1==r) {
            contentLenBuf+=contentnum;
        } else if (0==r) contentLenBuf++;
        else break;

        r=sscanf(signBuf,"Signature: %[^\n]%n",sign,&headnum);
        if (1==r) {
            signBuf+=headnum;
        } else if (0==r) signBuf++;
        else break;

        r=sscanf(timeBuf,"Timestamp: %[^\n]%n",timestamp,&m);
        if (1==r) {
            timeBuf+=m;
        } else if (0==r) timeBuf++;
        else break;
    }
    char *body = malloc(BUFFER_SIZE);
    memcpy(body, data+(strlen(data)-atoi(contentLen)), atoi(contentLen));

    // 在這一步之前body如果是圖片內(nèi)容,打印出來是空的,下一步驗(yàn)證就失。蝗绻鸼ody是文本內(nèi)容驗(yàn)證成功
    verifyByRSA(pubKey, body, strlen(body), sign);
    strcpy(resp, body);
}


int verifyByRSA(char* publicKey, const unsigned char * pData, size_t dataLength, unsigned char * sign)
{
    RSA* rsa_pub_key = createPublicRSA(publicKey);
    if (rsa_pub_key == NULL)
    {
        printf("\n創(chuàng)建公鑰內(nèi)容失敗\n");
        return false;
    }

    unsigned char szSha1Data[SHA_DIGEST_LENGTH+1] = { 0 };
    memset(szSha1Data, 0, sizeof(szSha1Data));
    SHA_CTX c;
    if (!SHA1_Init(&c))
    {
        printf("\n初始化sha1算法失。n");
        return false;
    }
    SHA1_Update(&c, pData, strlen((char*)pData));
    SHA1_Final(szSha1Data, &c);
    OPENSSL_cleanse(&c, sizeof(c));

    unsigned char *outstr = base64_decode(sign);
    int r = RSA_verify(NID_sha1, szSha1Data, SHA_DIGEST_LENGTH, outstr, 256, rsa_pub_key);
    RSA_free(rsa_pub_key);
    if (1 == r)
    {
        printf("驗(yàn)簽成功\n");
        return 0;   
    }
    else
    {
        printf("驗(yàn)簽失敗\n");
        return 1;
    }
}



論壇徽章:
6
數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-11-27 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-12-01 06:20:00每日論壇發(fā)貼之星
日期:2015-12-01 06:20:0015-16賽季CBA聯(lián)賽之佛山
日期:2017-03-26 23:38:0315-16賽季CBA聯(lián)賽之江蘇
日期:2017-07-17 10:08:4415-16賽季CBA聯(lián)賽之北京
日期:2018-03-04 17:01:50
12 [報(bào)告]
發(fā)表于 2018-03-05 11:27 |只看該作者
回復(fù) 11# ryr1990




ret[0 ~ 8]
[137][80][78][71][13][10][26][10][0]

ret[8] = 0 又稱結(jié)束符, 表示字符串結(jié)束

strlen(ret) 等于 8, 不等于 byte array 實(shí)際長度.

png應(yīng)使用實(shí)際長度,不可使用 strlen

char good[] = {'h', 'e', 'l', 'l', 'o', '\0'};
char bad[] = {'h', 'e', '\0', 'l', 'l', 'o', '\0'};

printf("good strlen = %d\n", strlen(good));
printf("bad strlen = %d\n", strlen(bad));
good strlen = 5
bad strlen = 2

論壇徽章:
0
13 [報(bào)告]
發(fā)表于 2018-03-05 17:03 |只看該作者
回復(fù) 12# dorodaloo

OK,明天試下,現(xiàn)在不在電腦前,哈哈

論壇徽章:
0
14 [報(bào)告]
發(fā)表于 2018-03-06 10:47 |只看該作者
回復(fù) 12# dorodaloo

那個(gè)長度dataLength參數(shù)好像沒用到,這就尷尬了,應(yīng)該不是strlen導(dǎo)致的問題。

論壇徽章:
6
數(shù)據(jù)庫技術(shù)版塊每日發(fā)帖之星
日期:2015-11-27 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-12-01 06:20:00每日論壇發(fā)貼之星
日期:2015-12-01 06:20:0015-16賽季CBA聯(lián)賽之佛山
日期:2017-03-26 23:38:0315-16賽季CBA聯(lián)賽之江蘇
日期:2017-07-17 10:08:4415-16賽季CBA聯(lián)賽之北京
日期:2018-03-04 17:01:50
15 [報(bào)告]
發(fā)表于 2018-03-06 13:26 |只看該作者
回復(fù) 14# ryr1990

那個(gè)長度dataLength參數(shù)好像沒用到,應(yīng)該不是strlen導(dǎo)致的問題。




    SHA1_Update(&c, pData, strlen((char*)pData));


    strcpy(resp, body); // 0 又稱結(jié)束符, 表示字符串結(jié)束


    char *body = malloc(BUFFER_SIZE);
    memcpy(body, data+(strlen(data)-atoi(contentLen)), atoi(contentLen));


    memcpy(signBuf, data, strlen(data));
    memcpy(timeBuf, data, strlen(data));
    memcpy(contentLenBuf, data, strlen(data));


論壇徽章:
0
16 [報(bào)告]
發(fā)表于 2018-03-06 14:17 |只看該作者
回復(fù) 15# dorodaloo

是哦,已經(jīng)修改好了,感謝感謝,給大佬遞煙,哈哈。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP