kakke18’s blog

ゆるふわ学生エンジニア

Decorator-飾り枠と中身の同一視-

Java言語で学ぶデザインパターン入門 の第12章を参考にしました。 Decoratorパターンとは 本書には以下のように記載されています。 オブジェクトにどんどんデコレーションを施していくようなデザインパターン ここでいう”デコレーション”とは、プログラムで…

Composite-容器と中身の同一視-

Java言語で学ぶデザインパターン入門 の第11章を参考にしました。 Compositeパターンとは 本書には以下のように記載されています。 容器と中身を同一視し、再帰的な構造を作るデザインパターン Compositeパターンを説明するために、コンピュータのファイルシ…

Strategy-アルゴリズムをごっそり切り替える-

Java言語で学ぶデザインパターン入門 の第10章を参考にしました。 Strategyパターンとは 本書には以下のように記載されています。 アルゴリズムをカチッと切り替え、同じ問題を別の方法で解くのを容易にするデザインパターン "strategy”には、"戦略"という意…

Bridge-機能の階層と実装の階層を分ける-

Java言語で学ぶデザインパターン入門 の第9章を参考にしました。 Bridgeパターンとは 本書には以下のように記載されています。 「機能のクラス階層」と「実装のクラス階層」を橋渡しする まず、「機能のクラス階層」と「実装のクラス階層」の説明をしていき…

Abstract Factory-関連する部品を組み合わせて製品を作る-

Java言語で学ぶデザインパターン入門 の第9章を参考にしました。 Abstract Factoryパターンとは 本書には以下のように記載されています。 部品の具体的な実装には注目せず、インターフェースに注目し、 そのインターフェースのみで部品を組立て、製品にまと…

Builder-複雑なインスタンスを組み上げる-

Java言語で学ぶデザインパターン入門 の第7章を参考にしました。 Builderパターンとは 本書には以下のように記載されています。 構造を持ったインスタンスを組み上げていくデザインパターン つまり、一気に完成品を作成するのではなく、全体を構成している各…

Prototype-コピーしてインスタンスを作る-

Java言語で学ぶデザインパターン入門 の第6章を参考にしました。 Prototypeパターンとは 本書には以下のように記載されています。 クラスからインスタンスを生成するのではなく、インスタンスから別のインスタンスを作り出すデザインパターン つまり、new Ho…

Singleton-たった一つのインスタンス-

Java言語で学ぶデザインパターン入門 の第5章を参考にしました。 Singleton Methodパターンとは 本書には以下のように記載されています。 インスタンスが1個しか存在しないことを保証するパターン つまり、生成するインスタンスの数を1つに制限するデザイン…

Factory Method-インスタンス作成をサブクラスにまかせる-

Java言語で学ぶデザインパターン入門 の第4章を参考にしました。 Factory Methodパターンとは 本書には以下のように記載されています。 インスタンス生成のための枠組みをスーパークラス側で定め、実装はサブクラスが行う つまり、前回の記事のTemplate Meth…

Templete Method-具体的な処理をサブクラスにまかせる-

Java言語で学ぶデザインパターン入門 の第3章を参考にしました。 Templete Methodパターンとは 本書には以下のように記載されています。 スーパークラスで処理の枠組みを定め、サブクラスでその具体的内容を定める。 Templeteには、「雛形」という意味があり…

Adapter-皮をかぶせて再利用-

Java言語で学ぶデザインパターン入門 の第2章を参考にしました。 Adapterパターンとは 本書には以下のように記載されています。 「既に提供されているもの」と「必要なもの」の間のズレを埋めるようなデザインパターン Adapterの元である「adapt」という単語…

Iterator -1つ1つ数え上げる-

Java言語で学ぶデザインパターン入門 の第1章を参考にしました。 Iteratorパターンとは 本書には、以下のように記載されています。 何かがたくさん集まっているときに、それを順番に指し示していき、全体をスキャンする処理を行うもの。 簡単に言うと、for文…

ハイブリッド暗号~安全な鍵配送を目指して~

『暗号技術のすべて』の第8章を参考にしました。 今回は、鍵の配送について書いていきます。 鍵配送とは 以前の記事で 紹介した共通鍵暗号では、事前に鍵の共有が必要となります。 その際、鍵の配送を安全に行うことはとても重要なことです。 鍵配送の方法 …

ディジタル署名は公開鍵暗号と対称関係にあるのか

『暗号技術のすべて』の第7章を参考にしました。 ディジタル署名(電子署名)についてです。 ディジタル署名はよく「公開鍵暗号とは対称関係である」といわれますが、そうではないということを説明していきます。 ディジタル署名とは 署名とは、「本人である…

RSA暗号

『暗号技術のすべて』の第4章を参考にしました。 初めての具体的な公開鍵暗号であるRSA暗号について書いていきます。 RSA暗号とは 1977年にリベスト、シャミア、エーデルマンによって提唱 初めての具体的な公開鍵暗号 RSA仮定の下でOW-CPA安全 数学的基礎知…

公開鍵暗号

『暗号技術のすべて』の第4章を参考にしました。 この章は、公開鍵暗号について書かれています。 公開鍵暗号とは これまでに紹介したDESやAESのような共通鍵暗号は、事前に送受信者間で共通鍵を共有しなければならないという問題がありました。こうした問題…

米国国家基準暗号 - DESとAES

『暗号技術のすべて』第3章を参考にしました。 共通鍵暗号のDESやAESについての章ですが、アルゴリズムは様々なサイトで詳細な説明がされているので、私が興味を持ったことのみ書いていきます。 DES Data Ecryption Standard(データ暗号化標準)の略 米国の…

最強の暗号?バーナム暗号

バーナム暗号とは 秘密鍵を使い捨てで用いる共通鍵暗号 1917年にVernamによって、考案 1949年にShannonによって、理論的に解読不可能であることを証明 → 最強の暗号? アルゴリズム バーナム暗号の暗号化、復号には、排他的論理和という演算が用いられていま…

共通鍵暗号まとめ

『暗号技術のすべて』の第3章を参考にしました。 古典暗号では、利用シーンが軍事や外交に限られていました。しかし、コンピュータやインターネットが発達した現代では、様々なシーンにおいて、顔を知らない相手とやり取りする必要があります。また、ディジ…

難攻不落の暗号 - エニグマ

個人的に、暗号=エニグマという印象が強かったので、今回はエニグマについて調べていきます。 エニグマとは 第二次世界大戦でナチス・ドイツが使用 19世紀までは手作業で暗号化が行われていたが、20世紀以降は機械によって行われた → 機械式暗号 ローター(…

古典暗号まとめ

『暗号技術のすべて』という本の第2章を参考にしました。 古典暗号とは 暗号 古典暗号 現代暗号 『暗号技術のすべて』においては... コンピュータ誕生以前の暗号 → 古典暗号 それ以降の暗号 → 現代暗号 古典暗号の種類 ヒエログラフ シーザー暗号 コード ス…

Solidityに触れてみた

2/9,16,17日にブロックチェーンハッカソンに参加してきました! そこで、SolidityというEthereum上で動くスマートコントラクト開発言語に初めて触れたので知識をメモしておきます。 修飾子 アクセス修飾子 アクセス修飾子 内部 継承先 外部 public ◯ ◯ ◯ ext…

なぜパスワードはハッシュ化されるのか

昨日のブログでパスワードは ハッシュ化されて保存されていると書きました。 では、なぜ暗号化ではなく、ハッシュ化されるのでしょうか。 それは、パスワードを保存するという目的の上では、ハッシュ化の方が優れているからです。 暗号とは みんな大好きWiki…

なぜパスワードを忘れると再設定しなければならないのか

これを読んでいるあなたも一度はパスワードを忘れて再設定をしたことがあるでしょう。「再設定なんて面倒だからパスワード教えてよ」と怒りに震えたこともあるでしょう。では、なぜパスワードを再設定しなければならないのか。それはパスワードがハッシュ化…