hmacとハッシュ化と暗号化について
プライベートAPIを作成するにあたり、トークンの暗号化とかハッシュ化とかが必要になります。
hmacについては全然知らなかったので調べました。
hmacはKeyed-Hashing for Message Authentication codeの略です。本当の正式名称は知りません。
項目 | 特徴 |
---|---|
ハッシュ化 | 元に戻せない。ハッシュ関数はMD5やSHA1,SHA256など |
暗号化 | 元に戻せる |
ハッシュ化と暗号化はこの違いがあります。
ハッシュ化とは不可逆の為、一度ハッシュ化してしまうと元に戻せません。これに対して暗号化は元に戻すことができます。これを復号化と言います。
HMAC認証とは
HMAC認証という認証方式がありますが「HMAC-SHA256」や「HMAC-SHA512」を使ってハッシュ化を行います。秘密鍵を共有する2者間(クライアントとサーバ間とか)で秘密鍵を共有し、APIキーをもって2者間でともにハッシュ化を行い、そのハッシュ値が同一であるかどうかで認証を行います。
同一であれば、内容が改竄されていないこと(完全性)が保証されます。
nodejsでcryptoモジュールを使用して確認します。
npm init -y npm install --save 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
参考サイト
ハッシュ化と暗号化は違う。ハッシュ化(SHA1,MD5)すると、元には戻らない
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント