สารบัญ:

ซอฟต์แวร์เข้ารหัส/ถอดรหัสความปลอดภัย Python: 3 ขั้นตอน
ซอฟต์แวร์เข้ารหัส/ถอดรหัสความปลอดภัย Python: 3 ขั้นตอน

วีดีโอ: ซอฟต์แวร์เข้ารหัส/ถอดรหัสความปลอดภัย Python: 3 ขั้นตอน

วีดีโอ: ซอฟต์แวร์เข้ารหัส/ถอดรหัสความปลอดภัย Python: 3 ขั้นตอน
วีดีโอ: Python เข้า/ถอด รหัสไฟล์ Encrypt/Decrypt ด้วย Cryptography 2024, พฤศจิกายน
Anonim
ซอฟต์แวร์เข้ารหัส/ถอดรหัสความปลอดภัย Python
ซอฟต์แวร์เข้ารหัส/ถอดรหัสความปลอดภัย Python
ซอฟต์แวร์เข้ารหัส/ถอดรหัสความปลอดภัย Python
ซอฟต์แวร์เข้ารหัส/ถอดรหัสความปลอดภัย Python

ในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นว่าด้วย Python ง่าย ๆ คุณสามารถรักษาไฟล์ของคุณให้ปลอดภัยโดยใช้ AES มาตรฐานอุตสาหกรรมได้อย่างไร

ความต้องการ:

- หลาม 3.7

- ห้องสมุด PyAesCrypt

- ห้องสมุดแฮชลิบ

หากคุณไม่มีไลบรารีเหล่านี้ คุณสามารถติดตั้งได้ง่ายๆ โดยพิมพ์:

pip3 ติดตั้ง hashlib

pip3 ติดตั้ง PyAesCrypt

ในเทอร์มินัล (หรือ CMD)

คุณควรมีสิ่งเหล่านี้อยู่แล้ว:

- ห้องสมุดสุ่ม

- ระบบปฏิบัติการห้องสมุด

- ห้องสมุดระบบ

ฉันใช้ OS X แต่ไม่ควรมีความสำคัญมากเกินไป ยกเว้นทิศทางของเครื่องหมายทับในเส้นทางของไฟล์ (OS X: /, Windows: )

โปรดทราบ: เนื่องจากความผิดพลาดบางประการ การเยื้องในโค้ดจึงไม่แสดงขึ้นด้วยเหตุผลบางประการ ดังนั้นโค้ดที่แสดงจะไม่มีการเยื้อง แต่มีอยู่ในไฟล์ Python ที่ฉันแนบในตอนท้ายและในรูปภาพที่แนบมา อย่าใช้รหัสโดยตรงจากข้อความที่แสดง เพราะรหัสจะไม่ทำงานเนื่องจากไม่มีการเยื้อง

หากคุณได้ติดตั้งการพึ่งพาทั้งหมด ไปที่ขั้นตอนที่ 1

ขั้นตอนที่ 1: การเขียนไฟล์ติดตั้ง

การเขียนไฟล์ติดตั้ง
การเขียนไฟล์ติดตั้ง
การเขียนไฟล์ติดตั้ง
การเขียนไฟล์ติดตั้ง
การเขียนไฟล์ติดตั้ง
การเขียนไฟล์ติดตั้ง
การเขียนไฟล์ติดตั้ง
การเขียนไฟล์ติดตั้ง

ปัจจัยหนึ่งที่ทำให้สิ่งนี้ปลอดภัยมากคือการใช้แฮชเพื่อตรวจสอบรหัสผ่าน ไฟล์ติดตั้ง (ฉันกำลังเรียก setupsafe.py ของฉัน) กำลังจะไปที่:

- สร้างโฟลเดอร์และไฟล์จำลองสำหรับรหัสผ่าน

- ตั้งรหัสผ่าน

- ตั้งค่าหมายเลขไฟล์

- แฮชรหัสผ่าน

ก่อนอื่น เราจะนำเข้าการพึ่งพาของเรา:

จากการนำเข้า sys *

นำเข้าระบบปฏิบัติการ

นำเข้าสุ่ม

นำเข้า hashlib

ต่อไปเราจะสร้างโฟลเดอร์เพื่อเก็บแฮชรหัสผ่านและไฟล์จำลอง:

ลอง: ถ้าไม่ใช่ os.path.exists('desktop/safesetup'):

os.mkdir('เดสก์ท็อป/safesetup/')

ยกเว้น OSError:

print("เกิดข้อผิดพลาดในการสร้างโฟลเดอร์")

รหัสนี้จะสร้างโฟลเดอร์ชื่อ safesetup (เว้นแต่จะมีอยู่แล้ว)

หลังจากนี้ เราจะตั้งรหัสผ่าน และสร้างตัวเลขสุ่มระหว่าง 1 ถึง 100 เพื่อนำทางไปยังไฟล์จำลอง:

รหัสผ่านทั่วโลก = argv[1].encode('utf-8')

n = random.randint(1, 101)

ตอนนี้เรามีรหัสผ่านและหมายเลขไฟล์แล้ว เราจะสร้างไฟล์จำลอง 99 ไฟล์ภายใน safesetup และไฟล์จริงหนึ่งไฟล์จะมีแฮชรหัสผ่านของเรา:

สำหรับ x ในช่วง(101): ถ้า(x != n):

f = open(("เดสก์ท็อป/safesetup/"+str(x)), "w+")

f.close()

อื่น:

รหัสผ่าน = hashlib.sha256(รหัสผ่าน).hexdigest()

f = open(("เดสก์ท็อป/safesetup/"+str(x)), "w+")

f.write (รหัสผ่าน)

f.close()

พิมพ์ (n)

ไฟล์จริงเรียกว่าจำนวนเต็ม n อะไรก็ตาม ไฟล์นี้มีรหัสผ่านของเรา หลังจากที่ถูกแฮชโดยใช้อัลกอริธึม sha256 (อัลกอริธึมแฮชนี้ใช้กันอย่างแพร่หลายในสกุลเงินดิจิตอล โดยเฉพาะ Bitcoin)

จำไว้ว่า n คืออะไร (จะถูกพิมพ์ในคอนโซล) เนื่องจากมันสำคัญพอๆ กับรหัสผ่าน

นั่นคือทั้งหมดที่เราต้องการสำหรับโปรแกรมติดตั้งของเรา ดังนั้นตอนนี้เราจะย้ายไปที่โปรแกรมเข้ารหัส/ถอดรหัส

ขั้นตอนที่ 2: ไฟล์การเข้ารหัส/ถอดรหัส

ไฟล์การเข้ารหัส/ถอดรหัส
ไฟล์การเข้ารหัส/ถอดรหัส
ไฟล์การเข้ารหัส/ถอดรหัส
ไฟล์การเข้ารหัส/ถอดรหัส
ไฟล์การเข้ารหัส/ถอดรหัส
ไฟล์การเข้ารหัส/ถอดรหัส

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

ประการแรก การพึ่งพาอาศัยกัน:

จากการนำเข้า sys *import os

นำเข้า pyAesCrypt

นำเข้า hashlib

ถัดไป การแฮชของรหัสผ่านที่ป้อน:

รหัสผ่าน = argv[1].encode('utf-8')รหัสผ่าน = hashlib.sha256(รหัสผ่าน).hexdigest()

สุดท้าย การดึงรหัสผ่านที่แฮช:

file_key = str(argv[2])hash = open(("desktop/safesetup/" + file_key), ("r+")).read()

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

if(password == hash): print("รหัสผ่านที่ยอมรับ")

ขนาดบัฟเฟอร์ = 64 * 1024

operation = str(input("คุณกำลังดึงหรือเข้ารหัสไฟล์หรือไม่ (r หรือ e) "))

ถ้า (การดำเนินการ == 'r'):

file_name = str(input("ไฟล์ที่จะดึง: "))

pyAesCrypt.decryptFile((file_name + ".aes"), file_name, รหัสผ่าน, ขนาดบัฟเฟอร์)

os.remove((ชื่อไฟล์ + ".aes"))

elif(การดำเนินการ == 'e'):

file_name = str(input("ไฟล์ที่จะเข้ารหัส: "))

pyAesCrypt.encryptFile(file_name, (file_name + ".aes"), รหัสผ่าน, ขนาดบัฟเฟอร์)

os.remove (ชื่อไฟล์)

อื่น:

พิมพ์ ("ข้อผิดพลาด: ป้อนข้อมูลไม่ถูกต้อง")

อื่น:

พิมพ์ ("การเข้าถึงถูกปฏิเสธ")

คำสั่ง if แรกจะกำหนดว่ารหัสผ่านที่แฮชตรงกันหรือไม่ หากเป็นเช่นนั้น ระบบจะถามว่าคุณต้องการเข้ารหัสไฟล์หรือเรียกไฟล์ที่เข้ารหัสหรือไม่ ขึ้นอยู่กับอินพุตของคุณ มันจะเข้ารหัสหรือถอดรหัสไฟล์ที่ให้มา เมื่อได้รับแจ้งให้ระบุชื่อไฟล์ ตรวจสอบให้แน่ใจว่าได้ระบุพาธเว้นแต่ไฟล์จะอยู่ในไดเร็กทอรีเดียวกันกับโปรแกรม python โปรแกรมจะลบไฟล์ในสถานะก่อนหน้า แทนที่ด้วยไฟล์.aes ที่เข้ารหัส หรือถอดรหัสและแทนที่ด้วยไฟล์ต้นฉบับ

ในอนาคต ฉันอาจอัปเดตสิ่งนี้เพื่อรวมการจดจำใบหน้าโดยใช้ไลบรารี Python OpenCV แต่สำหรับตอนนี้ รหัสผ่านจะต้องเพียงพอ

ขั้นตอนที่ 3: การทำงานของไฟล์

เมื่อต้องการเรียกใช้ไฟล์ติดตั้ง ให้ทำตามขั้นตอนเหล่านี้:

1. พิมพ์เทอร์มินัล:

รหัสผ่านไดเรกทอรี python3/setupname.py (แทนที่ไดเรกทอรี ชื่อการตั้งค่า และรหัสผ่านด้วยค่าที่เกี่ยวข้อง)

2. เทอร์มินัลจะส่งออกหมายเลขไฟล์ของคุณ เก็บนี่ไว้.

ในการรันโปรแกรมเข้ารหัส/ถอดรหัส ให้ทำตามขั้นตอนเหล่านี้:

1. พิมพ์เทอร์มินัล:

python3 directory/filename.py password filenumber (แทนที่ไดเร็กทอรี ชื่อไฟล์ รหัสผ่าน และหมายเลขไฟล์ด้วยค่าตามลำดับ)

2. เทอร์มินัลจะยอมรับหรือปฏิเสธรหัสผ่านของคุณ หากถูกปฏิเสธ ให้ลองอีกครั้งและตรวจสอบว่าคุณพิมพ์ค่าที่ถูกต้อง เมื่อได้รับสิทธิ์ในการเข้าถึงแล้ว เทอร์มินัลจะถามคุณว่าคุณต้องการเข้ารหัสไฟล์หรือเรียกค้นไฟล์หรือไม่ หากต้องการเข้ารหัสไฟล์ ให้พิมพ์ e และหากต้องการดึงไฟล์ที่เข้ารหัส ให้พิมพ์ r

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

4. จากนั้นโปรแกรมจะเข้ารหัสหรือถอดรหัสไฟล์ที่ให้มา และลบไฟล์ในสถานะก่อนหน้า (เก็บไฟล์ที่เข้ารหัสหรือถอดรหัสไว้)

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

แนะนำ: