- vừa được xem lúc

Blog#193: 🔐Node.js Expressで機密データを暗号化およびハッシュ化で保護する方法

0 0 7

Người đăng: NGUYỄN ANH TUẤN

Theo Viblo Asia

こんにちは、私はトゥアンと申します。東京からフルスタックWeb開発者です。 将来の有用で面白い記事を見逃さないように、私のブログをフォローしてください。😊

この記事では、Node.js Expressアプリケーションで機密データを暗号化およびハッシュ化を使って保護する方法を詳しく説明します。以下のトピックについて説明します。

  1. 暗号化とハッシュ化の概要
  2. Node.js Crypto モジュールを使用したデータの暗号化
  3. Node.js Crypto モジュールを使用したデータのハッシュ化
  4. Express での暗号化とハッシュ化の実装
  5. 結論

1. 暗号化とハッシュ化の概要

パスワード、個人情報、金融情報などの機密データは、保存や送信する際に保護する必要があります。機密データを保護する一般的な方法は、暗号化とハッシュ化です。

暗号化は、データを秘密のコードに変換して、不正アクセスを防ぐプロセスです。暗号化と復号化の両方で秘密鍵を使用し、データにアクセスできるのは承認された者だけです。暗号化は可逆的であり、暗号化されたデータを元の形に復号化することができます。

ハッシュ化は、データを一定サイズの文字列(通常はハッシュ値)に変換する一方向関数です。暗号化とは異なり、ハッシュ化は不可逆的であり、ハッシュ値から元のデータを回復することはできません。このため、ハッシュ化はパスワードなどの機密データを保存するのに特に適しており、ハッシュ値が漏洩しても元のデータは安全です。

2. Node.js Crypto モジュールを使用したデータの暗号化

Node.js には、cryptoという暗号化を含む幅広い暗号化関数を提供する組み込みモジュールがあります。AES-256-CBCアルゴリズムを使用して対称暗号化を行う方法を見てみましょう。

依存関係のインストール

cryptoモジュールを使用するには、まず必要な依存関係をインストールします。

npm install --save crypto

データの暗号化と復号化

AES-256-CBCを使用してデータを暗号化および復号化する方法の例は以下の通りです:

const crypto = require("crypto"); const secretKey = crypto.randomBytes(32);
const iv = crypto.randomBytes(16); function encrypt(text) { const cipher = crypto.createCipheriv("aes-256-cbc", secretKey, iv); let encrypted = cipher.update(text, "utf8", "hex"); encrypted += cipher.final("hex"); return encrypted;
} function decrypt(encrypted) { const decipher = crypto.createDecipheriv("aes-256-cbc", secretKey, iv); let decrypted = decipher.update(encrypted, "hex", "utf8"); decrypted += decipher.final("utf8"); return decrypted;
} const originalText = "機密データ";
const encryptedText = encrypt(originalText);
const decryptedText = decrypt(encryptedText); console.log("元のテキスト:", originalText);
console.log("暗号化されたテキスト:", encryptedText);
console.log("復号化されたテキスト:", decryptedText);

3. Node.js Crypto モジュールを使用したデータのハッシュ化

次に、SHA-256アルゴリズムを使用してデータをハッシュ化する方法を見てみましょう。

データのハッシュ化

SHA-256を使用してデータをハッシュ化する方法の例は以下の通りです:

const crypto = require("crypto"); function hashData(data) { return crypto .createHash("sha256") .update(data, "utf8") .digest("hex");
} const data = "機密データ";
const hashedData = hashData(data); console.log("データ:", data);
console.log("ハッシュ化されたデータ:", hashedData);

4. Express での暗号化とハッシュ化の実装

ここでは、Expressアプリケーションに暗号化とハッシュ化を統合する方法を説明します。

依存関係のインストール

まず、必要な依存関係をインストールします。

npm install --save express body-parser crypto

Expressアプリケーションのセットアップ

新しいExpressアプリケーションを作成し、必要なモジュールを含めます。

const express = require("express");
const bodyParser = require("body-parser");
const crypto = require("crypto"); const app = express();
app.use(bodyParser.json()); const secretKey = crypto.randomBytes(32);
const iv = crypto.randomBytes(16);

Expressルートでデータを暗号化

POSTリクエストで送信されたデータを暗号化するための新しいルートを作成します。

app.post("/encrypt", (req, res) => { const text = req.body.text; if (!text) { return res.status(400).send("データが提供されていません"); } const encryptedText = encrypt(text); res.status(200).send({ encrypted: encryptedText });
});

Expressルートでデータをハッシュ化

POSTリクエストで送信されたデータをハッシュ化するための別のルートを作成します。

app.post("/hash", (req, res) => { const data = req.body.data; if (!data) { return res.status(400).send("データが提供されていません"); } const hashedData = hashData(data); res.status(200).send({ hash: hashedData });
});

Expressサーバーの開始

最後に、Expressサーバーを起動し、受信リクエストを待ち受けます。

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => { console.log(`サーバーはポート${PORT}で実行されています`);
});

これで、Expressアプリケーションは暗号化とハッシュ化された機密データのリクエストを受けることができます。

5. 結論

この記事では、Node.js Expressアプリケーションで機密データを暗号化およびハッシュ化を使用して保護する方法を説明しました。これらの技術を実装することで、アプリケーションのデータが安全で不正アクセスから保護されることを確認できます。

アプリケーションのセキュリティは、秘密鍵の安全な保管、安全な通信チャネル、適切なアクセス制御メカニズムなど、他の要素にも依存することに注意してください。アプリケーションとそのユーザーを保護するために、包括的なセキュリティアプローチを採用することが重要です。

最後

いつもお世話になっています。この記事を楽しんで、新しいことを学べたら嬉しいです。😊

今度の記事でお会いしましょう!この記事が気に入ったら、私を応援するために「LIKE」を押して登録してください。ありがとうございました。

Ref

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 525

- vừa được xem lúc

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 433

- vừa được xem lúc

Một số phương thức với object trong Javascript

Trong Javascript có hỗ trợ các loại dữ liệu cơ bản là giống với hầu hết những ngôn ngữ lập trình khác. Bài viết này mình sẽ giới thiệu về Object và một số phương thức thường dùng với nó.

0 0 153

- vừa được xem lúc

Tìm hiểu về thư viện axios

Giới thiệu. Axios là gì? Axios là một thư viện HTTP Client dựa trên Promise.

0 0 145

- vừa được xem lúc

Imports và Exports trong JavaScript ES6

. Giới thiệu. ES6 cung cấp cho chúng ta import (nhập), export (xuất) các functions, biến từ module này sang module khác và sử dụng nó trong các file khác.

0 0 110

- vừa được xem lúc

Bài toán đọc số thành chữ (phần 2) - Hoàn chỉnh chương trình dưới 100 dòng code

Tiếp tục bài viết còn dang dở ở phần trước Phân tích bài toán đọc số thành chữ (phần 1) - Phân tích đề và những mảnh ghép đầu tiên. Bạn nào chưa đọc thì có thể xem ở link trên trước nhé.

0 0 245