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

CRYPTOGRAPHY ต้องมีการเขียนโปรแกรมที่เกี่ยวข้อง การเข้ารหัสครอบคลุมเหนือสิ่งอื่นใดการเข้ารหัสการแฮชและลายเซ็นดิจิทัล คำถามเกี่ยวกับการเข้ารหัสที่ไม่เกี่ยวข้องโดยตรงกับการพัฒนาซอฟต์แวร์ควรถามที่ crypto.stackexchange.com

10
คุณใช้ bcrypt สำหรับแฮ็ชรหัสผ่านใน PHP ได้อย่างไร
ทุกครั้งที่ฉันได้ยินคำแนะนำ "ใช้ bcrypt สำหรับเก็บรหัสผ่านใน PHP, กฎ bcrypt" แต่สิ่งที่เป็นbcrypt? PHP ไม่มีฟังก์ชั่นดังกล่าว Wikipedia พูดพล่ามเกี่ยวกับยูทิลิตี้การเข้ารหัสไฟล์และการค้นหาเว็บเพียงแค่แสดงการใช้งานบางอย่างของBlowfishในภาษาต่างๆ ตอนนี้ Blowfish ยังมีอยู่ใน PHP ผ่านmcryptแต่วิธีที่ช่วยในการจัดเก็บรหัสผ่าน? ปักเป้าเป็นเลขศูนย์วัตถุประสงค์ทั่วไปมันทำงานได้สองวิธี หากสามารถเข้ารหัสได้ก็สามารถถอดรหัสได้ รหัสผ่านต้องใช้ฟังก์ชันแฮชแบบทางเดียว คำอธิบายคืออะไร


12
ความแตกต่างพื้นฐานระหว่างอัลกอริทึม Hashing และการเข้ารหัส
ฉันเห็นความสับสนมากมายระหว่างแฮชและอัลกอริธึมการเข้ารหัสและฉันต้องการฟังคำแนะนำจากผู้เชี่ยวชาญเพิ่มเติมเกี่ยวกับ: ควรใช้แฮชเมื่อใดเทียบกับการเข้ารหัส สิ่งที่ทำให้แฮชหรืออัลกอริธึมการเข้ารหัสแตกต่างกัน (จากระดับทฤษฎี / คณิตศาสตร์) คือสิ่งที่ทำให้แฮชไม่สามารถย้อนกลับได้ (โดยไม่ต้องอาศัยต้นรุ้ง) นี่คือคำถาม SO ที่คล้ายกันที่ไม่ได้ลงรายละเอียดมากที่สุดเท่าที่ฉันกำลังมองหา: ความแตกต่างระหว่าง Obfuscation, Hashing และ Encryption คืออะไร ความแตกต่างระหว่างการเข้ารหัสและการแฮช

9
การเข้ารหัสด้วยรหัสผ่าน AES Java 256 บิต
ฉันต้องใช้การเข้ารหัส AES 256 บิต แต่ตัวอย่างทั้งหมดที่ฉันพบออนไลน์ใช้ "KeyGenerator" เพื่อสร้างคีย์ 256 บิต แต่ฉันต้องการใช้รหัสผ่านของฉันเอง ฉันจะสร้างรหัสของตัวเองได้อย่างไร ฉันได้ลองขยายไปถึง 256 บิต แต่แล้วฉันก็พบข้อผิดพลาดที่บอกว่ากุญแจยาวเกินไป ฉันมีการติดตั้ง patch แบบไม่ จำกัด เขตอำนาจศาลดังนั้นจึงไม่ใช่ปัญหา :) กล่าวคือ KeyGenerator มีลักษณะเช่นนี้ ... // Get the KeyGenerator KeyGenerator kgen = KeyGenerator.getInstance("AES"); kgen.init(128); // 192 and 256 bits may not be available // Generate the secret key specs. SecretKey …

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

16
รหัสผ่าน“ การแฮ็ชสองเท่า” นั้นมีความปลอดภัยน้อยกว่าแค่เพียงครั้งเดียวหรือไม่
การแฮชรหัสผ่านสองครั้งก่อนที่จะจัดเก็บข้อมูลมีความปลอดภัยมากกว่าหรือน้อยกว่าเพียงแค่ทำการแฮชรหัสครั้งเดียวหรือไม่? สิ่งที่ฉันกำลังพูดถึงคือการทำสิ่งนี้: $hashed_password = hash(hash($plaintext_password)); แทนที่จะเป็นแค่นี้: $hashed_password = hash($plaintext_password); หากมีความปลอดภัยน้อยกว่าคุณสามารถให้คำอธิบายที่ดี (หรือลิงค์ไปยังหนึ่ง) ได้หรือไม่? ฟังก์ชั่นแฮชใช้เพื่อสร้างความแตกต่างหรือไม่? มันสร้างความแตกต่างหรือไม่ถ้าคุณผสม md5 และ sha1 (ตัวอย่าง) แทนที่จะทำซ้ำฟังก์ชันแฮชเดียวกัน หมายเหตุ 1: เมื่อฉันพูดว่า "การแฮ็กสองครั้ง" ฉันกำลังพูดถึงการแฮชรหัสผ่านสองครั้งเพื่อพยายามทำให้มันถูกบดบังมากขึ้น ฉันไม่ได้พูดเกี่ยวกับเทคนิคในการแก้ไขปัญหาการชนกัน หมายเหตุ 2: ฉันรู้ว่าฉันต้องเพิ่มเกลือแบบสุ่มเพื่อให้ปลอดภัยจริงๆ คำถามคือว่า hashing สองครั้งด้วยอัลกอริทึมเดียวกันช่วยหรือเจ็บกัญชา

10
ชนิดข้อมูลใดที่จะใช้สำหรับฟิลด์รหัสผ่านที่แฮชและความยาวเท่าใด
ฉันไม่แน่ใจว่ารหัสผ่านการแฮชทำงานอย่างไร (จะนำมาใช้ในภายหลัง) แต่ต้องสร้างสคีมาฐานข้อมูลทันที ฉันคิดถึงการ จำกัด รหัสผ่านให้เหลือเพียง 4-20 ตัวอักษร แต่อย่างที่ฉันเข้าใจหลังจากเข้ารหัสสตริงแฮชจะมีความยาวต่างกัน ดังนั้นวิธีการเก็บรหัสผ่านเหล่านี้ในฐานข้อมูล?

24
เป็นไปได้ที่จะถอดรหัส MD5 hashes หรือไม่
มีคนบอกฉันว่าเขาได้เห็นระบบซอฟต์แวร์ที่: ดึงรหัสผ่านที่เข้ารหัส MD5 จากระบบอื่น ถอดรหัสรหัสผ่านที่เข้ารหัสและ เก็บรหัสผ่านในฐานข้อมูลของระบบโดยใช้อัลกอริทึมของระบบ เป็นไปได้ไหม ฉันคิดว่ามันเป็นไปไม่ได้ / เป็นไปได้ที่จะถอดรหัส MD5 แฮช ฉันรู้ว่ามีพจนานุกรม MD5 แต่มีอัลกอริทึมการถอดรหัสจริงหรือไม่

23
ไม่สามารถติดตั้งแพ็คเกจการเข้ารหัส Python ด้วย PIP และ setup.py
เมื่อฉันพยายามติดตั้งแพคเกจการเข้ารหัสสำหรับ Python ผ่านอย่างใดอย่างหนึ่งpip install cryptographyหรือโดยการดาวน์โหลดแพคเกจจากเว็บไซต์ของพวกเขาและทำงานpython setup.pyฉันได้รับข้อผิดพลาดต่อไปนี้: D:\Anaconda\Scripts\pip-script.py run on 02/27/14 16:13:17 Downloading/unpacking cryptography Getting page https://pypi.python.org/simple/cryptography/ URLs to search for versions for cryptography: * https://pypi.python.org/simple/cryptography/ Analyzing links from page https://pypi.python.org/simple/cryptography/ Skipping https://pypi.python.org/packages/cp26/c/cryptography/cryptography-0.2-cp26-none-win32.whl#md5=13e5c4b19520e7dc6f07c6502b3f74e2 (from https://pypi.python.org/simple/cryptography/) because it is not compatible with this Python Skipping https://pypi.python.org/packages/cp26/c/cryptography/cryptography-0.2.1-cp26-none-win32.whl#md5=00e733648ee5cdb9e58876238b1328f8 (from https://pypi.python.org/simple/cryptography/) because it is not …
256 python  cryptography  pip 

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

5
การเข้ารหัสแบบสองทางที่ง่ายที่สุดโดยใช้ PHP
วิธีที่ง่ายที่สุดในการทำการเข้ารหัสแบบสองทางในการติดตั้ง PHP ทั่วไปคืออะไร? ฉันต้องสามารถเข้ารหัสข้อมูลด้วยสตริงคีย์และใช้คีย์เดียวกันเพื่อถอดรหัสที่ส่วนอื่น ๆ การรักษาความปลอดภัยไม่ได้เป็นเรื่องที่น่ากังวลเท่า ๆ กับความสะดวกในการพกพาของรหัสดังนั้นฉันต้องการที่จะทำให้สิ่งต่าง ๆ เรียบง่ายที่สุดเท่าที่จะทำได้ ขณะนี้ฉันกำลังใช้การติดตั้ง RC4 แต่ถ้าฉันสามารถหาบางอย่างที่สนับสนุนได้ฉันคิดว่าฉันสามารถบันทึกรหัสที่ไม่จำเป็นจำนวนมากได้

9
คุณเข้ารหัสและถอดรหัสสตริง PHP ได้อย่างไร
ที่ฉันหมายถึงคือ: Original String + Salt or Key --> Encrypted String Encrypted String + Salt or Key --> Decrypted (Original String) อาจจะชอบ: "hello world!" + "ABCD1234" --> Encrypt --> "2a2ffa8f13220befbe30819047e23b2c" (may be, for e.g) "2a2ffa8f13220befbe30819047e23b2c" --> Decrypt with "ABCD1234" --> "hello world!" ใน PHP คุณจะทำสิ่งนี้ได้อย่างไร พยายามใช้Crypt_Blowfishแต่ไม่ได้ผลสำหรับฉัน

10
รหัสผ่านเกลือช่วยต่อต้านการโจมตีบนโต๊ะสีรุ้งได้อย่างไร?
ฉันมีปัญหาในการเข้าใจวัตถุประสงค์ของเกลือเป็นรหัสผ่าน ฉันเข้าใจว่าการใช้งานหลักคือขัดขวางการโจมตีของตารางสายรุ้ง อย่างไรก็ตามวิธีการที่ฉันใช้ในการดำเนินการนี้ดูเหมือนจะไม่ทำให้ปัญหาหนักขึ้น ฉันเคยเห็นแบบฝึกหัดมากมายที่แนะนำว่าเกลือถูกใช้ดังนี้: $hash = md5($salt.$password) เหตุผลที่แฮชตอนนี้แมปไม่ใช่รหัสผ่านดั้งเดิม แต่เป็นการรวมกันของรหัสผ่านและเกลือ แต่พูด$salt=fooและและ$password=bar $hash=3858f62230ac3c915f300c664312c63fตอนนี้ใครบางคนที่มีตารางสายรุ้งสามารถย้อนแฮชและสร้างอินพุต "foobar" จากนั้นพวกเขาสามารถลองใช้รหัสผ่านทั้งหมด (f, fo, foo, ... oobar, obar, bar, ar, ar) อาจใช้เวลาสองสามมิลลิวินาทีในการรับรหัสผ่าน แต่ไม่มากนัก การใช้งานอื่นที่ฉันเห็นอยู่ในระบบ Linux ของฉัน ใน / etc / shadow รหัสผ่านที่ถูกแฮชจะถูกเก็บไว้พร้อมกับเกลือ ยกตัวอย่างเช่นเกลือของ "foo" และรหัสผ่านของ "บาร์" $1$foo$te5SBM.7C25fFDu6bIRbX1จะสับไปนี้: หากแฮ็กเกอร์สามารถใช้มือของเขากับไฟล์นี้ได้ฉันไม่เห็นว่าจุดประสงค์ของเกลือte5SBM.7C25fFDu6bIRbXคืออะไร ขอบคุณสำหรับทุก ๆ แสงที่สามารถหลั่งออกมาได้ แก้ไข : ขอบคุณสำหรับความช่วยเหลือ เพื่อสรุปสิ่งที่ฉันเข้าใจเกลือทำให้รหัสผ่านที่แฮชมีความซับซ้อนมากขึ้นดังนั้นจึงมีโอกาสน้อยมากที่จะได้อยู่ในตารางรุ้งที่คำนวณไว้ล่วงหน้า สิ่งที่ฉันเข้าใจผิดมาก่อนคือฉันคิดว่ามีตารางรุ้งสำหรับแฮชทั้งหมด


7
ความแตกต่างระหว่าง java.util.Random และ java.security.SecureRandom
ทีมของฉันได้มอบรหัสฝั่งเซิร์ฟเวอร์ (ใน Java) ที่สร้างโทเค็นแบบสุ่มและฉันมีคำถามเกี่ยวกับสิ่งเดียวกัน - วัตถุประสงค์ของโทเค็นเหล่านี้มีความอ่อนไหวพอสมควร - ใช้สำหรับรหัสเซสชันลิงก์การตั้งรหัสผ่านเป็นต้นดังนั้นพวกเขาจึงจำเป็นต้องมีการสุ่มเข้ารหัสเพื่อหลีกเลี่ยงใครบางคนที่เดาพวกเขา โทเค็นคือ "ยาว" ดังนั้นจึงมีความยาว 64 บิต รหัสปัจจุบันใช้java.util.Randomคลาสเพื่อสร้างโทเค็นเหล่านี้ เอกสารสำหรับการjava.util.Randomระบุอย่างชัดเจนต่อไปนี้: อินสแตนซ์ของ java.util.Random ไม่ปลอดภัยแบบเข้ารหัส พิจารณาใช้ SecureRandom แทนเพื่อให้เครื่องสร้างตัวเลขสุ่มหลอกเข้ารหัสลับปลอดภัยสำหรับใช้โดยแอปพลิเคชันที่มีความปลอดภัย อย่างไรก็ตามวิธีการที่ใช้รหัสในปัจจุบันjava.util.Randomคือ - มันทำให้คลาสเป็นอินสแตนซ์java.security.SecureRandomแล้วใช้SecureRandom.nextLong()วิธีการรับเมล็ดที่ใช้สำหรับอินสแตนซ์java.util.Randomชั้น จากนั้นจะใช้java.util.Random.nextLong()วิธีการสร้างโทเค็น ดังนั้นคำถามของฉันตอนนี้ - มันยังไม่ปลอดภัยหรือไม่เมื่อjava.util.Randomใช้เมล็ดjava.security.SecureRandom? ฉันจำเป็นต้องแก้ไขรหัสเพื่อใช้เป็นjava.security.SecureRandomเอกสิทธิ์ในการสร้างโทเค็นหรือไม่ ในปัจจุบันเมล็ดรหัสนั้นเป็นRandomครั้งเดียวเมื่อเริ่มต้น

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