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
PHPからはじめるコンピュータアーキテクチャ / From Scripts to Silicon: A Journey Through the Layers of Computing
tomzoh
3
430
低レイヤを知りたいPHPerのためのCコンパイラ作成入門 完全版 / Building a C Compiler for PHPers Who Want to Dive into Low-Level Programming - Expanded
tomzoh
4
3.7k
カンファレンスのつくりかた / The Conference Code: What Makes It All Work
tomzoh
9
1.7k
低レイヤを知りたいPHPerのためのCコンパイラ作成入門 / Building a C Compiler for PHPers Who Want to Dive into Low-Level Programming
tomzoh
1
630
PHPで印刷所に入稿できる名札データを作る / Generating Print-Ready Name Tag Data with PHP
tomzoh
0
590
asumikamというカンファレンスオーガナイザの凄さを語る / The Brilliance of Asumikam
tomzoh
1
500
なぜキャッシュメモリは速いのか 余談集 / Why is Cache Memory So Fast? Extended.
tomzoh
0
280
なぜキャッシュメモリは速いのか / Why is Cache Memory So Fast?
tomzoh
3
1.6k
PHPからはじめるコンピュータアーキテクチャ 15分ダイジェスト版 / PHP Meets Silicon: A Fun Dive into Computer Structures 15mins ver
tomzoh
2
320
Other Decks in Programming
See All in Programming
あまり知られていない MCP 仕様たち / MCP specifications that aren’t widely known
ktr_0731
0
220
変化を楽しむエンジニアリング ~ いままでとこれから ~
murajun1978
0
660
Bedrock AgentCore ObservabilityによるAIエージェントの運用
licux
8
560
CIを整備してメンテナンスを生成AIに任せる
hazumirr
0
510
kiroでゲームを作ってみた
iriikeita
0
140
대규모 트래픽을 처리하는 프론트 개발자의 전략
maryang
0
110
書き捨てではなく継続開発可能なコードをAIコーディングエージェントで書くために意識していること
shuyakinjo
0
180
DMMを支える決済基盤の技術的負債にどう立ち向かうか / Addressing Technical Debt in Payment Infrastructure
yoshiyoshifujii
5
750
AIコーディングエージェント全社導入とセキュリティ対策
hikaruegashira
15
9.3k
LLMは麻雀を知らなすぎるから俺が教育してやる
po3rin
3
1.9k
[Codecon - 2025] Como não odiar seus testes
camilacampos
0
100
Vibe coding コードレビュー
kinopeee
0
400
Featured
See All Featured
How to Ace a Technical Interview
jacobian
278
23k
Code Reviewing Like a Champion
maltzj
524
40k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.8k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
47
9.6k
Embracing the Ebb and Flow
colly
86
4.8k
RailsConf 2023
tenderlove
30
1.2k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.2k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
[RailsConf 2023] Rails as a piece of cake
palkan
56
5.7k
The Cost Of JavaScript in 2023
addyosmani
51
8.7k
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
ऴ