บทความนี้จะแสดงวิธีสร้างสตริงสุ่ม (Random string) ด้วยความยาวที่กำหนด ใช้ประโยชน์ในการสร้างรหัสผ่าน หรือโปรแกรมที่ต้องการความสุ่ม
วิธีที่ 1: ใช้ random.choices
ฟังก์ชัน random.choices (Python 3.6+) สามารถสุ่มหลายตัวพร้อมกันได้โดยระบุพารามิเตอร์ k เป็นจำนวนตัวอักษรที่ต้องการ
ตัวอย่าง
import string
import random
N = 5 # ความยาวสตริงที่ต้องการ
res = ''.join(random.choices(string.ascii_letters + string.digits, k=N))
print("Random string:", res)
ผลลัพธ์
Random string: nw1r8
วิธีที่ 2: ใช้ secrets.choice (ปลอดภัยกว่า)
โมดูล secrets ใช้สำหรับวัตถุประสงค์ด้านความปลอดภัย ใช้ secrets.choice ในลูป for แทน ซึ่งช้ากว่าเล็กน้อยแต่ปลอดภัยกว่าสำหรับรหัสผ่าน
ตัวอย่าง
import string
import secrets
N = 5
res = ''.join(secrets.choice(string.ascii_lowercase + string.digits) for i in range(N))
print("Random string:", res)
ผลลัพธ์
Random string: p4ylm
ข้อแตกต่าง: random ใช้ Mersenne Twister PRNG ซึ่งไม่เหมาะสำหรับคริปโตกราฟี ส่วน secrets ใช้ OS-level randomness (เช่น /dev/urandom) เหมาะสำหรับรหัสผ่าน Token และข้อมูลลับ
หมายเหตุ: ตัวอย่างวิธีที่ 2 จำกัดเฉพาะตัวพิมพ์เล็กและตัวเลข หากต้องการตัวพิมพ์ใหญ่เพิ่ม string.ascii_uppercase เข้าไป