Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ハッシュと暗号は違うぞ! / Do not confuse hashes and ciphers.
Search
HASEGAWA Tomoki
January 31, 2017
Programming
6
22k
ハッシュと暗号は違うぞ! / Do not confuse hashes and ciphers.
PHP勉強会#110での発表資料です。
HASEGAWA Tomoki
January 31, 2017
Tweet
Share
More Decks by HASEGAWA Tomoki
See All by HASEGAWA Tomoki
低レイヤを知りたいPHPerのためのCコンパイラ作成入門 完全版 / Building a C Compiler for PHPers Who Want to Dive into Low-Level Programming - Expanded
tomzoh
4
3.1k
カンファレンスのつくりかた / The Conference Code: What Makes It All Work
tomzoh
9
1.4k
低レイヤを知りたいPHPerのためのCコンパイラ作成入門 / Building a C Compiler for PHPers Who Want to Dive into Low-Level Programming
tomzoh
1
560
PHPで印刷所に入稿できる名札データを作る / Generating Print-Ready Name Tag Data with PHP
tomzoh
0
540
asumikamというカンファレンスオーガナイザの凄さを語る / The Brilliance of Asumikam
tomzoh
1
470
なぜキャッシュメモリは速いのか 余談集 / Why is Cache Memory So Fast? Extended.
tomzoh
0
260
なぜキャッシュメモリは速いのか / Why is Cache Memory So Fast?
tomzoh
3
1.5k
PHPからはじめるコンピュータアーキテクチャ 15分ダイジェスト版 / PHP Meets Silicon: A Fun Dive into Computer Structures 15mins ver
tomzoh
2
310
PHPでXOAUTH2を使ってGmailからメールを取り込む / Getting Mail from Gmail with XOAUTH2 in PHP
tomzoh
0
610
Other Decks in Programming
See All in Programming
F#で自在につくる静的ブログサイト - 関数型まつり2025
pizzacat83
0
310
Elixir で IoT 開発、 Nerves なら簡単にできる!?
pojiro
1
150
WindowInsetsだってテストしたい
ryunen344
1
190
「Cursor/Devin全社導入の理想と現実」のその後
saitoryc
0
140
Team topologies and the microservice architecture: a synergistic relationship
cer
PRO
0
1k
エンジニア向け採用ピッチ資料
inusan
0
160
iOSアプリ開発で 関数型プログラミングを実現する The Composable Architectureの紹介
yimajo
2
210
エラーって何種類あるの?
kajitack
5
290
都市をデータで見るってこういうこと PLATEAU属性情報入門
nokonoko1203
1
560
Railsアプリケーションと パフォーマンスチューニング ー 秒間5万リクエストの モバイルオーダーシステムを支える事例 ー Rubyセミナー 大阪
falcon8823
4
910
童醫院敏捷轉型的實踐經驗
cclai999
0
180
GitHub Copilot and GitHub Codespaces Hands-on
ymd65536
1
110
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
Agile that works and the tools we love
rasmusluckow
329
21k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.3k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.8k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
A Tale of Four Properties
chriscoyier
160
23k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
790
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
The World Runs on Bad Software
bkeepers
PRO
69
11k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
Documentation Writing (for coders)
carmenintech
71
4.9k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Transcript
ίϯϐϡʔλͷجૅ1 ϋογϡͱ҉߸ҧ͏ͧʂʂ ୩ஐر HASEGAWA Tomoki
ライフワーク: Web / iOSアプリ開発, ビール, 電子工作, サッカー観戦, レンタルカートレース, … 長谷川
智希 Web / iOS App Development, Beer, IoT, Watch soccer match, Rental Kart Racing, … デジタルサーカス株式会社 副団長CTO Digital Circus, Inc. Vice-master CTO Tokyo, Japan Lifework: @tomzoh
None
None
WE ARE HIRING!! Web Development Mobile App Development ( )
(iOS, Android) http://www.dgcircus.com Omotesando, Tokyo
ࠓͷςʔϚ • ࣮ࡍʹ͋ͬͨΓͱΓ: ͓٬͞·ʮηΩϡϦςΟ্DBʹύεϫʔυΛอଘ͠ͳ͍Ͱɻʯ ϕϯμʮͰύεϫʔυ҉߸Խͯ͠อଘ͠·͠ΐ͏ɻʯ ΅͘ʮ·ͬͯʂʂʂʂ ʯ • ϋογϡͱ҉߸ͷҧ͍͕ཧղ͞Ε͍ͯͳ͍͜Μͳੈͷ த͡ΌϙΠζϯ☠
• ίϯϐϡʔλΤϯδχΞͱͯͪ͠ΌΜͱཧղͯ͠ɺਖ਼ ͘͠ϋογϡ҉߸ԽΛ͓͏ɻ
ϋογϡ
ϋογϡ • γεςϜ։ൃɺಛʹWebγεςϜͰ࣌ͱͯ͠ϋο γϡΛ͏ɻ • ͦͷಛੑΛཧղ͠ͳ͍ͰϋογϡΛ༻͢Δͱɺ ηΩϡϦςΟ੬ऑੑΛ๊͑ΔՄೳੑ͕͋Δɻ • ϋογϡͷಛੑΛཧղͯ͠ਖ਼͍͘͠·͠ΐ͏ɻ
ϋογϡͱԿ͔
ӳ୯ޠͱͯ͠ͷҙຯ:
None
ΟΩϖσΟΞͰݟΔͱ:
None
None
ϋογϡͱԿ͔ • ʮσʔλ͔Βࢉग़ͨ͠খ͞ͳɻ֤σʔλΛ۠ผɾ දݱ͢Δతʹ༻͍Δʯ • σʔλΛϋογϡؔʹೖྗ͢Δͱɺϋογϡ ͕ग़ྗ͞ΕΔɻ • ϋογϡؔͷྫ: md5,
sha-1, sha-2 …
ϋογϡؔͷಛ Α͘ΘΕΔϋογϡؔ͜Μͳ෩ʹઃܭ͞Ε͍ͯΔ: • Կͬͯಉ͡ϋογϡʹͳΔ • ͲΜͳσʔλΛೖྗͯ͠ಉ͡͞ͷϋογϡʹͳΔ • ผͷσʔλʹର͍͍ͯͩͨ͠ผͷϋογϡʹͳΔ • ϋογϡ͔ΒݩͷσʔλΛࢉग़͢Δ͜ͱ΄΅Ͱ͖ͳ͍
ϋογϡؔͷ༻్
ϋογϡؔͷ༻్1 ʮμϯϩʔυ͖ͯͨ͠ϑΝΠϧɺ ͪΌΜͱμϯϩʔυͰ͖͔ͨͳ…ʯ • μϯϩʔυݩʹϋογϡؔͱϋογϡΛදࣔɻ • μϯϩʔυͨ͠ϑΝΠϧͷϋογϡΛखݩͰܭࢉͯͦ͠Ε ͱൺֱ͢Δɻ • ϋογϡ͕߹͑OKɻ
• ϑΝΠϧ͕վ͟Μ͞Ε͍ͯͨΓɺμϯϩʔυʹࣦഊ͍ͯ͠Εϋο γϡ͕߹Θͳ͍ɻ • aptͱ͔yumͰ෦తʹ༻͞Ε͍ͯΔɻ
UbuntuͷISOαΠτ
UbuntuͷISOαΠτ
UbuntuͷISOαΠτ c94d54942a2954cf852884d656224186 *ubuntu-16.04-desktop-amd64.iso 610c4a399df39a78866f9236b8c658da *ubuntu-16.04-desktop-i386.iso 23e97cd5d4145d4105fbf29878534049 *ubuntu-16.04-server-amd64.img 23e97cd5d4145d4105fbf29878534049 *ubuntu-16.04-server-amd64.iso 494c03028524dff2de5c41a800674692
*ubuntu-16.04-server-i386.img 494c03028524dff2de5c41a800674692 *ubuntu-16.04-server-i386.iso 17643c29e3c4609818f26becf76d29a3 *ubuntu-16.04.1-desktop-amd64.iso 9e4e30c37c99b4e029b4bfc2ee93eec2 *ubuntu-16.04.1-desktop-i386.iso d2d939ca0e65816790375f6826e4032f *ubuntu-16.04.1-server-amd64.img d2d939ca0e65816790375f6826e4032f *ubuntu-16.04.1-server-amd64.iso 455206c599c25d6a576ba23ca906741a *ubuntu-16.04.1-server-i386.img 455206c599c25d6a576ba23ca906741a *ubuntu-16.04.1-server-i386.iso
ϋογϡؔͷ༻్2 ʮ/node/1ͱ͔ɺID͕URLʹؙݟ͑ͳͷΧοί ѱ͍ͳ…ʯ • IDΛϋογϡؔͷೖྗͱ͠ɺURLʹϋογϡΛ͏ɻ • /user/9e4e30c37c99b4e029b4bfc2ee93eec2
ϋογϡؔͷ༻్3 ʮύεϫʔυΛͦͷ··DBʹอଘ͢Δͷةݥɻʯ • Ϣʔβ͕ೖྗͨ͠ύεϫʔυ͕Ϣʔβ͕ઃఆͨ͠ͷͱಉ͔͕͡ ͔Εྑ͍ɻ • ϋογϡؔΛܾΊ͓͖ͯɺDBʹύεϫʔυͷϋογϡΛอ ଘ͢Δɻ • ࣍ճϩάΠϯ࣌ʹϢʔβ͕ೖྗͨ͠จࣈྻ͔ΒϋογϡΛܭࢉ
͠ɺDBʹอଘ͞Εͨͷͱൺֱ͢Δɻ • ϋογϡ͕߹͑Ϣʔβ͕ೖྗͨ͠จࣈྻͦͷϢʔβ͕ઃఆͨ͠ ύεϫʔυͱ͍͠ɻ • DB͕ྲྀग़ͯ͠ύεϫʔυόϨͳ͍ɻ
ϋογϡͷಛੑʹΑΔҙࣄ߲
ϋογϡؔͷ༻్1 ʮμϯϩʔυ͖ͯͨ͠ϑΝΠϧɺ ͪΌΜͱμϯϩʔυͰ͖͔ͨͳ…ʯ • μϯϩʔυݩʹϋογϡؔͱϋογϡΛදࣔɻ • μϯϩʔυͨ͠ϑΝΠϧͷϋογϡΛखݩͰܭࢉͯͦ͠Ε ͱൺֱ͢Δɻ • ϋογϡ͕߹͑OKɻ
• ϑΝΠϧ͕վ͟Μ͞Ε͍ͯͨΓɺμϯϩʔυʹࣦഊ͍ͯ͠Εϋο γϡ͕߹Θͳ͍ɻ • aptͱ͔yumͰ෦తʹ༻͞Ε͍ͯΔɻ
ϋογϡؔͷಛ Α͘ΘΕΔϋογϡؔ͜Μͳ෩ʹઃܭ͞Ε͍ͯΔ: • Կͬͯಉ͡ϋογϡʹͳΔ • ͲΜͳσʔλΛೖྗͯ͠ಉ͡͞ͷϋογϡʹͳΔ • ผͷσʔλʹର͍͍ͯͩͨ͠ผͷϋογϡʹͳΔ • ϋογϡ͔ΒݩͷσʔλΛࢉग़͢Δ͜ͱ΄΅Ͱ͖ͳ͍
ϋογϡিಥʹΑΔ߈ܸ ਆιϑτ͕Ͱ͖ͨͷͰެ։͢ΔΑɻ ϋογϡ͖Ͷɻ
ϋογϡিಥʹΑΔ߈ܸ ਆιϑτ͕Ͱ͖ͨͷͰެ։͢ΔΑɻ ϋογϡ͖Ͷɻ ΟϧεೖΕͯ…ɻඌʹΰϛσʔλ͚Ճ͑ͯϋο γϡಉ͡ʹͳΔ༷ʹͨ͠Ζɻ
ϋογϡিಥʹΑΔ߈ܸ μϯϩʔυͨ͠ϑΝΠϧɺେৎ͔ͳʁ ϋογϡ߹ͬͯΔ͠OKʂ ਆιϑτ͕Ͱ͖ͨͷͰެ։͢ΔΑɻ ϋογϡ͖Ͷɻ ΟϧεೖΕͯ…ɻඌʹΰϛσʔλ͚Ճ͑ͯϋο γϡಉ͡ʹͳΔ༷ʹͨ͠Ζɻ
ϋογϡিಥʹΑΔ߈ܸ μϯϩʔυͨ͠ϑΝΠϧɺେৎ͔ͳʁ ϋογϡ߹ͬͯΔ͠OKʂ ਆιϑτ͕Ͱ͖ͨͷͰެ։͢ΔΑɻ ϋογϡ͖Ͷɻ ΟϧεೖΕͯ…ɻඌʹΰϛσʔλ͚Ճ͑ͯϋο γϡಉ͡ʹͳΔ༷ʹͨ͠Ζɻ ͗ΌʔʂΟϧεೖΓͩͬͨʂʂʂ
ϋογϡিಥʹΑΔ߈ܸ μϯϩʔυͨ͠ϑΝΠϧɺେৎ͔ͳʁ ϋογϡ߹ͬͯΔ͠OKʂ ਆιϑτ͕Ͱ͖ͨͷͰެ։͢ΔΑɻ ϋογϡ͖Ͷɻ ΟϧεೖΕͯ…ɻඌʹΰϛσʔλ͚Ճ͑ͯϋο γϡಉ͡ʹͳΔ༷ʹͨ͠Ζɻ ͗ΌʔʂΟϧεೖΓͩͬͨʂʂʂ Ͳ͏ͨ͠ΒΑ͔ͬͨʁ
ϋογϡিಥʹΑΔ߈ܸͷରࡦ • Ͳ͏͠Α͏ͳ͍ɻ • ϋογϡͷিಥΛҙਤతʹى͜͠ʹ͍͘ΞϧΰϦ ζϜΛ͏͔͠ͳ͍ɻ
ϋογϡিಥʹΑΔ߈ܸͷରࡦ • Ͳ͏͠Α͏ͳ͍ɻ • ϋογϡͷিಥΛҙਤతʹى͜͠ʹ͍͘ΞϧΰϦ ζϜΛ͏͔͠ͳ͍ɻ
ϋογϡؔͷ༻్2 ʮ/node/1ͱ͔ɺID͕URLʹؙݟ͑ͳͷΧοί ѱ͍ͳ…ʯ • IDΛϋογϡؔͷೖྗͱ͠ɺURLʹϋογϡΛ͏ɻ • /user/9e4e30c37c99b4e029b4bfc2ee93eec2
ݯ૾ܭࢉʹΑΔ߈ܸ /node/1 ͬͯͷΞϨͳͷͰϋογϡԽͨ͠Ζɻ $url = sprintf("/user/%s", md5($user_id));
ݯ૾ܭࢉʹΑΔ߈ܸ /node/1 ͬͯͷΞϨͳͷͰϋογϡԽͨ͠Ζɻ $url = sprintf("/user/%s", md5($user_id)); ͜ͷจࣈྻͷฒͼɺmd5ͩͳɻͲ͏ͤݩ࿈൪ͩΖɻ for ($i
= 0; $i < 1000; $i++)} $page = file_get_contents( sprintf("/user/%s", md5($i))); }
ݯ૾ܭࢉʹΑΔ߈ܸ /node/1 ͬͯͷΞϨͳͷͰϋογϡԽͨ͠Ζɻ $url = sprintf("/user/%s", md5($user_id)); ͜ͷจࣈྻͷฒͼɺmd5ͩͳɻͲ͏ͤݩ࿈൪ͩΖɻ for ($i
= 0; $i < 1000; $i++)} $page = file_get_contents( sprintf("/user/%s", md5($i))); } શ෦όϨͨʂ
ݯ૾ܭࢉʹΑΔ߈ܸ /node/1 ͬͯͷΞϨͳͷͰϋογϡԽͨ͠Ζɻ $url = sprintf("/user/%s", md5($user_id)); ͜ͷจࣈྻͷฒͼɺmd5ͩͳɻͲ͏ͤݩ࿈൪ͩΖɻ for ($i
= 0; $i < 1000; $i++)} $page = file_get_contents( sprintf("/user/%s", md5($i))); } શ෦όϨͨʂ Ͳ͏ͨ͠ΒΑ͔ͬͨʁ
ݯ૾ܭࢉʹΑΔ߈ܸͷରࡦ1 • ݩσʔλ͕όϨͳ͍Α͏ʹ͢Δɻ • ͦͷͨΊʹɺݩσʔλʹιϧτΛՃ͢Δɻ • ιϧτԿͰྑ͍ɻ20จࣈҎ্͙Β͍ͷਪଌ͠ʹ͍͘จࣈ ྻɻ • ʮ࿈൪ͱ͔ΛΘ͔Γʹ͘͘͢Δʯ༷ͳ༻్ͰɺιϧτΛ
͚ͳ͍ܗͰϋογϡؔΛ͏͜ͱແ͍ͱࢥͬͯྑ͍ɻ
ݯ૾ܭࢉʹΑΔ߈ܸͷରࡦ1 • ݩσʔλ͕όϨͳ͍Α͏ʹ͢Δɻ • ͦͷͨΊʹɺݩσʔλʹιϧτΛՃ͢Δɻ • ιϧτԿͰྑ͍ɻ20จࣈҎ্͙Β͍ͷਪଌ͠ʹ͍͘จࣈ ྻɻ • ʮ࿈൪ͱ͔ΛΘ͔Γʹ͘͘͢Δʯ༷ͳ༻్ͰɺιϧτΛ
͚ͳ͍ܗͰϋογϡؔΛ͏͜ͱແ͍ͱࢥͬͯྑ͍ɻ $salt = "aemi4ahcoh7weeN2euth"; $url = sprintf("/user/%s", md5($salt.$user_id));
ϋογϡؔͷ༻్3 ʮύεϫʔυΛͦͷ··DBʹอଘ͢Δͷةݥɻʯ • Ϣʔβ͕ೖྗͨ͠ύεϫʔυ͕Ϣʔβ͕ઃఆͨ͠ͷͱಉ͔͕͡ ͔Εྑ͍ɻ • ϋογϡؔΛܾΊ͓͖ͯɺDBʹύεϫʔυͷϋογϡΛอ ଘ͢Δɻ • ࣍ճϩάΠϯ࣌ʹϢʔβ͕ೖྗͨ͠จࣈྻ͔ΒϋογϡΛܭࢉ
͠ɺDBʹอଘ͞Εͨͷͱൺֱ͢Δɻ • ϋογϡ͕߹͑Ϣʔβ͕ೖྗͨ͠จࣈྻͦͷϢʔβ͕ઃఆͨ͠ ύεϫʔυͱ͍͠ɻ • DB͕ྲྀग़ͯ͠ύεϫʔυόϨͳ͍ɻ
ݯ૾ܭࢉʹΑΔ߈ܸ ύεϫʔυΛϋογϡԽͯ͠DBʹอଘͨ͠Αɻ ͜ΕͰσʔλ͕࿙Ӯͯ͠େৎʂ
ݯ૾ܭࢉʹΑΔ߈ܸ ύεϫʔυΛϋογϡԽͯ͠DBʹอଘͨ͠Αɻ ͜ΕͰσʔλ͕࿙Ӯͯ͠େৎʂ ͜ͷจࣈྻͷฒͼɺmd5ͩͳɻΑ͋͘Δύεϫʔυͷ දΛͬͯ…ɻ ݩσʔλ md5 abcde ab56b4d92b40713acc5af89985d4b786 qwerty
d8578edf8458ce06fbc5bb76a58c5ca4 password 5f4dcc3b5aa765d61d8327deb882cf99 : :
ݯ૾ܭࢉʹΑΔ߈ܸ ύεϫʔυΛϋογϡԽͯ͠DBʹอଘͨ͠Αɻ ͜ΕͰσʔλ͕࿙Ӯͯ͠େৎʂ ͋ͬͱ͍͏ؒʹύεϫʔυ͕Εͨʂ ͜ͷจࣈྻͷฒͼɺmd5ͩͳɻΑ͋͘Δύεϫʔυͷ දΛͬͯ…ɻ ݩσʔλ md5 abcde ab56b4d92b40713acc5af89985d4b786
qwerty d8578edf8458ce06fbc5bb76a58c5ca4 password 5f4dcc3b5aa765d61d8327deb882cf99 : :
ݯ૾ܭࢉʹΑΔ߈ܸ ύεϫʔυΛϋογϡԽͯ͠DBʹอଘͨ͠Αɻ ͜ΕͰσʔλ͕࿙Ӯͯ͠େৎʂ ͋ͬͱ͍͏ؒʹύεϫʔυ͕Εͨʂ Ͳ͏ͨ͠ΒΑ͔ͬͨʁ ͜ͷจࣈྻͷฒͼɺmd5ͩͳɻΑ͋͘Δύεϫʔυͷ දΛͬͯ…ɻ ݩσʔλ md5 abcde
ab56b4d92b40713acc5af89985d4b786 qwerty d8578edf8458ce06fbc5bb76a58c5ca4 password 5f4dcc3b5aa765d61d8327deb882cf99 : :
ݯ૾ܭࢉʹΑΔ߈ܸͷରࡦ2 • Ϣʔβ͕ͲΜͳύεϫʔυΛ͚ͯςʔϒϧʹͦ Ε͕ݱΕͳ͍༷ʹ͢Δɻ • ͦͷͨΊʹɺݩσʔλʹιϧτΛՃ͢Δɻ • લͷέʔεͱಉ͡ɻ • ϋογϡͱฉ͍ͨΒιϧτʁͱࢥ͏͙Β͍Ͱྑ͍ɻ
• ͪͳΈʹ͜ͷςʔϒϧɺ͘͢͝σΧ͍ɻ • 4จࣈͰ640MBɺ5จࣈͰ50GBɺ8จࣈͰ12PBɻ • ϨΠϯϘʔςʔϒϧͱ͍͏ํ๏͕͋Δɻ IUUQXXXTMJEFTIBSFOFUIJNBSVTBMU ࢀߟ
ϋογϡͷিಥ
ϋογϡͷিಥ • ϋογϡͷিಥ: ผͷσʔλΛϋογϡؔʹೖΕ͍ͯΔͷʹɺಉ͡ϋογϡ ͕ग़͖ͯͯ͠·͏͜ͱɻ • ͲΜͳϋογϡؔΛબΜͰϋογϡඞͣিಥ͢Δɻ ݩσʔλ 32bit ϋογϡ
2bit data 1 data 2 data 3 data 4 hash 1 hash 2 hash 3 hash 4 data 5
ϋογϡͷিಥ • ϋογϡͷিಥ: ผͷσʔλΛϋογϡؔʹೖΕ͍ͯΔͷʹɺಉ͡ϋογϡ ͕ग़͖ͯͯ͠·͏͜ͱɻ • ͲΜͳϋογϡؔΛબΜͰϋογϡඞͣিಥ͢Δɻ ݩσʔλ 32bit ϋογϡ
2bit data 1 data 2 data 3 data 4 hash 1 hash 2 hash 3 hash 4 data 5
ϋογϡͷিಥ • ϋογϡͷিಥ: ผͷσʔλΛϋογϡؔʹೖΕ͍ͯΔͷʹɺಉ͡ϋογϡ ͕ग़͖ͯͯ͠·͏͜ͱɻ • ͲΜͳϋογϡؔΛબΜͰϋογϡඞͣিಥ͢Δɻ ݩσʔλ 32bit ϋογϡ
2bit data 1 data 2 data 3 data 4 hash 1 hash 2 hash 3 hash 4 data 5
ϋογϡͷিಥ • ϋογϡͷিಥ: ผͷσʔλΛϋογϡؔʹೖΕ͍ͯΔͷʹɺಉ͡ϋογϡ ͕ग़͖ͯͯ͠·͏͜ͱɻ • ͲΜͳϋογϡؔΛબΜͰϋογϡඞͣিಥ͢Δɻ ݩσʔλ 32bit ϋογϡ
2bit data 1 data 2 data 3 data 4 hash 1 hash 2 hash 3 hash 4 data 5
ϋογϡͷিಥ • ϋογϡͷিಥ: ผͷσʔλΛϋογϡؔʹೖΕ͍ͯΔͷʹɺಉ͡ϋογϡ ͕ग़͖ͯͯ͠·͏͜ͱɻ • ͲΜͳϋογϡؔΛબΜͰϋογϡඞͣিಥ͢Δɻ ݩσʔλ 32bit ϋογϡ
2bit data 1 data 2 data 3 data 4 hash 1 hash 2 hash 3 hash 4 data 5
ϋογϡͷিಥ • ϋογϡͷিಥ: ผͷσʔλΛϋογϡؔʹೖΕ͍ͯΔͷʹɺಉ͡ϋογϡ ͕ग़͖ͯͯ͠·͏͜ͱɻ • ͲΜͳϋογϡؔΛબΜͰϋογϡඞͣিಥ͢Δɻ ݩσʔλ 32bit ϋογϡ
2bit data 1 data 2 data 3 data 4 hash 1 hash 2 hash 3 hash 4 data 5
ϋογϡ͕িಥ͢Δલఏͷઃܭ • ϋογϡඞͣিಥ͢Δ • ϋογϡΛ͏߹ʹিಥͨ͠ΒࠔΔ͔ࠔΒͳ͍͔Λඞͣ ߟ͑Δɻ • URLͷྫͳͲɺϢχʔΫͰͳ͍ͱࠔΔͷɺඞͣিಥͯ͠ ͍ͳ͍͔ͷνΣοΫΛ͢Δɻ •
ύεϫʔυͷྫিಥ͔ͯ͠·Θͳ͍ɻ • ʮͦͷϋογϡΛDBʹอଘ͢Δ࣌ʹɺͦͷΧϥϜ͕ϢχʔΫ Ͱ͋Δඞཁ͕͋Δ͔ʯ
ଥͳιϧτͱ • ιϧτͱͯ͠ଥͳจࣈྻԿ͔ • ͕͞ҰఆҎ্͋Δ͜ͱ͚ͩͲ… • ͍ιϧτϋογϡؔʹೖྗ͢ΔσʔλͷใྔΛ૿͢ɻ • ใྔ͕૿͑ΔͱিಥΛى͘͜͢͠ͳΔ͔͠Εͳ͍ɻ •
Ұൠతʹ༻͞ΕΔϋογϡؔ͜ͷ༷ͳʮ͍ۙσʔλʢι ϧτ͕ಉ͡Ͱݩσʔλ෦͚͕ͩҧ͏σʔλʣʯ͕িಥ͠ʹ͘ ͍༷ʹઃܭ͞Ε͍ͯΔɻ • 20จࣈఔɺͱ͔ɺ26จࣈఔɺͱ͔͍Ζ͍ΖݴΘΕ͍ͯΔɻ
·ͱΊ
·ͱΊ • ϋογϡͱ҉߸ҧ͏Αɻ • ϋογϡ҉߸Λ͏࣌ɺͳͥͦΕΛ͏͔ɺ ͳͥͦͷஅΛ͖͔͢Λߟ͑Α͏ɻ • ϋογϡΛ͏߹… • ඞͣɺιϧτΛ͚Α͏ɻ
• ඞͣɺিಥͯ͠ྑ͍͔Λߟ͑Α͏ɻ
ʮύεϫʔυͷϋογϡԽʯͱ͔ ͍͠ͱ͜Ζ͍͍ͨͯ ಄͍͍ਓ͕ߟ͑ͯΈΛ ࡞ͬͯ͘Ε͍ͯΔ
ڊਓͷݞʹΖ͏
ͨͩ͠
தΛཧղͤͣʹ ͳΜͱͳ͘͏ͷ࠷ѱ
ҙຯ͕ແ͍͚ͩͳΒྑ͍͕ɺ ͔ͤͬ͘ߟ͑ΒΕͨΈΛ ࡴ͢͜ͱʹͳΓಘΔ
None
None
None
ࣗԿΛ͍ͨ͠ͷ͔ DrupalԿΛ༩͑ͯ͘Ε͍ͯΔͷ͔ ͪΌΜͱཧղͯ͠ɺਖ਼͓͘͠͏
ͦͯ͠…
͜ͷखͷ ʮಛఆͷʹґଘ͠ͳ͍ࣝʯ ΤϯδχΞͷ݂ͱͳΓͱͳΓɺ ΤϯδχΞͱͯ͠ੜ͖͍ͯͨ͘Ίͷ ྗʹͳΔ
ʮྗ͕…ཉ͍͔͠…ʯ
͜͏͍͏ࣝΛͲ͏ͬͯಘΔ͔ • ϋογϡʹݶΒͣɺιϑτΣΞ։ൃʹଟ͘ͷप ล͕ࣝඞཁɻ • ใܥͷେֶઐֶߍͰڭΘΔʢͣʣɻ • ମܥతʹֶ͘ͿͷͰ͋Εࢿ֨ࢼݧ͕ศརɻ • IPAʢใॲཧਪਐػߏʣͷ
ʮใॲཧٕज़ऀࢼݧʯ͕͓͢͢Ίɻ http://www.jitec.ipa.go.jp
ऴ