オブジェクト指向とは

プログラム

2020/5/6

【パスワード】ストレッチングとは

ストレッチング ストレッチングとは、パスワードのハッシュ値を総当り攻撃(ブルートフォース攻撃)などから推測されないようにするために、ハッシュ値への計算を数千回~数万回繰り返し行うことです。 ストレッチングの必要性 コンピュータの進化は早く、計算する処理速度も向上しているため、弱いパスワードや文字数が長くないパスワードなどは、総当り攻撃(ブルートフォース攻撃)などで十分な時間をかければ元のデータを推測されてしまう危険性があります。 この時間を事実上不可能といえる時間にするためにストレッチングを実施します。 ...

鍵

2020/5/6

【パスワード】bcryptとは

bcryptとは bcryptとは、Blowfish暗号を基盤としたパスワードハッシュアルゴリズム(暗号学的ハッシュ関数)です。 一般的にパスワードは、元に戻すことが困難である「一方向性関数」の性質を持つハッシュ関数を用い値ハッシュ値で保管します。 次の図は、パスワードを「平文」「暗号文」「ハッシュ値」で保管していた際のイメージ図です。 「平文」は漏洩したらパスワードが盗まれてしまいます。「暗号文」は暗号化されていますが、「暗号文」を復号する「鍵」があればパスワードを解読することができます。パスワードが情 ...

ログイン

2020/5/6

【パスワード】ソルト(Salt)とは

ソルト(Salt) ソルトとは ソルト(Salt)とは、パスワードなどをハッシュ値へと変換する際に、パスワードに付与するランダムな文字列のことです。 仮にハッシュ値で保存しているパスワードが外部に漏洩した場合、元に戻すことが困難であるハッシュ値でも、弱いパスワード(推測しやすい文字や短いパスワードなど)であれば、十分な時間をかければ元のデータを推測されてしまう危険性があります。 そこで、ソルトと呼ばれるランダムな文字列をパスワードに連結してから、ハッシュ値へと変換します。 ソルトを付与することで、レインボ ...

2020/4/30

MD5(Message Digest 5)とは

MD5(Message Digest 5) MD5とは MD5(エムディーファイブ)とは、Message Digest 5の略でハッシュ関数の一つです。128ビット(16進数では32桁)のハッシュ値を生成します。 1991年にロナルド・リベストによって開発されたハッシュ関数で、前規格であるMD4の安全性を向上させた規格です。 上記図はMD5を利用してハッシュ値を生成する例です。ハッシュ関数により得られたデータのことを「ハッシュ値」と呼びます。 MD5の脆弱性 ハッシュ関数は、入力データが同じであれば、必ず ...

2020/4/29

SHA-1とは

SHA-1(Secure Hash Algorithm 1) SHA-1とは SHA-1(シャーワン)とは Secure Hash Algorithm 1の略で、入力データを一定の手順で計算を行い、入力値のデータの長さに関わらず決まった長さの文字列を出力するハッシュ関数の一つです。SHA-1は、160ビット(16進数では40桁)のハッシュ値を生成します。 上記図はSHA-1を利用してハッシュ値を生成する例です。ハッシュ関数により得られたデータのことを「ハッシュ値」と呼びます。 ハッシュ関数は、入力データが ...

アルゴリズム

2020/4/29

SHA-2とは

SHA-2(Secure Hash Algorighm 2) SHA-2とは SHA-2(Secure Hash Algorighm 2)とは、入力データを一定の手順で計算を行い、入力値のデータの長さに関わらず、決まった長さの文字列を出力するハッシュ関数の標準規格の一つで、前規格であるSHA-1(Secure Hash Algorighm 1)から多くの改良が加えられています。 ハッシュ関数により得られたデータのことを「ハッシュ値」と呼びます。ハッシュ関数は、入力データが同じであれば、必ず同じハッシュ値を ...

関数

2020/4/29

ハッシュ関数の仕組みを図解で分かりやすく解説

ハッシュ関数とは ハッシュ関数とは、入力データを一定の手順で計算を行い、入力値のデータの長さに関わらず、決まった長さの文字列を出力する関数のことです。 ハッシュ関数により得られたデータのことを「ハッシュ値」と呼びます。 ハッシュ関数は、主に検索の高速化やデータ比較処理の高速化、さらには改ざんの検出に使用されます。またパスワードの管理などにも利用されています。 例えば、膨大なサイズのファイルの内容が同一であるかを比較する際に、端から順にすべてのデータを比較すると時間が掛かるが、それぞれハッシュ関数を用いてハ ...

ディープコピー(deep copy)とは

2020/3/14

ディープコピー(deep copy)とは

ディープコピー(deep copy)とは ディープコピー(deep copy)とは深い(deep)コピーと呼ばれ、コピー元オブジェクトから実体(データ)を複製し別オブジェクトを生成する方式です。 オブジェクト(データを格納する箱※Beanクラス)はメモリ上にある実体(データ)を参照しています。 このオブジェクトに対して「ディープコピー」を行うと、コピーされたもう一つの「コピー先オブジェクト」が生成されます。 この時、メモリ上にある実体(データ)もコピーされます。これが「ディープコピー」です。 「ディープコ ...

シャローコピー(shallow copy)とは

2020/3/14

シャローコピー(shallow copy)とは

シャローコピー(shallow copy)とは シャローコピー(shallow copy)とは浅い(shallow)コピーと呼ばれ、コピー元オブジェクトから、同じ実体(データ)を参照する別オブジェクトを生成する方式です。 オブジェクト(データを格納する箱※Beanクラス)はメモリ上にある実体(データ)を参照しています。 このオブジェクトに対して「シャローコピー」を行うと、コピーされたもう一つの「コピー先オブジェクト」が生成されます。 見た目は2つのオブジェクトが存在するように見えますが、実際は「コピー元オ ...

オブジェクト指向とは

2020/6/16

オブジェクト指向とは

オブジェクト指向って何? オブジェクト指向とは、プログラミング設計や実装の考え方の一つです。現在はオブジェクト指向のプログラム言語が主流になっており、プログラマであれば様々な所でオブジェクト指向という言葉を聞いたことがあると思います。 「オブジェクト指向を説明してください」といわれ完璧に説明できる人はどのくらいいるのでしょうか。意外と少ないかもしれません。そのくらいオブジェクト指向という言葉は、曖昧な言葉なのです。 スポンサーリンク そのため、技術書やWebサイトで説明しているオブジェクト指向の説明は皆表 ...

© 2020 ITを分かりやすく解説