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