ฉันมีคำถามสองสามข้อเกี่ยวกับไฟล์ ntp.keys และต้องการความช่วยเหลือจากคุณ
จาก man page รูปแบบของคีย์ ntp คือ
`คีย์โนแบบคีย์`
ประเภทไหนก็ได้ md5
, sha1
, สุกเอ็มดี160
, sha224
, sha256
เป็นต้น
ฉันมีความสับสนเกี่ยวกับรูปแบบของคีย์สำหรับประเภทข้างต้น จากหน้าคน
คีย์อาจเป็น ASCII ที่พิมพ์ได้ ยกเว้น "#" หรือเข้ารหัสฐานสิบหก คีย์ที่ยาวกว่า 20 อักขระจะถือว่าเป็นเลขฐานสิบหก ความยาวสูงสุดของคีย์ (de-hexified) คือ 32 ไบต์ หากคุณต้องการใช้คีย์ ASCII ที่ยาวกว่า 20 ไบต์ คุณต้องใช้เลขฐานสิบหก
ข้อจำกัดนี้มีไว้สำหรับคีย์ทุกประเภทหรือไม่
อันที่จริง ฉันกำลังใช้ CLI สำหรับการพิสูจน์ตัวตน ntp ซึ่งจะรองรับ md5
, sha1
, และ sha256
. ก่อนที่จะสร้างไฟล์ ntp.keys สุดท้าย ฉันต้องการตรวจสอบให้แน่ใจว่าคีย์นั้นอยู่ในรูปแบบที่ถูกต้องสำหรับทุกประเภท หากผู้ใช้ป้อนรูปแบบคีย์ผิดสำหรับประเภทใดก็ตาม ฉันต้องการส่งคืนข้อผิดพลาดใน CLI ฉันได้ค้นคว้าเพื่อค้นหารูปแบบที่ถูกต้องสำหรับแต่ละประเภท
- สำหรับ
md5
ฉันพบว่า คีย์คืออักขระที่พิมพ์ได้ 1 ถึง 16 ตัวซึ่งลงท้ายด้วย EOL ช่องว่าง หรือ # (ซึ่งเป็นอักขระ "เริ่มความคิดเห็น")
- นี่หมายถึงการรองรับ md5 ใน ntp ฉันควรจำกัดผู้ใช้ไม่ให้ป้อนอักขระเกิน 16 ตัวหรือไม่
- ฉันควรอนุญาตให้ใช้อักขระใด
md5
รูปแบบ?
- สำหรับ
SHA1
ฉันพบว่า, คีย์คือสตริง ASCII เข้ารหัสเลขฐานสิบหกที่มีอักขระ 40 ตัว ซึ่งจะถูกตัดให้สั้นลงตามความจำเป็น
- นี่หมายความว่าคีย์ควรมีความยาว 40 อักขระใช่หรือไม่
- อักขระทั้งหมดจำเป็นต้องเป็นเลขฐานสิบหกหรือไม่
- ฉันสามารถอนุญาตให้ผู้ใช้ป้อนอักขระน้อยกว่า 40 ตัวได้หรือไม่
- สำหรับ
SHA256
ฉันไม่ได้รับข้อมูลมากนัก ฉันต้องการตรวจสอบให้แน่ใจว่าคีย์อินพุตจากผู้ใช้สำหรับ SHA256
ควรถูกต้องและหากผู้ใช้ป้อนข้อมูลผิดฉันควรให้ข้อผิดพลาดแก่เขา รูปแบบที่ถูกต้องสำหรับคืออะไร SHA256
?
โดยรวมแล้ว ผมต้องการตรวจสอบความถูกต้องของคีย์อินพุตสำหรับแต่ละประเภท เพื่อให้ผู้ใช้ไม่สามารถระบุคีย์สตริงผิดได้ ใครช่วยกรุณาบอกฉันว่ารูปแบบที่ฉันควรอนุญาตสำหรับแต่ละประเภทคืออะไร