본문 바로가기
개발 업무(코딩)-개발자였을때 썼던..

CryptoJS.enc.Utf8.parse in c

by 주용사 2023. 1. 9.
728x90

CryptoJS.enc.Utf8.parse 를 사용하면 wordArray가 나온다고 설명되어있다.

wordArray란?

c에서는 주석된 부분을 사용하면 된다. 저걸 사용하면 binary->hex뿐만아니라 다 사용가능하다.

여튼 CryptoJS.enc.Utf8.parse를 쓰는부분이 있다면 #if1 ~ #endif 를 사용하면된다.

 
int QC_Hmac_Sha256_BAAS(char* phskey, char* pdt, int ndt, char* pkey, int nkey, MYSQL* pConn)
{
    unsigned char   zresult[SHA256_DIGEST_LENGTH + 1];
    unsigned char*  presult;
    EVP_MD*         evp_md  = (EVP_MD *)EVP_sha256();
    int             nLen;

    int ii = 0;
    char zresult_hex[64];
    char ztemp[5];

    if (evp_md == NULL)
        return (NOTOK);
    presult = HMAC(evp_md, pkey, nkey, pdt, ndt, NULL, NULL);
    if (presult == NULL)
        return (NOTOK);

    memset(zresult, 0x00, sizeof(zresult));
    memcpy(zresult, presult, SHA256_DIGEST_LENGTH);

    /* binary -> hex : CryptoJS.enc.Utf8.parse(hash) */
#if 1
    for (ii = 0; ii < 32; ii++) {
        if(ii == 0)
            sprintf(zresult_hex, "%02x", zresult[ii]);
        else
        {
            memset(ztemp, 0x00, sizeof(ztemp));
            sprintf(ztemp, "%02x", zresult[ii]);
            strncat(zresult_hex, ztemp, strlen(ztemp));
        }
    }
#endif
    nLen = Base64_Encode(phskey, zresult_hex, SHA512_DIGEST_LENGTH);

    return (nLen);
}
728x90