hmacとハッシュ化と暗号化について

hmacとハッシュ化と暗号化について

プライベートAPIを作成するにあたり、トークンの暗号化とかハッシュ化とかが必要になります。

hmacについては全然知らなかったので調べました。

hmacはKeyed-Hashing for Message Authentication codeの略です。本当の正式名称は知りません。

項目 特徴
ハッシュ化 元に戻せない。ハッシュ関数はMD5やSHA1,SHA256など
暗号化 元に戻せる

ハッシュ化と暗号化はこの違いがあります。

ハッシュ化とは不可逆の為、一度ハッシュ化してしまうと元に戻せません。これに対して暗号化は元に戻すことができます。これを復号化と言います。

HMAC認証とは

HMAC認証という認証方式がありますが「HMAC-SHA256」や「HMAC-SHA512」を使ってハッシュ化を行います。秘密鍵を共有する2者間(クライアントとサーバ間とか)で秘密鍵を共有し、APIキーをもって2者間でともにハッシュ化を行い、そのハッシュ値が同一であるかどうかで認証を行います。

同一であれば、内容が改竄されていないこと(完全性)が保証されます。

nodejsでcryptoモジュールを使用して確認します。

以下ソースは、createHashメソッドを使用してSHA512のhashオブジェクトを生成しています。

index.js

const crypto = require('crypto');
const sha512 = crypto.createHash('sha512');
const hash = sha512.update('password12345678', 'utf8').digest('hex');
console.log(hash); // ハッシュ値=a3d150c15f1a9a4e07d398fad94568460e3b044570b632bf67e27d3a231a04e4931aada1a3bef6bd94d08801ce0c684fed450705867df6f07fa0a395c4256071

view raw
gistfile1.txt
hosted with ❤ by GitHub

ハッシュ化と暗号化は違う。ハッシュ化(SHA1,MD5)すると、元には戻らない

一方向ハッシュ関数についてまとめてみた。

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA