PlusMagi's Blog By Pitt Phunsanit

openssl rand: สร้างข้อมูลสุ่ม

การสร้างสุ่มข้อมูล (Random Bytes) ที่มีความปลอดภัยสูงเป็นรากฐานสำคัญของระบบรักษาความปลอดภัยคอมพิวเตอร์ ไม่ว่าจะเป็นการสร้างรหัสผ่าน, Token สำหรับล็อกอิน, หรือการสร้างคีย์เข้ารหัส คำสั่งหนึ่งที่เป็นมาตรฐานและน่าเชื่อถือที่สุดบนฝั่งเซิร์ฟเวอร์คือ openssl rand ครับ

บทความนี้จะพามาดูวิธีใช้งานคำสั่ง openssl rand แบบเข้าใจง่าย พร้อมตัวอย่างที่นำไปใช้ได้ทันที


openssl rand คืออะไร?

openssl rand คือคำสั่งย่อยในชุดเครื่องมือ OpenSSL ที่ทำหน้าที่สร้าง Cryptographically Strong Pseudo-Random Bytes (ข้อมูลสุ่มที่มีความปลอดภัยทางวิทยาการเข้ารหัสลับ) หมายความว่าค่าที่ได้จะเดาทางได้ยากมาก เหมาะสำหรับการนำไปใช้ในงาน Security ต่าง ๆ

ต่างจากการใช้ฟังก์ชันสุ่มทั่วไปในบางภาษาโปรแกรม (เช่น rand() ในภาษา C หรือ Math.random() ใน JavaScript รุ่นเก่า) ที่อาจมีแพทเทิร์นทำให้แฮกเกอร์คาดเดาผลลัพธ์ล่วงหน้าได้


รูปแบบคำสั่งพื้นฐาน

openssl rand [-ตัวเลือก] [จำนวนไบต์ (Bytes)]


ตัวอย่างการใช้งานจริง


สร้างรหัสผ่าน/Token แบบปลอดภัยสูง (แนะนำ)

หากต้องการรหัสผ่านสุ่มที่เอาไปใช้เป็น Secret Key ในไฟล์ .env ของโปรเจกต์ หรือสร้าง Password ที่เดายากมากๆ การแปลงเป็น base64 จะตอบโจทย์ที่สุดครับ
openssl rand -base64 32


สร้าง String เลขฐาน 16 (Hex) สำหรับ Salt หรือ API Key

ในงานบางประเภท เช่น การทำ Password Salting หรือสร้าง Session ID ที่ต้องการให้อยู่ในรูปแบบ Hex String (0-9, a-f) ให้ใช้ -hex

openssl rand -hex 16


สร้างไฟล์สุ่มข้อมูลดิบ (Raw Binary)

ถ้าคุณต้องการสร้างไฟล์ที่มีข้อมูลสุ่มแบบดิบ ๆ (มักใช้ทดสอบการรับส่งข้อมูล หรือสร้างคีย์เข้ารหัสตรงๆ) สามารถดักเอา Output ไปลงไฟล์ได้เลยโดยไม่ต้องระบุ -hex หรือ -base64
openssl rand 64 > secret.bin
คำสั่งนี้จะสร้างไฟล์ชื่อ secret.bin ขนาด 64 ไบต์ที่บรรจุข้อมูลสุ่มแบบ Binary เอาไว้


สรุป: ควรเลือกกี่ Bytes ดี?

ข้อควรระวัง: ทุกครั้งที่กดรันคำสั่ง ค่าที่ได้จะเปลี่ยนไปเรื่อย ๆ และไม่สามารถกู้คืนค่าเดิมได้ ดังนั้นถ้าจะเอาไปใช้เป็น Encryption Key หรือ Secret Key อย่าลืมคัดลอกไปเก็บไว้ในที่ปลอดภัยทันทีนะครับ


อ่านเพิ่มเติม

Exit mobile version