スクリプトのお勉強 技術

言語別ログイン機能パスワード保存処理方針

投稿日:

ちょっと前に、ログイン機能を作成した際、パスワードを暗号化するか、という議論を目にしたことがありました。

昔だと、「パスワードを暗号化しない」方で実装していましたが、最近はセキュリティが当たり前になってきたので、それもどうかと思います。

なのであらかじめ、パスワードを保管する際に使用する暗号機能の方針ぐらいは調べておこうと思いました。

JavaScript

実際には難しそうなので、パスワード保管の要件を外します。いまのところJavaScript(クライアント側)で暗号化してパスワードを保管しておく安全な方法は難しいです。。

Perl

Digest::SHAを使用します。

  • 保管($digest): $digest = hmac_sha256_hex($password, $salt);
  • salt: 固定文字列
  • チェック: $passwordと$saltを入れて、保管した$digeestと一緒かチェック。
use Digest::SHA qw(hmac_sha256_hex);
my $data = "aaa";
my $key = "bb";
my $digest = hmac_sha256_hex($data, $key);

Python

import hashlib, uuid

salt = uuid.uuid4().hex
password = "aa"
hashed_password = hashlib.sha256(password + salt).hexdigest()

print (hashed_password)

ruby(rails)

bcryptを使います。すぐには分からなかったので割愛します。

PHP(7.0)

password_hashを使用します。

<?php

$input = "aaa";

$hash = password_hash($input, PASSWORD_DEFAULT);

print $hash;

if (password_verify($input, $hash)) {
            echo 'Password is valid!';
} else {
            echo 'Invalid password.';
}

-スクリプトのお勉強, 技術

執筆者:

関連記事

Pythonでの勘違い(if A:)

勘違い 小ネタです。 Pythonでは、以下のように書くことができます。 a = [] if a: print(“not empty!”) else: print(“empty!”) 結果は以下になり …

Nuxt.js – CRUDアプリケーションのフォーム/一覧を作成する

前回で作ったAPIのフロントエンドアプリケーションを作ろうと思います。 どういうアプリ? サンプルとして作ったAPIが住所録的だったので、住所録を作りました。 以下の機能があります。 登録(確認付き) …

Ubuntu 20.04のMySQL8.0.22でrootパスワードをリセットする

小ネタです。 休みなので 久しぶりにローカル環境のUbuntuでMySQLにアクセスしようとして、パスワードを見事に忘れたことに気づきました。 ubuntu 20.04なので、以下の手順でパスワードの …

PythonでAESを使用して暗号/復号する

1.つづき Pythonで、PKCS#12の公開鍵で暗号、秘密鍵で復号するプログラムの続きです。 今回はAESで暗号化/復号を行い、通信しながらRSA暗号/復号,AES暗号/復号を組み合わせたいと思い …

CentOS7をRocky Linux 9に移行する

このVMのOSをCentOS7にした関係上、そろそろupdateする必要があります。そもそもCentOS7を選択した理由は、仕事で使用するからでした。 で、仕事ではRocky Linux 9なので、こ …

google オプトアウト Click here to opt-out.