อะไรคือ“ แฮช”


38

ฉันเคยได้ยินคำว่า "แฮช" ที่ใช้ในบริบทต่าง ๆ (ภายในโลกแห่งการคำนวณ) ที่มีความหมายต่างกัน ตัวอย่างเช่นในหนังสือ Learn Python the Hard Way ในบทที่เกี่ยวกับพจนานุกรมว่ากันว่า "Python เรียกพวกเขาว่า" dicts "" ภาษาอื่น ๆ เรียกพวกเขาว่า "hash" "ดังนั้นพจนานุกรม hash คืออะไร?

การใช้งานทั่วไปอื่น ๆ ของคำที่เกี่ยวข้องกับการเข้ารหัส ฉันเคยได้ยินคน (& อ่าน) ด้วยการใช้คำว่า "แฮช" เป็นฟังก์ชั่นเฉพาะในการวางโปรแกรมระดับสูง

แล้วมันคืออะไรกันแน่?

ทุกคน (ตามเวลาและใครมีความรู้) ได้โปรดอธิบาย nitty-gritties ของ "hash (หรือ hash)" ได้หรือไม่?


8
วิกิพีเดียมีบทความรายละเอียดเกี่ยวกับตารางกัญชาและกัญชาฟังก์ชันการเข้ารหัสลับ คุณกำลังมองหาอะไรที่ไม่ได้อยู่ในนั้น?
David Richerby

1
คุณได้แสดงรายการการใช้งานหลายครั้งของคำว่า "hash" และมีอีกมากมาย ดังนั้นคุณคาดหวังคำตอบว่า "มันคืออะไรกันแน่"
กราฟิลส์

4
"Hashes" ในแง่นี้คือการย่อ "Hash tables" เช่นตารางที่ใช้ hash สำหรับการจัดระเบียบของคีย์ มันเหมือนกับการเรียก "ก๊าซ" น้ำมันเบนซิน - คุณไม่คาดหวังว่า "ก๊าซ" จะเป็นก๊าซหรือก๊าซที่มีคุณสมบัติคล้ายน้ำมันเบนซินใช่ไหม? สิ่งนี้เกิดขึ้นตลอดเวลาด้วยภาษา - การตัดทอนโดยเฉพาะอย่างยิ่งเป็นแหล่งที่พบบ่อยมากของการทับซ้อนคำ
Luaan

1
"ไม่มีคำจำกัดความสำหรับคำนี้ - ไม่มีใครรู้ว่าแฮชคืออะไร" - พจนานุกรมปีศาจ
jpmc26

เรื่องความคิดที่แตกต่างกันคือฟังก์ชั่นแฮช: ฟังก์ชั่นแฮชเป็นเพียงฟังก์ชั่นบางอย่างที่มีคุณสมบัติมากมาย แต่ไม่ใช่วิธีที่กำหนดไว้ที่เกี่ยวข้องมันเป็นคุณสมบัติที่เราต้องการให้มี - ซึ่งเราได้มาจากวิธีที่เราต้องการ เพื่อใช้ฟังก์ชั่น - ที่เกี่ยวข้อง เพราะเราต้องการใช้มันเพื่อเข้าถึงสิ่งต่าง ๆ อย่างรวดเร็วเราต้องการให้มันคำนวณได้อย่างมีประสิทธิภาพ เนื่องจากเราไม่มีพื้นที่ไม่ จำกัด เราจึงต้องการให้โดเมนมีขอบเขต จำกัด เนื่องจากเราต้องการหลีกเลี่ยงการชนที่ดีที่สุดเท่าที่จะเป็นไปได้เราต้องการให้ฟังก์ชันแฮชแพร่กระจายอย่างสม่ำเสมอ
G. Bach

คำตอบ:


44

บทความ Wikipedia เกี่ยวกับฟังก์ชั่นแฮชนั้นดีมาก แต่ฉันจะให้เวลา


แฮชคืออะไร

"Hash" เป็นคำที่กว้างที่มีความหมายอย่างเป็นทางการที่แตกต่างกันในบริบทที่แตกต่างกัน ไม่มีคำตอบที่สมบูรณ์แบบสำหรับคำถามของคุณ ฉันจะอธิบายแนวคิดพื้นฐานทั่วไปและกล่าวถึงประเพณีที่พบบ่อยที่สุดของคำศัพท์

"hash" เป็นฟังก์ชันเรียกว่าฟังก์ชัน hash ที่ใช้เป็นวัตถุอินพุตและส่งออกสตริงหรือตัวเลข วัตถุอินพุตมักเป็นสมาชิกของชนิดข้อมูลพื้นฐานเช่นสตริงจำนวนเต็มหรือใหญ่กว่าที่ประกอบด้วยวัตถุอื่น ๆ เช่นโครงสร้างที่ผู้ใช้กำหนด ผลลัพธ์มักเป็นตัวเลขหรือสตริง คำนาม "hash" มักจะอ้างถึงเอาต์พุตนี้ คำกริยา "hash" มักจะหมายถึง "ใช้ฟังก์ชั่นแฮช" คุณสมบัติหลักที่ฟังก์ชันแฮชควรมีคือ:ชั่วโมง

  1. มันควรจะง่ายต่อการคำนวณและ
  2. ผลลัพธ์ควรมีขนาดค่อนข้างเล็ก

ตัวอย่าง:

สมมติว่าเราต้องการแฮชตัวเลขในช่วงตั้งแต่ 0 ถึง 999,999,999 ถึงตัวเลขระหว่าง 0 ถึง 99 ฟังก์ชันแฮชธรรมดาหนึ่งฟังก์ชันสามารถชั่วโมง(x)=xพอควร100100

คุณสมบัติเพิ่มเติมทั่วไป:

ขึ้นอยู่กับกรณีใช้งานเราอาจต้องการให้ฟังก์ชันแฮชตอบสนองคุณสมบัติเพิ่มเติม นี่คือคุณสมบัติเพิ่มเติมทั่วไปบางส่วน:

  1. ความสม่ำเสมอ : บ่อยครั้งที่เราต้องการให้แฮชของวัตถุแตกต่างกัน ยิ่งไปกว่านั้นเราอาจต้องการให้แฮช "กระจายออกไป" ถ้าฉันต้องการแฮชวัตถุบางอย่างลงไปใน 100 buckets (ดังนั้นผลลัพธ์ของฟังก์ชันแฮชของฉันคือตัวเลขตั้งแต่ 0-99) ดังนั้นฉันมักจะหวังว่าวัตถุประมาณ 1/100 จะลงจอดใน bucket 0, ประมาณ 1/100 land ใน ถัง 1 และอื่น ๆ

  2. การต้านทานการชนกันของการเข้ารหัส : บางครั้งสิ่งนี้ถูกนำมาใช้มากยิ่งขึ้นตัวอย่างเช่นในการเข้ารหัสฉันอาจต้องการฟังก์ชันแฮชซึ่งเป็นการยากที่คอมพิวเตอร์จะคำนวณหาคู่ปรับที่แตกต่างกันที่แมปไปยังเอาต์พุตเดียวกัน

  3. การบีบอัด : ฉันมักต้องการแฮชอินพุตขนาดใหญ่โดยพลการลงไปในเอาต์พุตขนาดคงที่หรือจำนวนที่คงที่ของถัง

  4. ความมุ่งมั่น : ฉันอาจต้องการฟังก์ชั่นแฮชที่เอาท์พุทไม่เปลี่ยนแปลงระหว่างการทำงานนั่นคือเอาท์พุทของฟังก์ชั่นแฮชบนวัตถุเดียวกันจะยังคงเหมือนเดิม นี่อาจดูเหมือนขัดแย้งกับความสม่ำเสมอด้านบน แต่วิธีแก้ไขปัญหาหนึ่งคือการเลือกฟังก์ชันแฮชแบบสุ่มหนึ่งครั้งและไม่เปลี่ยนระหว่างการรัน


แอพพลิเคชั่นบางตัว

แอปพลิเคชันทั่วไปหนึ่งอยู่ในโครงสร้างข้อมูลเช่นตารางแฮชซึ่งเป็นวิธีการใช้พจนานุกรม ที่นี่คุณจัดสรรหน่วยความจำพูด 100 "ถัง"; จากนั้นเมื่อได้รับการขอให้เก็บคู่ (คีย์, ค่า) ในพจนานุกรมคุณจะต้องกดคีย์ลงในหมายเลข 0-99 และเก็บคู่ไว้ในที่เก็บข้อมูลที่สอดคล้องกันในหน่วยความจำ จากนั้นเมื่อคุณถูกขอให้ค้นหาคีย์คุณแฮชคีย์เป็นหมายเลข 0-99 ด้วยฟังก์ชันแฮชเดียวกันและตรวจสอบที่เก็บข้อมูลนั้นเพื่อดูว่ามีคีย์นั้นอยู่ในนั้นหรือไม่ ถ้าเป็นเช่นนั้นคุณจะคืนค่าของมัน

โปรดทราบว่าคุณยังสามารถใช้พจนานุกรมในรูปแบบอื่นเช่นด้วยแผนภูมิการค้นหาแบบไบนารี (หากวัตถุของคุณเปรียบได้)

แอปพลิเคชั่นที่ใช้งานได้อีกอย่างหนึ่งคือ checksums ซึ่งเป็นวิธีการตรวจสอบว่าสองไฟล์เหมือนกัน (ตัวอย่างเช่นไฟล์นั้นไม่ได้เสียหายจากเวอร์ชันก่อนหน้า) เนื่องจากฟังก์ชันแฮชไม่น่าจะเป็นไปได้มากในการจับคู่สองอินพุตกับเอาต์พุตเดียวกันคุณจึงคำนวณและเก็บแฮชของไฟล์แรกซึ่งมักจะแสดงเป็นสตริง แฮชนี้มีขนาดเล็กมากอาจมีอักขระ ASCII เพียงไม่กี่ตัว จากนั้นเมื่อคุณได้รับไฟล์ที่สองคุณจะแฮชและตรวจสอบว่าเอาต์พุตเหมือนกัน ถ้าเป็นเช่นนั้นเกือบแน่นอนว่าเป็นไฟล์เดียวกันกับไบต์ต่อไบต์

แอปพลิเคชั่นอื่นอยู่ในวิทยาการเข้ารหัสลับซึ่งแฮชเหล่านี้ควรจะยากที่จะ "สลับกลับ" - นั่นคือเนื่องจากได้รับเอาท์พุทและฟังก์ชันแฮชมันควรจะยากที่จะคำนวณหาอินพุต การใช้สิ่งนี้เพื่อใช้เป็นรหัสผ่าน: แทนที่จะเก็บรหัสผ่านไว้เองคุณเก็บแฮชการเข้ารหัสของรหัสผ่าน (อาจมีส่วนผสมอื่น ๆ ) จากนั้นเมื่อผู้ใช้ป้อนรหัสผ่านคุณคำนวณแฮชและตรวจสอบว่าตรงกับแฮชที่ถูกต้อง ถ้าเป็นเช่นนั้นคุณบอกว่ารหัสผ่านถูกต้อง (ตอนนี้แม้แต่คนที่สามารถค้นหาและค้นหาแฮชที่บันทึกไว้บนเซิร์ฟเวอร์ไม่ได้มีเวลาที่แกล้งทำเป็นผู้ใช้) แอปพลิเคชันนี้อาจเป็นกรณีที่เอาต์พุตมีความยาวหรือยาวกว่าอินพุทเนื่องจาก อินพุตสั้นมาก


1
คำอธิบายที่ดี แต่ฉันไม่เห็นด้วยกับ "ไม่น่าเป็นไปได้มาก" ดู: programmers.stackexchange.com/questions/49550/... : การปะทะกันจะเกิดขึ้นและบางครั้งก็น่าแปลกใจที่มักจะ
Olivier Dulac

8
โปรดทราบด้วยว่าในบริบทของการทำสำเนาคำว่า "แฮ็ช" นั้นมีความหมายอย่างยิ่งต่อการดำเนินงาน "ทางเดียว" ที่ไม่สามารถย้อนกลับได้ง่ายในทางปฏิบัติ เมื่อสามารถย้อนกลับได้ง่ายจะเรียกว่า "การเข้ารหัส" นี่คือสาเหตุที่ผู้คนใน Security.SE จะบอกให้คุณแฮชรหัสผ่านลูกค้าของคุณเสมอไม่เข้ารหัสพวกเขา
Ixrec

4
แฮชที่ไม่ "แพร่กระจาย" ยังคงเป็นแฮชซึ่งอาจไม่ดีสำหรับแอปพลิเคชันของคุณ
หยุดทำร้ายโมนิก้า

1
แน่นอนว่าทั้งหมดนี้เป็นจุดที่ดี
usul

10

ฟังก์ชันแฮชเป็นฟังก์ชั่นที่ใช้เวลาการป้อนข้อมูลและการผลิตที่คุ้มค่าของขนาดคงที่ ตัวอย่างเช่นคุณอาจมีฟังก์ชันแฮชstringHashที่ยอมรับstringความยาวเท่าใดก็ได้และสร้างจำนวนเต็ม 32 บิต

โดยทั่วไปแล้วมันถูกต้องที่จะบอกว่าเอาท์พุทของฟังก์ชั่นแฮชคือแฮ (ที่รู้จักกันว่าค่าแฮชหรือผลรวมแฮช) แต่บางครั้งคนที่อ้างถึงฟังก์ชั่นตัวเองเป็นกัญชา สิ่งนี้ไม่ถูกต้องทางเทคนิค แต่มักจะมองข้ามเนื่องจากเป็นที่เข้าใจกันโดยทั่วไป (ในบริบท) ว่าบุคคลนั้นหมายถึงฟังก์ชันแฮชฟังก์ชันแฮช

การใช้งานทั่วไปของฟังก์ชันแฮชคือการใช้ตารางแฮช ตารางแฮชเป็นโครงสร้างข้อมูลที่เชื่อมโยงค่ากับค่าอื่น ๆ ซึ่งโดยปกติจะเรียกว่าคีย์ ทำได้โดยใช้ฟังก์ชันแฮชบนคีย์เพื่อสร้างค่าแฮชที่มีขนาดคงที่ซึ่งสามารถใช้เพื่อค้นหาข้อมูลที่จัดเก็บได้อย่างรวดเร็ว ฉันจะไม่เข้าไปดูรายละเอียดทั้งหมดเกี่ยวกับวิธีการทำเช่นนั้น แต่ความจริงที่สำคัญคือมันเรียกว่าตารางแฮชเพราะอาศัยฟังก์ชันแฮชเพื่อสร้างค่าแฮช (hash)

นี่คือสิ่งที่เกิดความสับสนบางอย่างเนื่องจากบางคน (อีกครั้งค่อนข้างไม่ถูกต้อง) อ้างถึงตารางแฮชเป็นแฮช ตามที่ระบุไว้ในคำตอบอื่น ๆ บางครั้งการใช้ภาษาที่กำหนดของตารางแฮชหมายถึงตารางแฮชเป็นแฮช (โดยเฉพาะ Perl ทำสิ่งนี้แม้ว่าฉันคาดว่าภาษาอื่นจะทำได้เช่นกัน) ภาษาอื่น ๆ เลือกที่จะอ้างถึงการใช้งานตารางแฮชเป็นพจนานุกรม Python เป็นหนึ่งในภาษาเหล่านี้ แต่เนื่องจากภาษาที่ฝังอยู่ในภาษาเป็นอย่างไรผู้ใช้ Python หลายคนจึงย่อคำศัพท์เป็น 'dict'

ดังนั้นในขณะที่การใช้คำว่าhash ที่ถูกต้องคือการอ้างถึงค่า hash ที่สร้างโดยฟังก์ชัน hashบางครั้งผู้คนก็ใช้คำอย่างไม่เป็นทางการเพื่ออ้างถึงฟังก์ชันhashและตาราง hashดังนั้นจึงสร้างความสับสน


2
ฉันไม่แน่ใจว่ามันถูกต้องจริงๆในการอ้างถึงตารางแฮชหรือฟังก์ชันแฮชเป็น "แฮช" (ดูเหมือนจะไม่เลวร้ายไปกว่าตัวอย่างเช่นการใช้ "วอชิงตัน" เพื่อหมายถึง "สหรัฐอเมริกา" เช่นเดียวกับใน " วอชิงตันยินดีต้อนรับแถลงการณ์ของจีนอย่างระมัดระวัง ") แต่ฉันเห็นด้วยว่ามันสับสนและเป็นเรื่องดีที่คุณชัดเจนมากในคำตอบของคุณ
David Richerby

1
@ DavidRicherby อย่างเป็นทางการฉันจะบอกว่างาน "แฮ" ไม่ได้กำหนด "ฟังก์ชั่นแฮช", "ค่าแฮช", "ตารางแฮช" และ "เพื่อแฮชสตริง" ทั้งหมดมีคำจำกัดความทางคณิตศาสตร์ที่แม่นยำ แต่ "แฮช" นั้นไม่ชัดเจน ฉันรู้ว่าคุณหมายถึงอะไรโดย "วอชิงตัน" แต่ประโยคของคุณยังคงสมเหตุสมผลถ้าฉันตีความ "วอชิงตัน" เป็น "จอร์จวอชิงตัน" หรือ "เดนเซลวอชิงตัน" มากกว่า "เมืองวอชิงตัน" ซึ่งเป็นวิธีที่ไม่เป็นทางการ เพื่ออ้างถึงรัฐบาล บรรทัดล่าง: ระวังอย่าให้สับสน "รู้ว่าคุณหมายถึงอะไร" สำหรับคำจำกัดความที่เป็นทางการอย่างเข้มงวด
Mike Ounsworth

@ DavidRicherby นั่นไม่ใช่การเปรียบเทียบที่เทียบเท่ากันจริงๆ ความไม่ถูกต้องเป็นที่ถกเถียงกัน แต่ไม่เป็นทางการ
Pharap

2

ฟังก์ชั่นกัญชาเป็นวงกว้างฟังก์ชั่นใด ๆ ที่ภาพจะมีขนาดเล็กกว่าโดเมน เอาท์พุทของฟังก์ชั่นดังกล่าวf(x)สามารถเรียกว่า "hash of x"

ในด้านวิทยาศาสตร์คอมพิวเตอร์เรามักจะพบกับสองแอปพลิเคชันของฟังก์ชั่นแฮช

สิ่งแรกคือสำหรับโครงสร้างข้อมูลเช่นตารางแฮชที่เราต้องการแมปโดเมนหลัก (เช่นจำนวนเต็ม 32 บิตหรือสตริงความยาวโดยพลการ) ไปยังดัชนีอาร์เรย์ (เช่นจำนวนเต็มระหว่าง 0 ถึง 100) เป้าหมายที่นี่คือเพิ่มประสิทธิภาพของโครงสร้างข้อมูลให้สูงสุด คุณสมบัติของฟังก์ชั่นแฮชที่ต้องการโดยทั่วไปคือความเรียบง่ายและการกระจายเอาต์พุตที่สม่ำเสมอ

Perl เรียกอาเรย์แบบเชื่อมโยงในตัวให้พิมพ์ "hash"ซึ่งดูเหมือนจะเป็นสิ่งที่ทำให้คุณสับสนได้ที่นี่ ฉันไม่รู้ภาษาอื่นที่ทำสิ่งนี้ โครงสร้างข้อมูลอาจถูกมองว่าเป็นฟังก์ชั่นแฮชตัวเดียว (ที่โดเมนคือชุดคีย์ปัจจุบัน) แต่ก็ถูกนำไปใช้เป็นตารางแฮชด้วย

ประการที่สองสำหรับการเข้ารหัส : การตรวจสอบข้อความ, การตรวจสอบรหัสผ่าน / ลายเซ็น ฯลฯ โดเมนโดยทั่วไปจะเป็นสตริงไบต์โดยพลการ ที่นี่เรามีความกังวลเกี่ยวกับความปลอดภัยซึ่งบางครั้งหมายถึงประสิทธิภาพต่ำอย่างจงใจ - ซึ่งคุณสมบัติที่มีประโยชน์คือการชนกันและการต้านทานภาพก่อน


และฉันยังคงคัดค้านประโยคแรกของคุณเพราะเมื่อแฮ็ชรหัสผ่าน 32 ตัวด้วย SHA-512 พื้นที่อินพุตนั้นเล็กกว่าพื้นที่ส่งออกจริง ๆ เมื่อการแฮชการแฮงก์ทำงานร่วมกันโดเมนและช่วงจะเหมือนกัน ขนาดของพื้นที่อินพุตไม่เกี่ยวข้อง คำตอบของ Pharap มีคำจำกัดความที่ถูกต้อง: "ฟังก์ชันแฮชคือฟังก์ชันใด ๆ ที่มีเอาต์พุตที่มีความยาวคงที่" นั่นคือทั้งหมดที่คุณต้องการเงื่อนไขอื่น ๆ ที่คุณกำลังพูดถึงนั้นเป็นนัยจากสิ่งนั้น
Mike Ounsworth

@MikeOunsworth แต่โดเมนของ SHA-512 เป็นสตริงไบนารี่ของความยาวโดยพลการ ฉันคิดว่าฉันสามารถขโมยถ้อยคำ Pharaps ได้ แต่ฉันพยายามทำให้เงื่อนไขชัดเจนเพื่อประโยชน์ของ OP จริง ๆ แล้วฉันไม่แน่ใจว่า "ความยาวคงที่" เป็นสิ่งจำเป็นหรือไม่ได้นิยามอย่างชัดเจน
หยุดทำร้ายโมนิก้า

@OrangeDog Ok แต่ฉันสามารถห่อ SHA-512 ในฟังก์ชั่นที่เรียกว่าMikesHash()ยอมรับความยาว 12 และส่งผ่านไปยัง SHA-512 และส่งคืนผลลัพธ์ ฉันค่อนข้างแน่ใจว่าMikesHash()ยังคงเป็นไปตามคำจำกัดความของฟังก์ชันแฮช (ในทางปฏิบัติคุณถูกต้องฟังก์ชันแฮชที่เราใช้ยอมรับอินพุตที่มีความยาวตามอำเภอใจ แต่ฉันไม่คิดว่าจะมีบางสิ่งบางอย่างที่ล้มเหลวในการใช้ฟังก์ชันแฮชหากไม่มี)
Mike Ounsworth

@ MikeOunsworth เท่า ๆ กันฉันสามารถตัดมันออกให้ถูกตัดออกหรือเพิ่มเบาะถ้า msb เป็นอันใดอันหนึ่ง เอาต์พุตไม่มีความยาวคงที่อีกต่อไป แต่ยังคงเป็นฟังก์ชันแฮชอยู่หรือไม่
หยุดทำร้ายโมนิก้า

@ OrangeDog ฉันจะบอกว่าไม่ จุดของฉันมาตลอดว่าฟังก์ชั่นแฮชต้องแมปกับเอาท์พุทขนาดคงที่ แต่ขนาดอินพุตนั้นไม่เกี่ยวข้อง เราอยู่ห่างไกลจากหัวข้อไปมาก คำตอบของคุณมีสิ่งที่ดีอยู่ในนั้นเพียงแค่ระวังด้วยคำจำกัดความที่เป็นทางการของคุณ ;-)
Mike Ounsworth

0

Great คำถาม Basil Ajith

นี่คือมุมมองของฉันในสิ่งที่แฮชสำหรับบางสิ่งที่ฉันกำลังทำอยู่ในวันนี้

* * * *

ใช้ผลรวมตรวจสอบเพื่อตรวจสอบว่า tarball มีความสอดคล้องกับหน้าดาวน์โหลด

* * * *

ป้อนคำอธิบายรูปภาพที่นี่ ใส่หมวกของผู้ตรวจสอบฉันหมายถึงเสื้อคลุมพ่อมด

แฮชคือค่า / สตริง / อะไรก็ตาม / ฉลากตรวจสอบให้แน่ใจว่ามันเหมือนกันบนเครื่องของคุณกับแหล่งที่มาของการดาวน์โหลด


3
นี่คือการใช้งานเพียงครั้งเดียวสำหรับแฮช มีการใช้งานอื่น ๆ อีกมากมาย
Yuval Filmus

ยินดีต้อนรับสู่เว็บไซต์! การใช้แฮชการเข้ารหัสลับเป็น checksums ครอบคลุมโดยคำตอบที่ยอมรับแล้วดังนั้นคำตอบของคุณจะไม่เพิ่มอะไรใหม่ในขณะที่ใช้พื้นที่หน้าจอมาก
David Richerby

-1

ฉันจะลองเพิ่มบทสรุปสั้น ๆ ของสิ่งที่คนอื่นพูด

ฟังก์ชันแฮช

มีฟังก์ชันพิเศษที่เรียกว่าฟังก์ชันแฮช

"SHA256 เป็นฟังก์ชันแฮชที่รู้จักกันดีที่ปลอดภัยการเข้ารหัส"

แอปพลิเคชั่นหลักสามอย่างคือ * ตารางแฮช, * checksums (การตรวจสอบความสมบูรณ์ของข้อมูลเช่นในฮาร์ดไดรฟ์หรือโปรโตคอล ADSL), * และการเข้ารหัส (รูปแบบต่างๆของการตรวจสอบความถูกต้องของการเข้ารหัสรวมถึง แต่ไม่ จำกัด เพียงลายเซ็นดิจิทัล

ตารางแฮช

ตารางแฮชเป็นโครงสร้างข้อมูลสำหรับการค้นหาที่รวดเร็ว มันใช้ฟังก์ชั่นแฮชภายในจึงชื่อ

"ฐานข้อมูลใช้ตารางแฮชและแผนผังการค้นหาภายในเพื่อเพิ่มความเร็วในการประมวลผลคำขอการค้นหา"

กัญชา

  1. พจนานุกรมชนิดข้อมูลนามธรรม

"Hash" เป็นชื่ออย่างเป็นทางการของพจนานุกรมในตัวในภาษา Perl พวกเขาเป็นตารางแฮชภายในจึงชื่อ รูทีนย่อยนี้ยอมรับค่าแฮชเป็นอาร์กิวเมนต์แรก "#:. วันนี้สามารถใช้กับอาเรย์แบบเชื่อมโยงใด ๆ ไม่จำเป็นต้องเป็นตารางแฮช

  1. ผลลัพธ์ของการใช้ฟังก์ชันแฮชกับอินพุตบางตัว

"MD5 แฮชของภาพ. iso นั้นมีไว้เพื่อตรวจสอบความสมบูรณ์ของไฟล์หลังจากดาวน์โหลด"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.