与えられたバイト列からSHA1ハッシュ値を計算する関数のサンプルです。
わかりやすさのためにエラー処理、メモリ開放は省略しています。
/**
* 与えられた長さのバイト列よりSHA1ハッシュ値を計算。
* 結果は使用後メモリ開放してください。
* @param msg ハッシュ対象バイト列
* @param msgLen ハッシュ対象バイト列の長さ
* @return SHA1ハッシュ値バイト列またはNULL
*/
unsigned char *KUTL_getSHA1(unsigned char *msg, int msgLen) {
unsigned char *digest = NULL; /* 結果ハッシュ値 */
SHA_CTX sha_ctx = { 0 }; /* ハッシュ計算コンテキスト */
int rc; /* SHA1_ 関数結果コード */
/* 1. ハッシュ値を格納する領域の確保 */
digest = malloc(sizeof(unsigned char) * SHA_DIGEST_LENGTH);
if (digest == NULL) return (unsigned char*)NULL;
/* 2. 初期化 */
rc = SHA1_Init(&sha_ctx);
if (rc != 1) (unsigned char *)NULL;
/* 3. ハッシュ入力 */
rc = SHA1_Update(&sha_ctx, msg, msgLen);
if (rc != 1) (unsigned char *)NULL;
/* 4. ハッシュ計算 */
rc = SHA1_Final(digest, &sha_ctx);
if (rc != 1) (unsigned char *)NULL;
/* 5. 結果のリターン */
return digest;
}
最終更新:2008年06月11日 07:57