ไฟล์. snk มีไว้เพื่ออะไร ฉันรู้ว่ามันย่อมาจากStrongly Named Keyแต่คำอธิบายทั้งหมดของสิ่งที่มันเป็นและวิธีการทำงานเหนือหัวของฉัน
มีคำอธิบายง่ายๆเกี่ยวกับวิธีการใช้คีย์ที่มีชื่ออย่างยิ่งและวิธีการทำงานอย่างไร
ไฟล์. snk มีไว้เพื่ออะไร ฉันรู้ว่ามันย่อมาจากStrongly Named Keyแต่คำอธิบายทั้งหมดของสิ่งที่มันเป็นและวิธีการทำงานเหนือหัวของฉัน
มีคำอธิบายง่ายๆเกี่ยวกับวิธีการใช้คีย์ที่มีชื่ออย่างยิ่งและวิธีการทำงานอย่างไร
คำตอบ:
แฟ้ม .snk จะใช้ในการใช้ชื่อที่แข็งแกร่งในการชุมนุมสุทธิ ชื่อที่แข็งแกร่งดังกล่าวประกอบด้วย
ชื่อตัวอักษรหมายเลขรุ่นและข้อมูลวัฒนธรรมอย่างง่าย (ถ้ามีให้) รวมถึงกุญแจสาธารณะและลายเซ็นดิจิทัล
SNK มีคู่ของคีย์ที่ไม่ซ้ำกัน - คีย์ส่วนตัวและสาธารณะที่สามารถใช้เพื่อให้แน่ใจว่าคุณมีชื่อที่แข็งแกร่งไม่ซ้ำกันสำหรับแอสเซมบลี เมื่อแอสเซมบลีชื่ออย่างยิ่ง "แฮ" ถูกสร้างจากเนื้อหาของแอสเซมบลีและแฮถูกเข้ารหัสด้วยคีย์ส่วนตัว จากนั้นแฮชที่ลงนามนี้จะถูกวางไว้ในชุดประกอบพร้อมกับกุญแจสาธารณะจาก. snk
ในภายหลังเมื่อมีคนต้องการตรวจสอบความถูกต้องของชุดประกอบที่มีชื่อมากพวกเขาจะสร้างแฮชของเนื้อหาของชุดประกอบและใช้กุญแจสาธารณะจากชุดประกอบเพื่อถอดรหัสแฮชที่มาพร้อมกับชุดประกอบ - ถ้าแฮชทั้งสองตรงกัน การตรวจสอบการชุมนุมผ่าน
สิ่งสำคัญคือต้องสามารถตรวจสอบแอสเซมบลีด้วยวิธีนี้เพื่อให้แน่ใจว่าไม่มีใครสลับแอสเซมบลีที่เป็นอันตรายที่จะทำลายแอปพลิเคชันทั้งหมด นี่คือสาเหตุที่แอสเซมบลีที่ไม่มีชื่อที่แข็งแกร่งไม่น่าเชื่อถือในลักษณะเดียวกับแอสเซมบลีที่ชื่ออย่างมากดังนั้นจึงไม่สามารถวางใน GAC นอกจากนี้ยังมีห่วงโซ่ความไว้วางใจ - คุณไม่สามารถสร้างแอสเซมบลีที่มีชื่ออย่างยิ่งซึ่งอ้างอิงแอสเซมบลีที่ไม่มีชื่ออย่างยิ่ง
บทความ " ความลับของการตั้งชื่อที่แข็งแกร่ง (เก็บถาวรที่เครื่อง Wayback) " ทำงานที่ยอดเยี่ยมในการอธิบายแนวคิดเหล่านี้โดยละเอียดยิ่งขึ้น พร้อมรูปภาพ
ในโลก. Net ไฟล์SNKจะถูกใช้เพื่อลงนามไบนารีที่รวบรวมของคุณ สิ่งนี้ช่วยให้สองสิ่งเกิดขึ้น:
ฉันไม่คุ้นเคยกับการทำงานของเซิร์ฟเวอร์ BizTalkดังนั้นฉันไม่คิดว่าฉันจะสามารถเข้าใจถึงจุดประสงค์ที่เฉพาะเจาะจงที่พวกเขาให้บริการภายในสภาพแวดล้อมนั้นได้
หวังว่านี่จะเป็นประโยชน์บ้าง
ไฟล์. snk ใช้สำหรับการลงนามชุดประกอบเพื่อให้สามารถเพิ่มลงใน Global Assembly Cache (GAC)
ไฟล์. snk มีโทเค็นสาธารณะและส่วนตัวสำหรับคีย์ของคุณ เมื่อคุณต้องการลงชื่อข้อมูลบางส่วน (หรือไบนารี) ด้วยคีย์นั้นเช็คซัมจะถูกคำนวณบนข้อมูลซึ่งจะถูกเข้ารหัสด้วยโทเค็นส่วนตัว การตรวจสอบการเข้ารหัสจะถูกเพิ่มไปยังข้อมูล ทุกคนสามารถใช้โทเค็นสาธารณะจากคีย์ของคุณเพื่อถอดรหัสการตรวจสอบและเปรียบเทียบกับการตรวจสอบพวกเขาคำนวณเพื่อตรวจสอบว่าข้อมูลที่ลงนามไม่ได้ถูกดัดแปลง
คุณสามารถอ่านเพิ่มเติมเกี่ยวกับการเข้ารหัสคีย์สาธารณะที่http://en.wikipedia.org/wiki/Public-key_cryptography
ไฟล์. snk เป็นเวอร์ชัน "คีย์" ของคุณที่สร้างขึ้นโดยยูทิลิตี้ sn ในชุดยูทิลิตี้ของเฟรมเวิร์ก จากนั้นคุณใช้ไฟล์นี้เพื่อ 'เซ็นชื่อแบบดิจิทัล' แอสเซมบลีของคุณ มันเป็นกุญแจ 2 ส่วน .. การรวมกุญแจส่วนตัวกับสาธารณะ ส่วนสาธารณะของคีย์ถูกเผยแพร่เช่นทุกคนรู้จัก ส่วนส่วนตัวมีเพียงคุณเท่านั้นที่เป็นผู้พัฒนาส่วนประกอบ / แอพและตั้งใจที่จะคงไว้เช่นนั้น
เมื่อคุณลงนามแอสเซมบลีของคุณจะใช้คีย์ส่วนตัวและค่าแฮสำหรับแอสเซมบลีของคุณเพื่อสร้างลายเซ็นดิจิทัลซึ่งฝังอยู่ในแอสเซมบลีของคุณ หลังจากนั้นทุกคนที่โหลดชุดประกอบของคุณจะต้องผ่านขั้นตอนการยืนยัน กุญแจสาธารณะจะใช้ในการตรวจสอบว่าการชุมนุมมาจากคุณจริงๆ .. คุณแค่ต้องใช้กุญแจสาธารณะสำหรับสิ่งนี้ (ซึ่งฝังอยู่ในรูปแบบโทเค็นในรายการประกอบ) หากชุดประกอบได้รับการดัดแปลงค่าแฮชจะแตกต่างกันและโหลดชุดประกอบจะถูกยกเลิก นี่คือกลไกความปลอดภัย
ไฟล์. snk จะใช้เพื่อให้แน่ใจว่าคนอื่นไม่สามารถส่งสลิปประกอบของพวกเขาในสถานที่ของคุณ มันมีคู่ของคีย์การเข้ารหัส / ถอดรหัส
เมื่อมีการใช้ไฟล์. snk เพื่อลงนามแอสเซมบลีค่าแฮชโค้ดจะถูกคำนวณจากไฟล์แอสเซมบลีและเข้ารหัสโดยใช้คีย์ส่วนตัว "ไดเจสต์" ที่เข้ารหัสนั้นจะถูกตรึงไว้ในแอสเซมบลีพร้อมกับกุญแจสาธารณะจากไฟล์. snk
จากนั้นเมื่อมีคนรับแอสเซมบลีของคุณพวกเขายังสามารถคำนวณค่าแฮชโค้ดได้ พวกเขาใช้กุญแจสาธารณะในการถอดรหัสที่คุณคำนวณและเปรียบเทียบค่าที่คำนวณได้ หากการชุมนุมมีการเปลี่ยนแปลงเลยค่าเหล่านั้นจะแตกต่างกันและผู้ใช้ของการชุมนุมจะรู้ว่าการชุมนุมที่คุณมีไม่ได้เป็นคนที่คุณให้
ในบริบทของเซิร์ฟเวอร์ BizTalk ใครก็ตามที่สร้างแอสเซมบลีที่กำหนดเองใด ๆ ที่ใช้โดยโซลูชัน BizTalk ของคุณจะต้องใช้ไฟล์. snk เพื่อลงนามแอสเซมบลีเพื่อให้เซิร์ฟเวอร์ BizTalk สามารถโหลดลงใน GAC และใช้งานได้