Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

สร้างตัวเลขสุ่มที่ปลอดภัยสำหรับการจัดการความลับโดยใช้ Python


ในการสร้างตัวเลขสุ่มที่ปลอดภัยในการเข้ารหัส เราสามารถใช้ ความลับ โมดูลในหลาม โมดูลนี้มีประโยชน์ในการสร้างรหัสผ่านที่ปลอดภัย การตรวจสอบบัญชี โทเค็นความปลอดภัย หรือความลับที่เกี่ยวข้องบางอย่าง

ในการใช้คลาสและโมดูลของโมดูล secrets เราควรนำเข้าโมดูลนั้นในโค้ดของเรา

import secrets

สุ่มตัวเลข

ความลับ โมดูลใช้เพื่อเข้าถึงแหล่งสุ่มที่ปลอดภัย ที่ให้บริการโดยระบบปฏิบัติการ

คลาสและฟังก์ชันที่เกี่ยวข้องกับตัวเลขสุ่มของโมดูลความลับ -

ความลับของคลาส.SystemRandom

เป็นคลาสที่สร้างตัวเลขสุ่ม โดยใช้แหล่งข้อมูลคุณภาพสูงสุดบางแหล่ง แหล่งที่มาเหล่านี้มาจากระบบปฏิบัติการ

วิธี secrets.choice(ลำดับ)

วิธีนี้ใช้เพื่อเลือกองค์ประกอบจากลำดับที่ไม่ว่างแบบสุ่ม

เมธอด secrets.randbelow(n)

วิธีนี้ใช้สำหรับเลือกค่าจำนวนเต็มหนึ่งค่าจากช่วง 0 ถึง n (พิเศษ)

เมธอด secrets.randbits(k)

วิธีนี้ใช้เพื่อคืนค่าจำนวนเต็มด้วยจำนวนบิตสุ่มจำนวน k

การสร้างโทเค็น

ความลับ โมดูลสามารถสร้างโทเค็นที่ปลอดภัยได้ โทเค็นประเภทนี้มีประโยชน์ในการสร้างการรีเซ็ตรหัสผ่าน URL ที่ซับซ้อน ฯลฯ

วิธีการบางอย่างที่เกี่ยวข้องกับการสร้างโทเค็นคือ -

เมธอด secrets.token_bytes([nbytes=None])

เมธอดนี้ส่งคืนสตริงไบต์สุ่มที่มี nbytes เพื่อสร้างโทเค็นที่ปลอดภัย เมื่อไม่ได้กำหนดค่า nbytes จะใช้ค่าเริ่มต้นที่ระบุ

เมธอด secrets.token_hex([nbytes=None])

เมธอดนี้ส่งคืนสตริงข้อความแบบสุ่มในรูปแบบเลขฐานสิบหก สตริงที่ส่งคืนมีไบต์สุ่ม nbytes อักขระแต่ละตัวสามารถแปลงเป็นเลขฐานสิบหกสองหลักได้ เมื่อไม่ได้กำหนดค่า nbytes จะใช้ค่าเริ่มต้นที่ระบุ

เมธอด secrets.token_urlsafe([nbytes=None])

วิธีนี้ใช้เพื่อส่งคืนสตริงข้อความ URL-Safe แบบสุ่ม ข้อความนั้นโดยทั่วไปเข้ารหัส Base64 โดยเฉลี่ยแต่ละไบต์จะให้ผลลัพธ์ 1.3 อักขระ (โดยประมาณ)

โค้ดตัวอย่าง

import secrets
my_sequence = ['K','?','D',':','o','5','t','l','Y','0']
rand_pass = ''
for i in range(15):
   rand_char = secrets.choice(my_sequence)
   rand_pass += rand_char
print("Random Password is: " + rand_pass)
my_tok1 = secrets.token_hex(10) #Create HEX token of length 10 
my_tok2 = secrets.token_hex(5) #Create HEX token of length 5
print("First Token: " + my_tok1)
print("First Token: " + my_tok2)

ผลลัพธ์

Random Password is: YK0l:YD??lKKY?o
First Token: f3e68646dcf1082e1038
First Token: e4ae3c2384