วิธีการสร้างคีย์ โดยใช้ Visual C# .NET สำหรับใช้ในแบบฟอร์มการรับรองความถูกต้อง

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 312906 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

บทความนี้อธิบายวิธีการสร้างคีย์เพื่อใช้สำหรับ การเข้ารหัสลับ ถอดรหัส และการตรวจสอบข้อมูลคุกกี้การรับรองความถูกต้องของแบบฟอร์ม คุณ สามารถใช้แป้นที่คุณสร้างไว้ในบทความนี้สำหรับการvalidationKeyและdecryptionKeyแอตทริบิวต์ของส่วน<machineKey>ใน การ<system.web></system.web>องค์ประกอบในแฟ้ม Machine.config ได้

</machineKey>

ความต้องการ

รายการต่อไปนี้แสดงฮาร์ดแวร์แนะนำ ซอฟต์แวร์ โครงสร้างพื้นฐานของเครือข่าย และ service pack ที่คุณต้องการ:
  • XP ใน Microsoft Windows 2000 หรือ Microsoft Windows
  • Microsoft .NET Framework
  • Microsoft Internet Information Services (IIS)

สร้างโครงการ

สร้างโปรแกรมประยุกต์คอนโซล Visual C# .NET:
  1. เริ่ม Visual Studio .NET
  2. บนเมนูแฟ้มชี้ไปที่สร้างและจากนั้น คลิกโครงการ
  3. ภายใต้ชนิดโครงการคลิกVisual C# โครงการ
  4. ภายใต้ต้นแบบคลิก แอพลิเคชันของคอนโซล.
  5. ชื่อโครงการHashConfigCs.
  6. คลิกตกลง

เขียนรหัสเพื่อสร้างคีย์

ต่อไปนี้รหัสอ่านสองอาร์กิวเมนต์ที่จะผ่านไปจากนั้น บรรทัดคำสั่ง:
  • อาร์กิวเมนต์แรกคือ จำนวนของไบต์ที่ถูกใช้ในการ สร้างแอตทริบิวต์decryptionKey
  • อาร์กิวเมนต์ที่สองคือ จำนวนของไบต์ที่ถูกใช้ในการ สร้างแอตทริบิวต์validationKey
รหัสใช้ตัวสร้างตัวเลขสุ่มที่สร้างแบบสุ่ม จำนวนไบต์ที่ขึ้นอยู่กับอาร์กิวเมนต์บรรทัดคำสั่ง หลังจากสุ่มไบต์ สร้าง ไบต์ถูกจัดรูปแบบลงในสายอักขระเลขฐานสิบหกที่เหมาะสมสำหรับ ใช้ในแฟ้ม.config ของ

หมายเหตุ สายอักขระเลขฐานสิบหกที่สร้างขึ้นเป็นสองเท่าของขนาดของการ ค่าที่ถูกส่งผ่านไปบนบรรทัดคำสั่ง ตัวอย่างเช่น ถ้าคุณระบุ 24 ไบต์ สำหรับคีย์ สตริผลลัพธ์เป็นไบต์ 48 ความยาวหลังจากการแปลง ที่ ค่าที่ถูกต้องสำหรับdecryptionKeyเป็น 8 หรือ 24 วิธีนี้สร้างหมายเลข 16 ไบต์สำหรับการเข้ารหัสลับข้อมูล มาตรฐาน (DES) หรือไบต์ 48 แป้นสำหรับกสามครั้ง DES ตามลำดับ ค่าที่ถูกต้องสำหรับvalidationKeyกำลัง 20 64 วิธีนี้สร้างคีย์จาก 40 ไบต์ 128 มีความยาว รหัสได้จากมีทั้ง<machineKey></machineKey>องค์ประกอบที่คุณสามารถคัดลอก และวางลงในแฟ้ม Machine.config

เพิ่มรหัสต่อไปนี้ไปยังแฟ้ม.cs:
using System;
using System.Text;
using System.Security.Cryptography;

namespace Crypto
{
    public class KeyCreator
    {
        public static void Main(String[] args)
        {			
            String[] commandLineArgs = System.Environment.GetCommandLineArgs();
            string decryptionKey = CreateKey(System.Convert.ToInt32(commandLineArgs[1]));
            string validationKey = CreateKey(System.Convert.ToInt32(commandLineArgs[2]));

            Console.WriteLine("<machineKey validationKey=\"{0}\" decryptionKey=\"{1}\" validation=\"SHA1\"/>", validationKey, decryptionKey);
        }	

        static String CreateKey(int numBytes) 
        {
            RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
            byte[] buff = new byte[numBytes];

            rng.GetBytes(buff);
            return BytesToHexString(buff);
        }

        static String BytesToHexString(byte[] bytes) 
        {
            StringBuilder hexString = new StringBuilder(64);

            for (int counter = 0; counter < bytes.Length; counter++) 
            {
                hexString.Append(String.Format("{0:X2}", bytes[counter]));
            }
            return hexString.ToString();
        }
    }
}
				

สร้างค่า hash

ขณะนี้ คุณสามารถคอมไพล์แอพลิเคชัน

เรียกใช้การ โปรแกรมประยุกต์จากพรอมต์คำสั่งโดยการส่งต่อในสองค่าจำนวนเต็มที่อยู่ ขนาดของการถอดรหัสลับและคีย์การตรวจสอบ ตัวอย่างเช่น ถ้าคุณตั้งชื่อคอนโซล แอพลิเคชัน HashConfigCs.exe พิมพ์ไวยากรณ์ต่อไปนี้จากบรรทัดคำสั่ง ในไดเรกทอรี Bin\debug ของ แอพลิเคชัน:
hashconfigcs.exe 24 64
คุณสามารถคาดว่าแอพลิเคชันจะส่งกลับผลลัพธ์ที่คล้ายกับ ผลลัพธ์ต่อไปนี้:
<machineKey validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B"
            decryptionKey="261F793EB53B761503AC445E0CA28DA44AA9B3CF06263B77"
            validation="SHA1"/>
					
หมายเหตุ เนื่องจากรหัสจะใช้ตัวสร้างตัวเลขตัว ผลผลิต จะแตกต่างกัน


การปรับปรุงแฟ้มการกำหนดค่า

  1. ค้นหาตำแหน่งของแฟ้ม Machine.config
  2. ค้นหา<system.web></system.web>ส่วนในแฟ้มการกำหนดค่า
  3. แทนส่วน<machineKey>กับเอาต์พุตจาก แอพลิเคชันคอนโซล ถ้าไม่มีส่วน<machineKey> สร้างเอกสารนั้นอยู่</machineKey></machineKey>
  4. บันทึกแฟ้มการกำหนดค่า
  5. Start IIS บนเซิร์ฟเวอร์ทั้งหมดในฟาร์มเว็บ Machine.config เปลี่ยนแปลงมีผลบังคับใช้

การแก้ไขปัญหา

ตรวจสอบให้แน่ใจว่า มีส่วน<machineKey>เหมือนกัน คีย์ที่ชัดเจน (นั่นคือ ไม่ใช้ตัวสร้างอัตโนมัติสำหรับแอตทริบิวต์ในส่วนของ<machineKey>) หมู่ เว็บฟาร์มในสถานการณ์ต่อไปนี้: </machineKey> </machineKey>
  • เมื่อคุณใช้แบบฟอร์มการรับรองความถูกต้อง
  • เมื่อคุณเรียกใช้สถานะเซสชันในโหมด StateServer
  • เมื่อคุณต้องการ ViewState จะพร้อมใช้งานข้ามเว็บฟาร์ม เนื่องจากแอตทริบิวต์enableViewStateMACถูกตั้งค่าเป็นTrueโดยค่าเริ่มต้น

ข้อมูลเพิ่มเติม

ส่วนmachineKeyควรจะตรงข้ามในฟาร์มเว็บในข้อความต่อไปนี้ กรณี:
  • เมื่อใช้การรับรองความถูกต้องของฟอร์ม
  • เมื่อคุณเรียกใช้สถานะเซสชันในโหมด StateServer
  • เมื่อคุณต้องการ viewstate จะพร้อมใช้งานข้ามเว็บฟาร์ม เนื่องจาก enableViewStateMac เปิดอยู่ โดยค่าเริ่มต้น

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติม คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
301240วิธีการใช้แบบฟอร์มโดยใช้การรับรองความถูกต้องในโปรแกรมประยุกต์ ASP.NET ของคุณ โดยใช้ C# .NET
311495 วิธีการใช้ขึ้นอยู่กับบทบาทการรักษาความปลอดภัย ด้วยใช้แบบฟอร์มการรับรองความถูกต้องในโปรแกรมประยุกต์ ASP.NET ของคุณ โดยใช้ Visual C# .NET
306590 รายละเอียด: ภาพรวมการรักษาความปลอดภัยของ ASP.NET
307626 รายละเอียด: ภาพรวมการตั้งค่าคอนฟิกของ ASP.NET

คุณสมบัติ

หมายเลขบทความ (Article ID): 312906 - รีวิวครั้งสุดท้าย: 5 พฤศจิกายน 2555 - Revision: 7.0
ใช้กับ
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
Keywords: 
kbconfig kbhowtomaster kbsecurity kbstate kbmt KB312906 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:312906

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com