与えられたバイト列から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