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
7
21k
ハッシュと暗号は違うぞ! / 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からはじめるコンピュータアーキテクチャ 15分ダイジェスト版 / PHP Meets Silicon: A Fun Dive into Computer Structures 15mins ver
tomzoh
2
190
PHPでXOAUTH2を使ってGmailからメールを取り込む / Getting Mail from Gmail with XOAUTH2 in PHP
tomzoh
0
220
PHPからはじめるコンピュータア ーキテクチャ / PHP Meets Silicon: A Fun Dive into Computer Structures PHP Conference 2023 ver
tomzoh
0
290
PHPからはじめるコンピュータア ーキテクチャ / PHP Meets Silicon: A Fun Dive into Computer Structures
tomzoh
4
570
NANDがあればNANDeもできる / With NAND, you can do anything
tomzoh
0
260
コンピュータはなぜ0と1なのか / How and Why Computers Operate Using Binary Code
tomzoh
0
240
PHPerKaigi 2023に行こう! / Let's Attend PHPerKaigi 2023!
tomzoh
1
260
iOSDC Japan, PHPerKaigi とハイブリッド開催 / Hybrid at iOSDC Japan and PHPerKaigi
tomzoh
2
1.5k
プログラムを実行するとはどういうことか / What does it mean to execute a program?
tomzoh
0
260
Other Decks in Programming
See All in Programming
AWS CDKコントリビュートTIPS / aws-cdk-contribution-tips
gotok365
4
320
0→1と1→10の狭間で Javaという技術選定を振り返る/Reflecting on the Decision to Choose Java Between Scaling from 0 to 1 and 1 to 10
jaguar_imo
2
400
Node.js v22 で変わること
yosuke_furukawa
PRO
11
3.9k
"config" ってなんだ? / What is "config"?
okashoi
0
250
Elm Form Validation
bkuhlmann
0
510
What We Can Learn From OSS
inouehi
0
430
Ruby Function Composition
bkuhlmann
1
340
Fragment Composition of GraphQL
quramy
13
1.4k
雑に思考を整理する技術と効能
konifar
62
30k
Komplexe Oberflächen mit SVG und der Web Animation API
joergneumann
0
680
Deep Dive into React Stream/Serialize
mugi_uno
3
540
初心者のためのRubyKaigi入門/RubyKaigi Introduction
a_matsuda
8
1.3k
Featured
See All Featured
Building Your Own Lightsaber
phodgson
100
5.7k
What's in a price? How to price your products and services
michaelherold
238
11k
KATA
mclloyd
16
12k
Gamification - CAS2011
davidbonilla
77
4.6k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
358
22k
Designing the Hi-DPI Web
ddemaree
276
33k
Navigating Team Friction
lara
179
13k
Bootstrapping a Software Product
garrettdimon
PRO
302
110k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
226
51k
The Straight Up "How To Draw Better" Workshop
denniskardys
228
130k
Designing for humans not robots
tammielis
248
25k
GitHub's CSS Performance
jonrohan
1025
450k
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
ऴ