Node.jsでのデータの暗号化と復号化方法


  1. Cryptoモジュールを使用した暗号化と復号化:

Node.jsの組み込みモジュールであるcryptoを使用すると、データの暗号化と復号化が可能です。以下に暗号化と復号化の基本的な例を示します。

const crypto = require('crypto');
const algorithm = 'aes-256-cbc';
const key = '秘密の鍵';
const iv = crypto.randomBytes(16);
function encrypt(text) {
  const cipher = crypto.createCipheriv(algorithm, key, iv);
  let encrypted = cipher.update(text, 'utf8', 'hex');
  encrypted += cipher.final('hex');
  return encrypted;
}
function decrypt(encryptedText) {
  const decipher = crypto.createDecipheriv(algorithm, key, iv);
  let decrypted = decipher.update(encryptedText, '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);
  1. bcryptモジュールを使用したパスワードのハッシュ化と検証:

パスワードの保存時には、ハッシュ化された形式で保存することが推奨されます。Node.jsのbcryptモジュールを使用すると、簡単にパスワードのハッシュ化と検証ができます。以下に例を示します。

const bcrypt = require('bcrypt');
const saltRounds = 10;
const password = 'パスワード';
bcrypt.hash(password, saltRounds, (err, hash) => {
  if (err) {
    console.error(err);
  } else {
    console.log('ハッシュ化されたパスワード:', hash);
    bcrypt.compare(password, hash, (err, result) => {
      if (err) {
        console.error(err);
      } else {
        console.log('パスワードの検証結果:', result);
      }
    });
  }
});
  1. JSON Webトークン(JWT)を使用したトークンベースの認証:

JWTを使用すると、トークンベースの認証を実装できます。以下にJWTの生成と検証の例を示します。

const jwt = require('jsonwebtoken');
const secretKey = '秘密のキー';
const payload = { username: 'ユーザー名' };
const token = jwt.sign(payload, secretKey, { expiresIn: '1h' });
console.log('生成されたトークン:', token);
jwt.verify(token, secretKey, (err, decoded) => {
  if (err) {
    console.error(err);
  } else {
    console.log('検証結果:', decoded);
  }
});

これらはNode.jsでデータの暗号化と復号化を行うための一般的な方法の一部です。他にもさまざまな方法がありますが、上記の例は基本的な手法を示しています。データセキュリティに関連する他のトピックやライブラリについても調査してみることをお勧めします。