1. ホーム
  2. javascript

[解決済み] node.jsで文字列のsha1ハッシュを取得するにはどうすればよいですか?

2022-07-10 08:40:22

質問

私はnode.jsで書かれたwebsocketサーバーを作ろうとしています。

サーバーを動作させるために、私は文字列のSHA1ハッシュを取得する必要があります。

私がしなければならないことは、次のように説明されています。 ドキュメントのセクション 5.2.2 ページ 35 にあります。 .

注意: 例として、もし "Sec-WebSocket-Key" ヘッダの値が、クライアントのハンドシェイクで "dGhlIHNhbXBsZSBub25jZQ==" であった場合、サーバはその文字列を "258EAFA5-E914-47DA-95CA-C5AB0DC85B11" を追加して 文字列 "dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11" . この文字列をSHA-1ハッシュすると、0xb3 0x7a 0x4f 0x2c 0xc0 0x62 0x4f 0x16 0x90 0xf6 0x46 0x06 0xcf 0x38 0x59 0x45 0xb2 0xbe 0xc4 0xeaという値が得られます。 この値をbase64エンコードすると、次のような値になります。 "s3pPLMBiTxaQ9kYGzzhZRbK+xOo=" という値が返されます。 という値が返されます。 "Sec-WebSocket-Accept" ヘッダーに返されます。

どのように解決するのですか?

以下の crypto.createHash() 機能 と、関連する hash.update() hash.digest() 関数を使用します。

var crypto = require('crypto')
var shasum = crypto.createHash('sha1')
shasum.update('foo')
shasum.digest('hex') // => "0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33"