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

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

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

สรุป

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

ความต้องการ

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

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

  1. เริ่ม Microsoft Visual Studio .NET
  2. บนแฟ้ม:เมนู ให้ชี้ไปที่ใหม่แล้ว คลิกProject.
  3. ในการชนิดโครงการพื้นที่ คลิกโครงการ visual Basic.
  4. ในการแม่แบบพื้นที่ คลิกแอพลิเคชันของคอนโซล.
  5. ในการชื่อ:กล่องข้อความ ชนิดHashConfigVbแล้ว คลิกตกลง.

เขียนโค้ดการแฮรหัสผ่าน

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

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

  1. เพิ่มแฟ้มคลาใหม่ที่ชื่อ KeyCreator โครงการพื้นฐานการแสดงผลของคุณ
  2. แทนโค้ดที่มีอยู่ในแฟ้ม KeyCreator.vb ด้วยรหัสต่อไปนี้:
    Imports System
    Imports System.Text
    Imports System.Security.Cryptography
    
    Namespace Crypto
      Public Class KeyCreator
    	
        Public Shared Sub CreateMachineKey()
          Dim commandLineArgs As String()
          commandLineArgs = System.Environment.GetCommandLineArgs()
    
          Dim decryptionKey As String
          decryptionKey = CreateKey(System.Convert.ToInt32(commandLineArgs(1)))
          Dim validationKey As String
          validationKey = CreateKey(System.Convert.ToInt32(commandLineArgs(2)))
    
          Console.WriteLine("<machineKey validationKey=""{0}"" decryptionKey=""{1}"" validation=""SHA1""/>", _
          validationKey, decryptionKey)
         End Sub
    
         Public Shared Function CreateKey(numBytes As Integer) As String
           Dim rng As RNGCryptoServiceProvider = New RNGCryptoServiceProvider()
           Dim buff(numBytes -1) As Byte
    
           rng.GetBytes(buff)
    				
           Return BytesToHexString(buff)
         End Function
     
         Public Shared Function BytesToHexString(bytes As Byte()) As String
           Dim hexString As StringBuilder = New StringBuilder(64)
           Dim counter as Integer
    
           For counter = 0 To bytes.Length - 1
             hexString.Append(String.Format("{0:X2}", bytes(counter)))
           Next
    
           Return hexString.ToString()
        End Function
    
      End Class
    End Namespace
    					
  3. เปิดแฟ้ม Module1.vb ที่สร้างขึ้น โดยค่าเริ่มต้น และจากนั้น เพิ่มโค้ดต่อไปนี้ในการหลักชุดคำสั่งย่อย:
        Dim MyKeyCreator As New Crypto.KeyCreator()
        MyKeyCreator.CreateMachineKey()
    					
  4. สร้างโปรแกรมประยุกต์

สร้างการ hashes

การเรียกใช้โปรแกรมประยุกต์จากพรอมต์คำสั่ง และส่งต่อในสองค่าจำนวนเต็มที่มีขนาดของการถอดรหัสลับและคีย์การตรวจสอบ ถ้าคุณตั้งชื่อแอพลิเคชันคอนโซล HashConfigVb.exe พิมพ์ไวยากรณ์ต่อไปนี้ที่พร้อมท์รับคำสั่งในช่องเก็บ directory ของแอพลิเคชัน:
HashConfigVb.exe 24 64
โปรแกรมประยุกต์ควรส่งกลับผลลัพธ์ที่คล้ายกับผลลัพธ์ต่อไปนี้:
<machineKey validationKey="08CE6B478DCE73..........E566D8AC5D1C045BA60"
            decryptionKey="4252D6B2268.........67F451CE65D0F2ABE9BCD3A"
            validation="SHA1"/>
					
หมายเหตุ:เนื่องจากรหัสของตัวสร้างตัวเลขสุ่มที่ใช้ ผลผลิตได้แตกต่างกันแต่ละครั้ง

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

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

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

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

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

หากต้องการทราบข้อมูลเพิ่มเติม โปรดคลิกที่หมายเลขบทความต่อไปนี้เพื่อดูบทความใน Microsoft Knowledge Base::
308157วิธีการใช้งานโดยใช้แบบฟอร์มการรับรองความถูกต้องในโปรแกรมประยุกต์ ASP.NET ของคุณ โดยใช้ Visual Basic .NET
306238วิธีการใช้ตามบทบาทการรักษาความปลอดภัย ด้วยใช้แบบฟอร์มการรับรองความถูกต้องในโปรแกรมประยุกต์ ASP.NET ของคุณ โดยใช้ Visual Basic .NET
306590ข้อมูล: ภาพรวมความปลอดภัยของ ASP.NET
307626ข้อมูล: ภาพรวมการตั้งค่าคอนฟิก ASP.NET

คุณสมบัติ

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

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

 

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