お帰りなさい｡
私たちはPassword APIについて､ そしてこのAPIによって誰も信用できなくなることについて学んだばかりです｡
つまり､ 私たちは自分たちだけを信頼し､ APIに安心できる情報のみを与え､
APIが何らかのデータで応答し､ 私たちが仮にもっと安全である自分のマシンで計算できるようにします｡
そこで､ パスワードのハッシュ値全体を渡すのではなく､ ほんの少しを渡すようにしました｡
最初の5文字､ 今では6億近いパスワードがデータベースとWebサイトに登録されているそうです｡
今なら､ 私たちが同じような開始ハッシュを持つ数百人のうちの一人であることがわかるだけで､ 私たちのパスワードを知ることはできないでしょう｡
しかし､ このレスポンスデータがあれば､ パスワードが後出しされたことがないか､ ハッキングされたことがないか､ フルハッシュで確認することができるようになったのです｡
では､ プログラムを書き始めましょう｡ 理想を言えば､ この応答では､ 数百のハッシュのリストがあり､
それに対してチェックすることができますから｡
やりたいことを考えよう｡
理想的には､ 例えば関数があり､ この関数がリクエストになるわけです｡
APIです｡
データというのは､ ここでやっていることです｡
準備ができたらそれをここに移動させ､ ここにクエリ文字を指定します｡
つまり､ このハッシュ化されたパスワードを渡すのです｡
これは関数で､ 今はただ渡すだけです｡
でも､ これは私たちのデータを要求して､ その回答を出してくれるんです｡
次にこのレスポンスで､ 実際にチェックしたいのは､ pwned APIチェックと､ この中にあるパスワードを入力することです｡
これが実際のパスワードで､ ここではpasswordとします｡
1､ 2､ 3
そしてこの中で､ ある種のチェックを行いたい｡
チェックと言いたい｡
パスワード
APIに存在する場合｡
対応する｡
ここから上です｡
だから､ とりあえずはそれをパスする｡
では､ 1つ目に取り組んでみましょう｡
それがリクエストAPIのデータです｡
こちらではすでにいくつかやっています｡
そうですね｡
実はこのコード､ 動かすんです｡
この上です｡
この強さではなく､ ここにパディングがあることを確認してください｡
実際に関数幅と呼ぶクエリ文字を与えて､ ダイナミックに動くようにします｡
そしてまた､ URLをリクエストし､ レスポンスを得ることができるのです｡
そして､ この中でチェックを行います｡
レスポンス・ドット・ステータスが200であるかどうか､ あるいはこの場合､ ステータスが200に等しくないかどうかを確認することができますので､
覚えておいてください｡
その場合は､ エラーを出せばいいのです｡
だから､ レイズはランタイムエラーをやると言って､ Fの文字列を使って､ こう言うんだ｡
空気です｡
フェッチする｡
そして､ レスポンス・ステータスになるようにステータス・コードを付与します｡
あ､ 実はこれ､ ステータスコードなんです｡
では､ ここでステータスコードとし､ チェックとします｡
APIを起動して再度お試しください｡
よし､ これで間違ったら私たちのエラーになるはずだ｡
ちょっと試してみようか｡
ただ､ そのつもりです｡
存在しないAPIをやろう｡
だから､ ここでちんたらと走るだけです｡
これを保存して実行すると
さて､ このコード片を実際に動かしてみなければならない｡
では､ APIデータのリクエストをしてみましょう｡ クエリ文字は次のようになります｡
1､ 2､ 3
そして､ ご存知ですか？
これは､ 私がやってもやらなくても放送されますよ｡
だから､ ハッチ版じゃないから､ こうしよう｡
そして､ 実際にpythonのエラーが発生しました｡ type here can only concatenate string not int.
つまり､ これを文字列に変換すればよいのです｡ なぜなら､ ここでURLに追加していることを思い出してください｡
もう一度､ これを実行すると
よし､ 見てみよう｡
ランタイムエラーが発生しました｡
400の取得に失敗しました｡
APIを確認し､ 再度お試しください｡
さて､ この部分はうまくいっているのですが､ 今回はそのエラーがなければ､ レスポンスを返すということにしましょう｡
ここでも､ 小さな､ 簡単な関数を書いているだけです｡
この場合､ リクエストAPIのデータが欲しいだけなので､ コード全体で使えるようになります｡
すごい｡
さて､ 次の部分は､ パスワードをSHA oneアルゴリズムに通す必要があるため､ 少し厄介な作業となります｡
幸いなことに､ Pythonにはこれを行うためのモジュールが組み込まれているので､ 実際にimport hash libを行うことができます｡
見ての通り､ ビルトインモジュールなので､ 良かったらもっと読んでみてください｡
私たちの場合は､ このライブラリを使って､ あのWebサイトで行ったようなSHA1ハッシュを行うことができます｡
この中に
これからやることは､ まず､ パスワードをハッシュ化できるようにすることです｡
ここで過去を削除してsha one passwordとすると､ このhash lib dot SHA oneのように､ 使いたいハッシュアルゴリズムが使えるようになります｡
そして､ これは少し厄介なことになるのですが､ ドキュメントを読めばいいのです｡
その方法を紹介します｡
今回の場合､ パスワードは可能なので､ UTF8でエンコードしたい｡
というのは､ ごく普通のことです｡
実は､ あのね｡
これが何をするものなのか､ お見せしましょう｡
そこで､ printと言いながら､ パスワードとコードUTF8をすることにします｡
だから､ とりあえずそうしておこう｡
とりあえず､ コメントアウトしておきます｡
そこで､ Pwned API checkを呼び出して､ 1､ 2､ 3とやってみることにします｡
これをクリアしよう｡
このコードの一部を保存して実行します｡
よし､ エンコードされたぞ｡
UTF 8のこの小さなBが見えますか？
この後､ 実際にENCODEを外すとどうなるかをお見せします｡
次に､ ハッシュリブのSHA1を使用する場合｡
では､ これをコピーさせていただきます｡
これを実行すれば
SHA1ハッシュのオブジェクトを取得します｡
この後､ 次のようにドットヘックスダイジェストを呼び出すことができます｡
そして､ これを実行すると
うーん｡
さて､ これをどうやって確認するのか｡
では､ hash libでhex digestを検索してみましょう｡
ですから､ ここでは､ どの時点でも､ データの連結のダイジェスト､ ブラフ､ ブラフ､ 16進ダイジェストを求めることができるのです｡
だから､ 私たちにとっては何の説明にもなっていないんです｡
次のパート､ 次のパートと進んで､ ほら､ ヘックスダイジェストだ｡
16進数のみを含む2倍の長さの文字列オブジェクトを返す｡
これは､ このオブジェクトをこの16進文字列に変換するために必要なことです｡
次に､ APIと一致させるために､ これをすべて大文字に変換する｡
だから､ ここでアッパーをしたら｡
そして､ これを保存して再度実行します｡
Sha 1を見たときと同じように､ すべて大文字で書かれています｡
だから､ これはもう､ 知らなくてもいいことなんです｡
実際にどのように使うかは､ ググってみてください｡
では､ UTF8 ENCODEを使わない場合､ どうなるかを紹介しよう｡
だから､ こうやって､ これを実行すればいいんです｡
見たか？
エラーが発生するのですが｡
Unicodeオブジェクトは､ ハッシュ化する前にエンコードする必要があります｡
このようにUTF8を使ってエンコードすればいいのです｡
つまり､ これはあくまで標準的なものなのです｡
今回も､ あまりおかしなことはしていません｡
エンコーディングやUTF8については､ 自分で好きなように読んでください｡
ここで重要なのは､ 最後にはSHAワンのパスワードが送れるようになることです｡
では､ これをすべてコピーさせていただきます｡
プリントを剥がしに行く｡
そしてこの中に､ SHAワンのパスワードが入ります｡
すごい｡
だからとりあえず､ このSHAを1枚だけ返そう｡
パスワード
そして､ これを実行すると
さて､ 私たちのコードが動作しているようです｡
何も印刷しないが､ うまくいけばいい｡
このシャ・ワン・パスワードを取得しています｡
さて､ 次のビデオでは､ 実際にこれをAPIに送信して､ どのような応答が返ってくるか見てみたいと思います｡
そうしよう｡
休憩をとる｡
次回作でお会いしましょう｡