คำถามติดแท็ก hashing

ฟังก์ชันแฮชคืออัลกอริทึมใด ๆ ที่แมปข้อมูลที่มีความยาวโดยพลการกับข้อมูลที่มีความยาวคงที่ ค่าที่ส่งกลับโดยฟังก์ชันแฮชเรียกว่าค่าแฮชโค้ดแฮชผลรวมแฮชเช็คซัมหรือแฮช จาก Wikipedia: http://en.wikipedia.org/wiki/Hash_function

11
อัลกอริทึมการแปลงแป้นพิมพ์แบบใดดีที่สุดสำหรับความเป็นเอกลักษณ์และความเร็ว
อัลกอริทึมการแปลงแป้นพิมพ์แบบใดดีที่สุดสำหรับความเป็นเอกลักษณ์และความเร็ว ตัวอย่างการใช้ (ดี) รวมถึงพจนานุกรมแฮช ฉันรู้ว่ามีสิ่งที่ต้องการSHA-256และดังกล่าว แต่ขั้นตอนวิธีการเหล่านี้จะถูกออกแบบมาให้เป็นที่เชื่อถือได้ซึ่งมักจะหมายความว่าพวกเขาจะช้ากว่าอัลกอริทึมที่น้อยที่ไม่ซ้ำกัน ฉันต้องการอัลกอริทึมแฮชที่ออกแบบมาให้เร็ว แต่ก็ยังคงมีเอกลักษณ์ที่ไม่เหมือนใคร
1388 algorithms  hashing 

2
เหตุใดสตริงที่แฮชและการเข้ารหัสจำนวนมากจึงลงท้ายด้วยเครื่องหมายเท่ากับ
ฉันทำงานใน C # และ MSSQL และตามที่คุณคาดหวังว่าฉันเก็บรหัสผ่านของฉันเค็มและแฮช เมื่อฉันดูแฮชที่เก็บไว้ในคอลัมน์ nvarchar (ตัวอย่างเช่นผู้ให้บริการสมาชิก aspnet out box) ฉันสงสัยอยู่เสมอว่าทำไมค่าของเกลือและแฮชที่สร้างขึ้นดูเหมือนจะจบลงด้วยสัญญาณหนึ่งหรือสองเท่ากับ ฉันเคยเห็นสิ่งที่คล้ายกันขณะทำงานกับอัลกอริธึมการเข้ารหัสนี่เป็นเหตุบังเอิญหรือมีเหตุผลหรือไม่

8
ทำไมเกือบจะไม่มีหน้าแฮรหัสผ่านในไคลเอนต์ก่อนที่จะส่ง (และ hashing พวกเขาอีกครั้งบนเซิร์ฟเวอร์) เพื่อ“ ป้องกัน” จากการใช้รหัสผ่านซ้ำ?
มีเว็บไซต์จำนวนมากบนอินเทอร์เน็ตที่ต้องการข้อมูลการเข้าสู่ระบบและวิธีเดียวที่จะป้องกันการใช้รหัสผ่านซ้ำคือ "สัญญา" ว่ารหัสผ่านจะถูกแฮชบนเซิร์ฟเวอร์ซึ่งไม่ได้เป็นจริงเสมอไป ดังนั้นฉันจึงสงสัยว่าการสร้างหน้าเว็บที่แฮชรหัสผ่านในคอมพิวเตอร์ไคลเอนต์ (ด้วย Javascript) นั้นมีความยากขนาดไหนก่อนส่งไปยังเซิร์ฟเวอร์ซึ่งจะถูกแฮชอีกครั้ง ในทางทฤษฎีสิ่งนี้ไม่ได้ให้ความปลอดภัยเป็นพิเศษ แต่ในทางปฏิบัติสิ่งนี้สามารถใช้เพื่อป้องกัน "ไซต์หลอกลวง" ที่ไม่ใช้รหัสผ่านของคุณในเซิร์ฟเวอร์

4
ความแตกต่างระหว่างแฮชกับพจนานุกรมคืออะไร
ความแตกต่างระหว่างHashและDictionaryคืออะไร? มาจากพื้นหลังของสคริปต์ฉันรู้สึกว่ามันคล้ายกัน แต่ฉันต้องการค้นหาความแตกต่างที่แน่นอน Googling ไม่ได้ช่วยฉันเท่าไหร่

6
ปลอดภัยกว่าหรือไม่ที่จะใช้รหัสผ่านหลายครั้ง?
ฉันได้อ่านสองสามครั้งว่าเมื่อเก็บรหัสผ่านมันเป็นวิธีที่ดีในการ 'double hash' สตริง (เช่นด้วย md5 จากนั้น sha1 ทั้งคู่ด้วยเกลืออย่างเห็นได้ชัด) ฉันเดาคำถามแรกคือ "ถูกจริงหรือไม่" ถ้าไม่ใช่โปรดเลิกสนใจคำถามนี้ :) เหตุผลที่ฉันถามคือบนหน้าของมันฉันจะบอกว่ามันสมเหตุสมผล อย่างไรก็ตามเมื่อฉันคิดถึงมันทุกครั้งที่แฮชถูกทำใหม่ (อาจมีบางสิ่งเพิ่มเข้าไป) ทั้งหมดที่ฉันเห็นคือมีการลดขอบเขตบนของ 'เอกลักษณ์' สุดท้าย ... ที่เกี่ยวข้องกับ อินพุตเริ่มต้น ขอผมใช้อีกวิธี: เรามีจำนวน x ของสตริงที่เมื่อแฮชจะลดลงเป็น y ที่เป็นไปได้ กล่าวคือมีการชนในเซตแรก ตอนนี้มาจากชุดที่สองถึงชุดที่สามมันเป็นไปไม่ได้หรือที่สิ่งเดียวกันจะเกิดขึ้น (เช่นการชนในชุดของสตริง 'y' ที่เป็นไปได้ทั้งหมดที่ส่งผลให้แฮชเดียวกันในชุดที่สาม) ในหัวของฉันสิ่งที่ฉันเห็นคือ 'ช่องทาง' สำหรับการเรียกใช้ฟังก์ชันแฮชแต่ละครั้ง 'ช่องทาง' ชุดความเป็นไปได้ที่ไม่มีที่สิ้นสุดในชุด จำกัด และอื่น ๆ แต่เห็นได้ชัดว่าการโทรแต่ละครั้งทำงานบนขอบเขต จำกัด ก่อน ตั้งไม่ใหญ่กว่าอินพุต อาจเป็นตัวอย่างที่จะอธิบายเสียงคร่ำครวญของฉันได้ไหม ใช้ 'hash_function_a' ที่จะให้ 'a' …
43 hashing 

3
ฉันพยายามที่จะเข้าใจตารางแฮช - บางคนสามารถอธิบายให้ฉัน - อย่างชัดเจน?
ฉันต้องการเข้าใจการใช้งานที่ถูกต้องและการนำไปใช้งานของตารางแฮชใน php (ขออภัย) ฉันอ่านบางที่โปรแกรมเมอร์ที่มีประสบการณ์สร้างตารางแฮชแล้วทำซ้ำผ่านมัน ตอนนี้ฉันเข้าใจว่าทำไมมันถึงผิด แต่ฉันก็ยังไม่มีความรู้เพียงพอที่จะรู้ว่าความเข้าใจของฉันถูกต้องหรือไม่ (ถ้าคุณรู้ว่าฉันหมายถึงอะไร) ดังนั้นใครบางคนสามารถอธิบายให้ฉันรู้วิธีการใช้ตารางแฮชใน php (สมมุติว่าเป็นอาเรย์แบบเชื่อมโยง) และที่สำคัญกว่านั้นคือวิธีเข้าถึงค่า 'ด้วยแฮช' และสิ่งที่จริงหมายถึงอะไร
25 php  hashing 

4
เหตุใด Git .git / objects / โฟลเดอร์จึงถูกแบ่งย่อยในหลาย ๆ โฟลเดอร์ของ SHA-prefix
Git เก็บวัตถุ (Blobs, trees) ไว้ใน.git/objects/โฟลเดอร์ แต่ละวัตถุสามารถอ้างอิงได้โดยแฮช SHA1 ที่คำนวณจากเนื้อหาของวัตถุ อย่างไรก็ตามวัตถุจะไม่ถูกเก็บไว้ใน.git/objects/โฟลเดอร์โดยตรง แต่ละวัตถุจะถูกเก็บไว้ในโฟลเดอร์ที่ขึ้นต้นด้วยคำนำหน้าของแฮช SHA1 ดังนั้นวัตถุที่มีแฮชb7e23ec29af22b0b4e41da31e868d57226121c84จะถูกเก็บไว้ที่.git/objects/b7/e23ec29af22b0b4e41da31e868d57226121c84 เหตุใด Git จึงแบ่งการจัดเก็บวัตถุด้วยวิธีนี้ ทรัพยากรที่ฉันสามารถหาเช่นหน้า internals Git ของใน Git-SCM, เท่านั้นอธิบายวิธีการที่ไม่ว่าทำไม

6
อัลกอริทึมการแฮชที่“ ปลอดภัย” คืออะไร
หลังจากอ่านคำถามที่น่าสนใจนี้ฉันรู้สึกว่าฉันมีความคิดที่ดีว่าอัลกอริทึมการแปลงแป้นพิมพ์ที่ไม่ปลอดภัยที่ฉันใช้ถ้าฉันต้องการ แต่ฉันไม่รู้ว่าทำไมฉันจึงอาจใช้อัลกอริทึมที่ปลอดภัยแทน ดังนั้นความแตกต่างคืออะไร? ผลลัพธ์ไม่ใช่แค่ตัวเลขสุ่มที่แสดงถึงสิ่งที่ถูกแฮชหรือไม่ อะไรทำให้อัลกอริทึมการแปลงแป้นพิมพ์มีความปลอดภัย
19 security  hashing 

6
วิธีใช้การแฮชแบบลอยด้วยความเท่าเทียมกันโดยประมาณ
สมมติว่าเรามีคลาส Python ดังต่อไปนี้ (ปัญหามีอยู่ใน Java เช่นเดียวกับequalsและhashCode) class Temperature: def __init__(self, degrees): self.degrees = degrees ที่degreesเป็นอุณหภูมิเคลวินเป็นลอยที่ ตอนนี้ฉันต้องการที่จะใช้การทดสอบความเท่าเทียมกันและ hashing Temperatureในทางที่ เปรียบเทียบลอยขึ้นกับความแตกต่าง epsilon แทนการทดสอบความเท่าเทียมกันโดยตรง และได้รับเกียรตินิยมสัญญาว่าหมายถึงa == bhash(a) == hash(b) def __eq__(self, other): return abs(self.degrees - other.degrees) < EPSILON def __hash__(self): return # What goes here? เอกสาร Python พูดถึงตัวเลขการแฮชเล็กน้อยเพื่อให้แน่ใจว่าhash(2) == hash(2.0)นี่ไม่ใช่ปัญหาเดียวกัน ฉันยังอยู่ในเส้นทางที่ถูกต้องหรือไม่? และถ้าเป็นเช่นนั้นวิธีมาตรฐานในการใช้การแฮชในสถานการณ์นี้คืออะไร? ปรับปรุง …

6
วิธีการรับรองผู้ใช้ว่าเว็บไซต์และรหัสผ่านมีความปลอดภัย [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ในเว็บไซต์ที่เชื่อถือได้ฉันจะเห็นการอ้างสิทธิ์เช่น "ข้อมูลทั้งหมดได้รับการเข้ารหัส" หรือ "รหัสผ่านทั้งหมดจะถูกเข้ารหัสโดยใช้การเข้ารหัสแบบ 128 บิต" และอื่น ๆ อย่างไรก็ตามฉันไม่เคยเจอการอ้างสิทธิ์เช่น "รหัสผ่านทั้งหมดถูกแฮช" ในเว็บไซต์ของฉันฉันจะเก็บรหัสผ่านผู้ใช้ทั้งหมดในฐานข้อมูลหลังจากใช้ SHA-512 (ส่วนใหญ่) hashing ด้วยเกลือแบบสุ่ม ฉันต้องการเพิ่ม snipet ที่ทำให้ผู้ใช้มั่นใจว่ารหัสผ่านของพวกเขาปลอดภัยดังนั้นพวกเขาจะไม่ถูกขัดขวางจากการใช้เว็บไซต์ของฉันเพราะมันต้องใช้รหัสผ่าน ฉันต้องการให้ผู้ใช้รู้สึกปลอดภัย แต่ฉันไม่คิดว่าทุกคนรู้ว่าการแฮ็กคืออะไร คำถามของฉัน: การส่งข้อความโดยบอกว่า "รหัสผ่านทั้งหมดมีการเข้ารหัสและปลอดภัย" เนื่องจากฉันไม่คิดว่าผู้ใช้โดยเฉลี่ยจะรู้ว่าความแตกต่างระหว่างการแฮชและการเข้ารหัสคืออะไรและมีแนวโน้มที่จะรู้สึกปลอดภัยมากขึ้นเพราะพวกเขาเห็น คำว่า "เข้ารหัส" ที่สะดวกสบายคืออะไร? หรือมีข้อความอื่นที่ฉันควรให้? ในหมายเหตุด้านบนฉันยังใหม่กับการเข้ารหัสและการแฮ็กรหัสผ่านและฉันสงสัยว่าสิ่งนี้จะปลอดภัยพอสำหรับตอนนี้เมื่อฉันเปิดไซต์หรือไม่ ฉันไม่ต้องการบอกผู้ใช้ว่าปลอดภัยหากไม่เป็นเช่นนั้น ข้อมูลใด ๆ ที่จะได้รับการชื่นชมอย่างมาก ขอบคุณ

3
ฟิลเตอร์บลูมที่ปรับขนาดได้ทำงานอย่างไร
ฉันอ่านค่าตัวกรองบลูมที่ปรับขนาดได้และไม่สามารถเข้าใจได้ว่าแต่ละครั้งที่ตัวกรองบลูมที่เป็นองค์ประกอบเติมเต็มตัวกรองบลูมใหม่ที่มีขนาดใหญ่ขึ้นจะถูกเพิ่มเข้าไป องค์ประกอบที่สนับสนุนชุดบิตในตัวกรองที่สร้างขึ้นครั้งแรกไม่สามารถค้นหาว่ามีอยู่หรือไม่ บางทีฉันอาจเข้าใจผิดในเรื่องนี้? ฉันเข้าใจตัวกรองบลูมพื้นฐาน อย่างไรก็ตามฉันไม่สามารถคลุมศีรษะด้วยฟิลเตอร์บลูมแบบไดนามิก

6
ค่าแฮชเกลือควรมาจากที่ใด
เมื่อเพิ่มค่าเกลือลงในค่าแฮชสำหรับรหัสผ่านที่ไม่สามารถจัดเก็บในรูปแบบข้อความธรรมดาได้ดีที่สุดวิธีที่จะได้รับค่าเกลือมาจากไหน? สำหรับบริบทให้เราสมมติว่านี่เป็นรหัสผ่านในการเข้าสู่ระบบหน้าเว็บ
12 security  hashing 

5
หากรหัสผ่านถูกเก็บไว้แฮชคอมพิวเตอร์จะทราบได้อย่างไรว่ารหัสผ่านของคุณคล้ายกับรหัสผ่านล่าสุดหากคุณลองรีเซ็ตรหัสผ่าน
หากรหัสผ่านถูกเก็บไว้แฮชคอมพิวเตอร์จะทราบได้อย่างไรว่ารหัสผ่านของคุณคล้ายกับรหัสผ่านล่าสุดหากคุณลองรีเซ็ตรหัสผ่าน รหัสผ่านทั้งสองจะไม่แตกต่างกันอย่างสิ้นเชิงเนื่องจากมีการแฮชและไม่สามารถย้อนกลับได้?

3
เป็นไปได้หรือไม่ที่จะใช้ตารางแฮชแบบกระจายโดยไม่ต้องใช้ตัวดำเนินการ%
ฉันต้องการใช้ตารางแฮชที่กระจายอย่างรวดเร็วใน C # ฉันมีปัญหาในการเลือกฟังก์ชั่นแฮช จำกัด ของฉันที่ใช้รหัสแฮชตามอำเภอใจและ "จำกัด " มันเพื่อให้สามารถใช้สร้างดัชนีถังได้ มีสองตัวเลือกที่ฉันเห็น: ในมือข้างหนึ่งคุณสามารถตรวจสอบให้แน่ใจว่าถังของคุณมีองค์ประกอบจำนวนมากเสมอและเพื่อ จำกัด การแฮชคุณเพียงแค่ปรับค่าตามจำนวนถัง นี่คือความจริงแล้วพจนานุกรมของ. NET ทำอะไร ปัญหาของวิธีนี้คือการใช้% ช้ามากเมื่อเทียบกับการปฏิบัติการอื่น ถ้าคุณมองไปที่ตารางการเรียนการสอน Agner ตัดหมอก , idiv(ซึ่งเป็นรหัสการชุมนุมที่ได้รับการสร้างขึ้นสำหรับ%) มีการเรียนการสอนแฝง ~ 25 รอบสำหรับโปรเซสเซอร์ Intel ใหม่ เปรียบเทียบนี้เพื่อรอบ 3 mulหรือ 1 สำหรับ Ops บิตเช่นand, หรือorxor ในทางกลับกันคุณสามารถมีจำนวนของถังเสมอได้ 2 คุณยังจะต้องคำนวณโมดูลัสของแฮชดังนั้นคุณจึงไม่ได้พยายามทำดัชนีนอกอาร์เรย์ แต่คราวนี้มันจะมีราคาไม่แพง . เนื่องจากกำลังของ 2 % Nเป็นเพียง& (N - 1)ข้อ จำกัด …

2
เป็นไปได้หรือไม่ที่จะเพิ่มความเร็วตารางแฮชโดยใช้แผนผังการค้นหาแบบไบนารีสำหรับการโยงแบบแยกกัน
ฉันต้องการใช้ตารางแฮชโดยใช้ Binary Search Trees เพื่อลดความซับซ้อนในการค้นหาในกระบวนการแยกการเชื่อมโยงจาก O (n) (โดยใช้รายการที่เชื่อมโยง) ถึง O (log n) (โดยใช้ BST) สามารถทำได้และถ้าใช่แล้วได้อย่างไร มันจะง่ายกว่าที่จะเข้าใจว่าการแก้ปัญหาเป็นขั้นตอนการดำเนินการตามตรรกะ ฉันต้องการลดเวลาการค้นหาใน hashtable (บิลด์โดยใช้การโยงแบบแยก) แต่ในเวลาเดียวกันฉันไม่ต้องการเพิ่มเวลาการแทรก สำหรับโครงการของฉันฉันไม่สามารถเปลี่ยนฟังก์ชันแฮชเพื่อลดการชน แต่เนื่องจากความสามารถในการขยายขนาดการชนจึงเกิดขึ้น ฉันพยายามหางานทำเพื่อที่ฉันจะได้ทำงานกับการเข้าถึงที่ดีที่สุดและแทรกเวลาในกรณีที่เกิดการชน ... คือการจัดการสถานะปัจจุบันของสิ่งต่าง ๆ มากกว่าที่จะปรับโครงสร้างอัลกอริทึมทั้งหมด หากไม่ได้เลื่อนออกไปจะต้องปรับโครงสร้าง ดังนั้นความคิดใด ๆ

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