วิธีการเข้ารหัสลับสายอักขระใน Visual Basic 6.0 และวิธีการถอดรหัสข้อความ ใน Visual Basic .NET หรือ Visual Basic 2005

ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ

ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:821762
สรุป
บทความนี้อธิบายวิธีการเข้ารหัสลับสายอักขระ โดยใช้ Microsoft Visual Basic 6.0 นอกจากนี้ยังอธิบายถึงวิธีการถอดรหัสข้อความ โดยการใช้ Visual Basic .NET นอกจากนี้ บทความนี้อธิบาย Microsoft Windows APIs ที่ใช้ในรหัส สำหรับกระบวนการเข้ารหัสลับ และ การดำเนินการถอดรหัส
บทนำ
บทความทีละขั้นตอนนี้อธิบายวิธีการเข้ารหัสลับสายอักขระ โดยใช้ CryptoAPI ใน Microsoft Visual Basic 6.0 นอกจากนี้ยังอธิบายถึงวิธีการถอดรหัสข้อความ โดยใช้คลาสCryptoServiceProviderใน Microsoft Visual Basic .NET หรือ ใน Microsoft Visual Basic 2005 บทความนี้อธิบายรหัสสำหรับกระบวนการเข้ารหัสลับใน Visual Basic 6.0 นอกจากนี้ยังกล่าวถึงรหัสสำหรับกระบวนการถอดรหัสลับ ใน Visual Basic .NET หรือ Visual Basic 2005

รหัสกระบวนการเข้ารหัสลับและรหัสกระบวนการถอดรหัสลับที่มีโครงสร้างต่อไปนี้:
  • รหัสกระบวนการเข้ารหัสลับ- เมื่อคุณพัฒนารหัสการเข้ารหัสลับ โดยใช้ Visual Basic 6.0, thecode มีโครงสร้างในกลุ่มโครงการหนึ่งที่ชื่อ EncryptGroup กลุ่ม Thisproject ประกอบด้วยแต่ละโครงการต่อไปนี้:
    • CryptWrap.vbp - โครงการ CryptWrap.vbp ประกอบด้วยแฟ้มคลาส Visual Basic ที่มีชื่อว่า clsCryptoAPI.cls
    • Encrypt.vbp - โครงการ Encrypt.vbp ประกอบด้วยฟอร์มที่ชื่อ frmEncFiles.frm
  • รหัสกระบวนการถอดรหัสลับ- เมื่อคุณพัฒนารหัสการถอดรหัสลับ โดยใช้ Visual Basic .NET orin Visual Basic 2005 รหัสถูกจัดโครงสร้างในโซลูชันเดียวที่เป็น namedDecryptInVBNET โซลูชันนี้ประกอบด้วย Microsoft Windows applicationproject หนึ่งที่ชื่อ DecryptInVBNET.vbproj โครงการนี้ประกอบด้วย WindowsForm หนึ่งที่ชื่อ Form1.vb
กลับไปด้านบน

ความต้องการ

บทความนี้ตั้งสมมติฐานว่าคุณคุ้นเคยกับหัวข้อต่อไปนี้:
  • การเข้ารหัส
  • การใช้ Api ใน Visual Basic 6.0
  • ใช้คลาCryptoServiceProviderใน Visual Basic .NET หรือ Visual Basic 2005
รายการต่อไปนี้ทั่วไปเกี่ยวกับฮาร์ดแวร์ที่แนะนำ ซอฟต์แวร์ ระบบเครือข่าย และ service pack ที่คุณจำเป็นต้อง:
  • OrMicrosoft ของ Microsoft Windows Server 2003, Microsoft Windows 2000, Windows XP
  • Microsoft Visual Basic 6.0 และ Microsoft Visual Basic NETand Microsoft Visual Basic 2005
กลับไปด้านบน

รหัส สำหรับการเข้ารหัสลับ และ การถอดรหัสลับ

บทความนี้อธิบายถึงรหัสที่รวมอยู่ในแพคเกจ CryptographySample.exe

แฟ้มต่อไปนี้จะสามารถดาวน์โหลดได้จากศูนย์ดาวน์โหลดของ Microsoft:
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการดาวน์โหลดแฟ้มสนับสนุนของ Microsoft ให้คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
119591 วิธีการขอรับแฟ้มสนับสนุนของ Microsoft จากบริการออนไลน์
Microsoft สแกนแฟ้มนี้เพื่อหาไวรัสแล้ว Microsoft ใช้ซอฟต์แวร์ตรวจสอบไวรัสที่เป็นปัจจุบันที่สุดซึ่งพร้อมใช้งานตั้งแต่วันที่ซึ่งมีการประกาศแฟ้มนี้ แฟ้มเก็บอยู่บนเซิร์ฟเวอร์ที่สนับสนุนความปลอดภัยที่ช่วยป้องกันการเปลี่ยนแปลงใด ๆ ที่ไม่ได้รับอนุญาตไปยังแฟ้ม

หมายเหตุ เมื่อต้องการใช้รหัสตัวอย่างดาวน์โหลด ให้ทำตามขั้นตอนในการ "คำแนะนำเพื่อเรียกใช้รหัส"

กลับไปด้านบน

การเข้ารหัสลับใน Visual Basic 6.0

ส่วนนี้อธิบายขั้นตอนที่สำคัญในกระบวนการเข้ารหัสลับ นอกจากนี้ยังอธิบายถึงรหัส Visual Basic ที่ใช้สำหรับขั้นตอนเหล่านี้

กลับไปด้านบน

CryptWrap DLL

CryptWrap DLL มีมาพร้อมกับรหัสที่คุณดาวน์โหลดในแบบ "รหัส สำหรับการเข้ารหัสลับ และ การถอดรหัสลับ" CryptWrap DLL เป็นแบบ wrapper ที่ตัดรอบ ๆ การเรียก API CryptWrap DLL ในโครงการ CryptWrap.vbp ที่อยู่ในกลุ่มโครงการ EncryptGroup อยู่

กระบวนการเข้ารหัสลับจำเป็นต้องใช้ CryptWrap DLL โครงการเข้ารหัสลับใช้ CryptWrap DLL การเรียกฟังก์ชันที่ทำการเข้ารหัสลับที่แท้จริง

กลับไปด้านบน

CryptoWrap DLL

CryptoWrap DLL จะมีโค้ด โดยใช้แม่แบบโครงการ ActiveX DLL CryptoWrap DLL มีในแฟ้ม clsCryptoAPI.cls ที่อยู่ในกลุ่มโครงการ EncryptGroup

รหัสของ CryptoWrap DLL ประกอบด้วยต่อไปนี้:
  • ประกาศค่า ของตัวแปร และค่าคงที่ใช้ DLL ที่ theCryptoWrap
  • ประกาศ ของ subroutines และฟังก์ชันสำหรับการเข้ารหัสAPI ฟังก์ชันจากไลบรารีแฟ้ม Advapi32.dll ใน ofVisual เงื่อนไข 6.0 พื้นฐาน
  • ประกาศ ของคุณสมบัติ ฟังก์ชัน และ ofsubroutines
  • รหัสผ่านที่กำหนดให้กับตัวแปรระดับโมดูลในโค้ดจากโปรแกรมเรียก

    หมายเหตุ รหัสผ่านนี้ถูกใช้เป็นคีย์ที่ใช้เข้ารหัสสตริCryptoEncryptฟังก์ชัน ที่สืบทอดมา
CryptoWrap DLL ใช้อัลกอริทึมการ SHA1 สำหรับ hashing และใช้อัลกอริทึมการ RC2 สำหรับการเข้ารหัสลับ

กลับไปด้านบน

การประกาศตัวแปร

ส่วนนี้อธิบายถึงตัวแปรสำคัญที่ประกาศในไฟล์ clsCryptoAPI.cls

ร่วมกับตัวแปรทั่วไปที่คุณสามารถใช้ สำหรับสตริงที่ป้อนเข้า และผลลัพธ์ของสตริงที่ ค่าคงอื่น ๆ บางอย่างถูกประกาศในรหัสกระบวนการเข้ารหัสลับ ค่าคงอื่นเหล่านี้จะใช้เพื่อเรียกฟังก์ชัน API ในโครงการ CryptWrap.vbp คำอธิบายของบางส่วนของค่าคงอื่นเหล่านี้ปรากฏในตัวอย่างรหัสต่อไปนี้:
    Private Const ALG_CLASS_ANY     As Long = 0    Private Const ALG_TYPE_ANY      As Long = 0    Private Const ALG_CLASS_HASH    As Long = 32768    Private Const ALG_TYPE_BLOCK    As Long = 1536    Private Const ALG_CLASS_DATA_ENCRYPT  As Long = 24576    Private Const ALG_SID_RC2       As Long = 2    Private Const ALG_SID_SHA1      As Long = 4    ' Hash algorithms    Private Const CALG_SHA1         As Long = ALG_CLASS_HASH Or ALG_TYPE_ANY Or ALG_SID_SHA1    ' Block ciphers    Private Const CALG_RC2          As Long = ALG_CLASS_DATA_ENCRYPT Or ALG_TYPE_BLOCK Or ALG_SID_RC2    ' CryptSetProvParam    Private Const PROV_RSA_FULL        As Long = 1    ' used when acquiring the provider    Private Const CRYPT_VERIFYCONTEXT  As Long = &HF0000000    ' Microsoft provider data    Private Const MS_DEFAULT_PROVIDER  As String = _                  "Microsoft Base Cryptographic Provider v1.0"    ' used to specify not to use any salt value while deriving the key    Private Const CRYPT_NO_SALT As Long = &H10
ส่วนหัวของแฟ้ม Wincrypt.h บนคอมพิวเตอร์ของคุณประกอบด้วยข้อกำหนดของทั้งหมดเหล่านี้อื่น ๆ ค่าคง คุณสามารถใช้ส่วนหัวของแฟ้ม Wincrypt.h ได้โดยตรงในรหัสของคุณโครงการ C หรือ c ++ อย่างไรก็ตาม ในโปรแกรม Visual Basic 6.0 ที่คุณดาวน์โหลดในแบบ "รหัส สำหรับการเข้ารหัสลับ และ การถอดรหัสลับ"ส่วน ค่าคงที่ใช้ในกระบวนการเข้ารหัสลับถูกประกาศ และกำหนดค่าเริ่มต้นในแฟ้ม clsCryptoAPI.cls ค่าคงเหล่านี้จะเหมือนกับค่าคงที่ถูกประกาศในแฟ้ม Wincrypt.h บนคอมพิวเตอร์ของคุณ

กลับไปด้านบน

ประกาศ API ใน Visual Basic 6.0

ฟังก์ชัน API สำคัญที่ประกาศในไฟล์ clsCryptoAPI.cls มีดังนี้:
  • GetLastError - GetLastErrorฟังก์ชันดึงค่ารหัสข้อผิดพลาดล่าสุดของเธรดเรียก

    รหัสต่อไปนี้เป็นตัวอย่างของฟังก์ชันGetLastError :
    Private Declare Function GetLastError Lib "kernel32" () As Long
  • CryptAcquireContext - CryptAcquireContextฟังก์ชันถูกใช้เพื่อขอรับหมายเลขอ้างอิงเป็นการระบุคีย์ containerin ผู้ให้บริการที่ระบุในการเข้ารหัสลับ (CSP) พารามิเตอร์phProvได้รับหมายเลขอ้างอิงถึงคีย์คอนเทนเนอร์ที่ระบุ Youcan ใช้หมายเลขอ้างอิงนี้เมื่อต้องการเรียกฟังก์ชัน API อื่น ๆ

    Codeis ต่อไปนี้เป็นตัวอย่างของฟังก์ชันCryptAcquireContext :
    Private Declare Function CryptAcquireContext Lib "advapi32.dll" _              Alias "CryptAcquireContextA" (ByRef phProv As Long, _              ByVal pszContainer As String, ByVal pszProvider As String, _              ByVal dwProvType As Long, ByVal dwFlags As Long) As Long
  • CryptCreateHash - CryptCreateHashฟังก์ชันถูกใช้เพื่อเริ่มต้นการ hashing ยังกระแสข้อมูล CryptCreateHashฟังก์ชันส่งกลับไปยังผู้เรียกหมายเลขอ้างอิงที่ไปยังวัตถุแฮ CSP หมายเลขอ้างอิงนี้ยังสามารถใช้ในการเรียกใช้ฟังก์ชันCryptHashDataรุ่นที่ใหม่กว่าเพื่อแฮคีย์เซสชัน พารามิเตอร์phHashได้รับหมายเลขอ้างอิงของแฮวัตถุใหม่

    รหัสต่อไปนี้เป็นตัวอย่างของฟังก์ชันCryptCreateHash :
    Private Declare Function CryptCreateHash Lib "advapi32.dll" _              (ByVal hProv As Long, ByVal algid As Long, _              ByVal hkey As Long, ByVal dwFlags As Long, _              ByRef phHash As Long) As Long
  • CryptHashData - ฟังก์ชันCryptHashDataเพิ่มข้อมูลไปยังวัตถุแฮระบุ พารามิเตอร์pbDataประกอบด้วยข้อมูลถูก hashed

    Followingcode เป็นตัวอย่างของฟังก์ชันCryptHashData :
    Private Declare Function CryptHashData Lib "advapi32.dll" _              (ByVal hhash As Long, ByVal pbData As String, _              ByVal dwDataLen As Long, ByVal dwFlags As Long) As Long
  • CryptDestroyHash - ฟังก์ชันCryptDestroyHash destroys แฮวัตถุที่อ้างอิงถึงพารามิเตอร์hHash

    รหัสต่อไปนี้เป็นการ exampleof ฟังก์ชันCryptDestroyHash :
    Private Declare Function CryptDestroyHash Lib "advapi32.dll" _              (ByVal hhash As Long) As Long
  • CryptReleaseContext - CryptReleaseContextฟังก์ชันถูกใช้เพื่อนำออกใช้จับ เพื่อ CSP และ keycontainer เป็น พารามิเตอร์hProvคือหมายเลขอ้างอิงการ CSP ค่าของพารามิเตอร์hProvได้รับ โดยการเรียกฟังก์ชัน API CryptAcquireContext

    รหัสต่อไปนี้เป็นตัวอย่างของฟังก์ชันCryptReleaseContext :
    Private Declare Function CryptReleaseContext Lib "advapi32.dll" _              (ByVal hProv As Long, ByVal dwFlags As Long) As Long
  • CryptDeriveKey - CryptDeriveKeyฟังก์ชันสร้างคีย์การเข้ารหัสลับที่ได้รับมาจาก basedata ฟังก์ชันCryptDeriveKeyสร้างคีย์เดียวกันเสมอสำหรับ ifyou ข้อมูลพื้นฐานเหมือนกันใช้ CSP เดียวกันและอัลกอริทึมเหมือนกันทุกครั้งที่คุณเรียกใช้ฟังก์ชันCryptDeriveKeyสำหรับฐานข้อมูลเดียวกัน

    ข้อมูลพื้นฐาน apassword ก็ได้ แฮรหัสผ่าน และคุณจึง เรียกใช้ฟังก์ชันนี้เพื่อขอรับ ahandle ไปยังคีย์ พารามิเตอร์phKeyได้รับหมายเลขอ้างอิงไปยังคีย์ที่ใช้สำหรับการ theencryption

    รหัสต่อไปนี้เป็นตัวอย่างของฟังก์ชันCryptDeriveKey :
    Private Declare Function CryptDeriveKey Lib "advapi32.dll" _              (ByVal hProv As Long, ByVal algid As Long, _              ByVal hBaseData As Long, ByVal dwFlags As Long, _              ByRef phKey As Long) As Long
  • CryptDestroyKey - CryptDestroyKeyฟังก์ชันนำออกใช้หมายเลขอ้างอิงที่อ้างอิงถึงพารามิเตอร์hKey รหัสต่อไปนี้เป็นตัวอย่างของฟังก์ชันCryptDestroyKey :
    Private Declare Function CryptDestroyKey Lib "advapi32.dll" _              (ByVal hkey As Long) As Long
  • CryptEncrypt - CryptEncryptฟังก์ชันถูกใช้เพื่อเข้ารหัสลับข้อมูล คีย์นี้ว่า moduleholds CSP ที่กำหนดอัลกอริทึมที่ใช้เพื่อเข้ารหัสข้อมูล พารามิเตอร์hKeyอ้างอิงถึงคีย์นี้ รหัสต่อไปนี้เป็นการ exampleof ฟังก์ชันCryptEncrypt :
    Private Declare Function CryptEncrypt Lib "advapi32.dll" _              (ByVal hkey As Long, ByVal hhash As Long, ByVal Final As Long, _              ByVal dwFlags As Long, ByVal pbData As String, _              ByRef pdwDataLen As Long, ByVal dwBufLen As Long) As Long
นอกจากนี้ยังมีประกาศของ subroutine ที่CopyMemoryในไฟล์ clsCryptoAPI.cls ของ subroutine CopyMemoryที่คัดลอกบล็อกของหน่วยความจำจากตำแหน่งที่ตั้งหนึ่งไปยังตำแหน่งอื่น ของ subroutine CopyMemoryที่ใช้พารามิเตอร์ต่อไปนี้:
  • ปลายทาง- พารามิเตอร์ปลายทางคือ ปลายทางที่เนื้อหานั้น copiedto
  • แหล่ง- พารามิเตอร์แหล่งข้อมูลคือ แหล่งมาที่เนื้อหาจะถูกคัดลอกจาก
  • ไบต์- พารามิเตอร์ไบต์คือ ขนาดของเนื้อหาถูกคัดลอกจาก sourceto ปลายทาง
รหัสต่อไปนี้คือ ตัวอย่างของ subroutine ที่CopyMemory :
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _              (dest As Any, source As Any, ByVal bytes As Long)
กลับไปด้านบน

ฟังก์ชันที่สำคัญ

ส่วนนี้อธิบายถึงฟังก์ชันบางสิ่งสำคัญที่จะถูกประกาศในแฟ้ม clsCryptoAPI.cls

โปรแกรมเข้ารหัสลับเรียกฟังก์ชันเข้ารหัสลับเพื่อเข้ารหัสสตริงที่ รหัสต่อไปนี้เป็นตัวอย่างของฟังก์ชันการเข้ารหัสลับ:
Public Function Encrypt(Optional intHashType As Integer = 1, _                            Optional intCipherType As Integer = 1) As Boolean      Encrypt = CryptoEncrypt(intHashType, intCipherType)End Function
ฟังก์ชันนี้มีสองพารามิเตอร์ พารามิเตอร์intHashTypeระบุอัลกอริทึมการแปลงแป้นพิมพ์ที่จะใช้คีย์ที่สืบทอดมา พารามิเตอร์intCipherTypeระบุชนิดของการเข้ารหัสที่เข้ารหัสลับโปรแกรมที่ใช้การเข้ารหัสลับข้อความ

หมายเหตุ ชนิดการเข้ารหัสคือหรือที่เรียกอีกอย่างหนึ่งว่าอัลกอริทึมการเข้ารหัสลับ

เนื่องจากพารามิเตอร์เหล่านี้ไม่จำเป็น กำลังเตรียมใช้งานเป็นค่าเริ่มต้น ดังนั้น ถ้าโปรแกรมเรียกให้ค่าสำหรับพารามิเตอร์เหล่านี้ ฟังก์ชันการเข้ารหัสลับใช้ค่าเริ่มต้น

ฟังก์ชันการเข้ารหัสลับเรียกฟังก์ชันCryptoEncrypt ฟังก์ชันCryptoEncryptคือฟังก์ชันส่วนตัวของ DLL CryptoWrap ที่ทำการเข้ารหัสลับที่แท้จริง รหัสต่อไปนี้เป็นตัวอย่างของฟังก์ชันCryptoEncrypt :
Private Function CryptoEncrypt(intHashType As Integer, _                                   intCipherType As Integer) As Boolean
ฟังก์ชันCryptoEncryptเป็นฟังก์ชันใน CryptoWrap DLL หลัก ฟังก์ชันCryptoEncryptเข้ารหัสลับข้อความ

กลับไปด้านบน

กระบวนการเข้ารหัสลับ

ขั้นตอนต่อไปนี้อธิบายขั้นตอนการเข้ารหัสลับ:
  1. ฟังก์ชันCryptoEncryptเริ่มต้นกระบวนการเข้ารหัสลับ ด้วยการเรียกฟังก์ชันGetProvider

    หมายเหตุ ฟังก์ชันGetProviderคือฟังก์ชันส่วนตัว
  2. ฟังก์ชันGetProviderเรียกฟังก์ชันCryptAcquireContext API เพื่อขอรับหมายเลขอ้างอิงของ CSP
  3. ฟังก์ชันGetProviderเรียกฟังก์ชันCryptCreateHash API เพื่อขอรับหมายเลขอ้างอิงคำของออบเจ็กต์แฮช
  4. ฟังก์ชันCryptHashData API hashes ข้อความรหัสผ่าน โดยใช้หมายเลขอ้างอิงที่ฟังก์ชันGetProviderรับในขั้นตอนที่ 3
  5. ฟังก์ชันCryptDeriveKey API เรียกฟังก์ชันCryptoEncryptและฟังก์ชันCryptDeriveKey API ใช้จุดจับที่ฟังก์ชันGetProviderรับในขั้นตอนที่ 2 และ 3 เพื่อสืบทอดมาคีย์ forencryption
  6. ฟังก์ชันCryptoEncryptเรียกฟังก์ชันCryptDestroyHash API สามารถทำลายวัตถุแฮช
  7. คำสั่งเตรียมใช้งานตัวแปรจัดสรร sufficientspace สำหรับบัฟเฟอร์ที่จัดเก็บสายอักขระที่มีการเข้ารหัสลับ ตัวอย่างเช่น สายอักขระต่อไปนี้จะจัดสรรพื้นที่ว่างเพียงพอ:
    lngEnctBuffLen=lngEncDataLength*2
  8. ฟังก์ชันCryptoEncryptเรียกฟังก์ชันCryptEncrypt API การป้อนข้อมูลสำหรับฟังก์ชันCryptEncrypt API มีคีย์ว่า ฟังก์ชันCryptDeriveKey API ที่ได้รับในขั้นตอนที่ 5 และสายอักขระที่คุณต้องการ toencrypt
  9. ฟังก์ชันCryptEncrypt API เก็บข้อความที่เข้ารหัสลับ โดยการเขียนทับแบบ inputstring ในบัฟเฟอร์
  10. ฟังก์ชันCryptoEncryptเรียกฟังก์ชันCryptDestroyKey API เพื่อทำลายคีย์
  11. ฟังก์ชันCryptoEncryptเรียกฟังก์ชันCryptDestroyHash API สามารถทำลายวัตถุแฮช
กลับไปด้านบน

โปรแกรมที่เข้ารหัสลับ

โปรแกรมเข้ารหัสลับถูกรวมเข้ากับรหัสที่คุณดาวน์โหลดในแบบ "รหัส สำหรับการเข้ารหัสลับ และ การถอดรหัสลับ" การเข้ารหัสลับให้โปรแกรมสร้างอินเทอร์เฟซผู้ใช้สำหรับกระบวนการเข้ารหัสลับ ใช้ CryptWrap DLL สายอักขระที่มีการเข้ารหัสลับ โปรแกรมการเข้ารหัสลับนี้คือในโครงการเข้ารหัสลับที่เป็นส่วนหนึ่งของกลุ่มโครงการ EncryptGroup

กลับไปด้านบน

อินเทอร์เฟซสำหรับผู้ใช้

ส่วนติดต่อผู้ใช้ของโปรแกรมที่เข้ารหัสลับประกอบด้วยกล่องข้อความต่อไปนี้:
  • ป้อน path\filename เต็มรูปแบบสำหรับแฟ้ม toencrypt
  • ชื่อและตำแหน่งของ encryptedfile

    หมายเหตุ กล่องข้อความนี้เป็นแบบอ่านอย่างเดียว
ส่วนติดต่อผู้ใช้ของโปรแกรมที่เข้ารหัสลับประกอบด้วยปุ่มต่าง ๆ ต่อไปนี้:
  • เข้ารหัสลับ
  • จบการทำงาน
หลังจากที่คุณพิมพ์ข้อมูลที่ถูกต้องในกล่องป้อน path\filename เต็มรูปแบบสำหรับแฟ้มที่เข้ารหัสลับเส้นทางของแฟ้มที่จะเก็บข้อความที่เข้ารหัสลับปรากฏในกล่องชื่อและตำแหน่งของแฟ้มที่เข้ารหัสลับ

เมื่อต้องการเริ่มต้นกระบวนการเข้ารหัสลับ คลิกเข้ารหัส หลังจากเสร็จสิ้นกระบวนการเข้ารหัสลับ คุณได้รับกล่องข้อความที่บ่งชี้ว่า กระบวนการเข้ารหัสลับได้เสร็จสมบูรณ์แล้ว

เมื่อต้องการออกจากโปรแกรมเข้ารหัสลับ คลิกจบการทำงาน

กลับไปด้านบน

ฟังก์ชันที่สำคัญ

ไม่ได้ประกาศฟังก์ชันต่อไปนี้ในแฟ้ม frmEncFiles.frm ของโปรแกรมที่เข้ารหัสลับ:
Private Sub Encrypt_File()
ฟังก์ชันนี้ถูกเรียกเมื่อคุณคลิกการเข้ารหัสลับ เรียกฟังก์ชันนี้ไม่ต่อไปนี้:
  • สร้างออบเจ็กต์ของคลาclsCryptoAPIใน CryptoWrap DLL
  • ดำเนินงานตรวจสอบพื้นฐาน เช่น theexistence ของแฟ้มการตรวจสอบ
  • เริ่มต้นเขตข้อมูลรหัสผ่านและฟิลด์ InputData ของออปเจ็กต์ของคลาสclsCryptoAPI
  • เรียกฟังก์ชันการเข้ารหัสลับของออปเจ็กต์ของคลาสclsCryptoAPI

    หมายเหตุ ในวัตถุคลาclsCryptoAPIพารามิเตอร์intHashTypeถูกตั้งค่าเป็นค่าอัลกอริทึม SHA1 4และพารามิเตอร์intCipherTypeถูกตั้งค่าเป็นค่าอัลกอริทึม RC2 2
  • เผยแพร่ฟิลด์ OutputData ของclsCryptoAPIคลาสออบเจ็กต์
โปรแกรมได้รับข้อความที่เข้ารหัสลับ และจัดเก็บในแฟ้มผลลัพธ์ คุณได้รับกล่องข้อความที่บ่งชี้ว่า กระบวนการเข้ารหัสลับได้เสร็จเรียบร้อยแล้ว

กลับไปด้านบน

โปรแกรม DecryptInVBNET

โปรแกรม DecryptInVBNET จะมาพร้อมกับรหัสที่คุณดาวน์โหลดในแบบ "รหัส สำหรับการเข้ารหัสลับ และ การถอดรหัสลับ" โปรแกรม DecryptInVBNET สร้างอินเทอร์เฟซผู้ใช้สำหรับการถอดรหัสลับ นอกจากนี้ยังใช้ Microsoft Visual Studio .NET หรือ Microsoft Visual Studio 2005 CSPs สำหรับกระบวนการถอดรหัสลับ

กลับไปด้านบน

อินเทอร์เฟซสำหรับผู้ใช้

ส่วนติดต่อผู้ใช้ของโปรแกรม DecryptInVBNET ประกอบด้วยกล่องข้อความต่อไปนี้:
  • ป้อน path\filename เต็มรูปแบบสำหรับแฟ้ม todecrypt
  • ชื่อและตำแหน่งของ decryptedfile

    หมายเหตุ กล่องข้อความนี้เป็นแบบอ่านอย่างเดียว
ส่วนติดต่อผู้ใช้ของโปรแกรม DecryptInVBNET ประกอบด้วยปุ่มต่าง ๆ ต่อไปนี้:
  • ถอดรหัสลับ
  • จบการทำงาน
หลังจากที่คุณพิมพ์ข้อมูลที่ถูกต้องในกล่องป้อน path\filename เต็มรูปแบบสำหรับแฟ้มที่จะถอดรหัสลับเส้นทางของแฟ้มที่จัดเก็บสายอักขระแบบถอดรหัสลับที่ปรากฏในกล่องชื่อและตำแหน่งของแฟ้มถอดรหัสลับ

เมื่อต้องการเริ่มต้นกระบวนการถอดรหัสลับ คลิกถอดรหัสลับ หลังจากดำเนินการถอดรหัสเสร็จสมบูรณ์แล้ว คุณได้รับกล่องข้อความที่บ่งชี้ว่า กระบวนการถอดรหัสลับได้เสร็จสมบูรณ์แล้ว

เมื่อต้องการออกจากโปรแกรม DecryptInVBNET คลิกจบการทำงาน

กลับไปด้านบน

ฟังก์ชันที่สำคัญ

ไม่ได้ประกาศฟังก์ชันต่อไปนี้ในแฟ้มของโปรแกรม DecryptInVBNET Form1.vb:
Private Sub Decrypt_File()
ฟังก์ชันนี้ถูกเรียกเมื่อคุณคลิกการถอดรหัสลับ เรียกฟังก์ชันนี้ไม่ต่อไปนี้:
  • สร้างออบเจ็กต์ของคลาสCspParameter วัตถุนี้ถูกใช้ในการส่งผ่านพารามิเตอร์ไปยัง thatperforms CSP ประมวลผลที่เข้ารหัสลับ
  • สร้างออบเจ็กต์ของคลาสPasswordDeriveBytes วัตถุนี้จะใช้กับหมายเลขการสืบทอดมาจาก specifiedpassword

    หมายเหตุ เรา รหัสผ่านไม่ตายในโปรแกรม
  • เรียกวิธีการCryptDeriveKeyของคลาสPasswordDeriveBytes วิธีนี้ทำให้คีย์ที่เป็นข้อมูลผลลัพธ์ Isbased คีย์บนข้อมูลที่ป้อนเข้า
โปรแกรมนี้ใช้อัลกอริทึมการ SHA1 สำหรับ hashing และใช้อัลกอริทึมการ RC2 สำหรับการเข้ารหัสลับ นอกจากนี้สร้างออบเจ็กต์ของคลาสRC2CryptoServiceProvider วัตถุนี้ถูกใช้ในกระบวนการถอดรหัสลับ

รหัสเริ่มต้นแล้วคีย์และฟิลด์การเตรียมใช้งานแบบเวกเตอร์ของออบเจ็กต์RC2CryptoServiceProvider วัตถุRC2CryptoServiceProviderเป็น wrapper ที่สามารถเข้าถึงงานอัลกอริทึม RC2 CSP

รหัสเรียกวิธีการCreateDecryptorนอกจากนี้ วิธีการCreateDecryptorสร้างวัตถุตัวถอดรหัสลับสมมาตร โดยใช้คีย์ปัจจุบันและเวกเตอร์เตรียมใช้งานปัจจุบัน

ในตอนท้าย วิธีการTransformFinalBlockของคลาICryptoTransformไม่การถอดรหัสลับ โดยการกำหนดค่าของพารามิเตอร์ป้อนเข้าเป็นสตริงที่ถูกเข้ารหัสและ โดยการกำหนดความยาวของสายอักขระที่มีการเข้ารหัสลับ หลังจากที่เมธอดTransformFinalBlockเรียบร้อยแล้ว คุณได้รับกล่องข้อความที่บ่งชี้ว่า กระบวนการถอดรหัสลับได้เสร็จสมบูรณ์แล้ว ถ้ากระบวนการถอดรหัสลับได้เสร็จสมบูรณ์แล้ว โปรแกรมถอดรหัสสตริเขียนในแฟ้มผลลัพธ์

กลับไปด้านบน

คำแนะนำเพื่อเรียกใช้รหัส

ดู "รหัส สำหรับการเข้ารหัสลับ และ การถอดรหัสลับ"ส่วนสำหรับข้อมูล เกี่ยวกับวิธีการดาวน์โหลด แล้ว บันทึกแฟ้มไปยังโฟลเดอร์ C:\ โปรแกรมบนคอมพิวเตอร์ของคุณ

โปรแกรมที่เข้ารหัสลับ

  1. เปิดกลุ่มโครงการ EncryptGroup ใน Visual Basic 6.0 สิ่งที่ต้องทำนี้ คลิกสองครั้งแฟ้มEncryptGroup.vbg แฟ้ม TheEncryptGroup.vbg จะอยู่ใน C:\CryptographySample\EncryptInVB6folder
  2. ในการเรียกใช้เมนูใน Visual Basic 6.0 คลิกเริ่มการทำงานกับเต็มคอมไพล์ แบบฟอร์ม Windows ที่ชื่อ Form1appears Form1 จะมีส่วนติดต่อผู้ใช้สำหรับโปรแกรมเข้ารหัสลับ
  3. ในกล่องป้อน path\filename เต็มสำหรับ toencrypt เป็นแฟ้มพิมพ์เส้นทางของแฟ้มที่คุณต้องการเข้ารหัสลับ Touse ตัวอย่างแฟ้มที่มาพร้อมกับโปรแกรมเข้ารหัสลับ พิมพ์ thefollowing:
    c:\CryptographySample\input.txt
  4. กดแท็บ ชื่อของแฟ้มจัดเก็บ stringwill การเข้ารหัสลับปรากฏในกล่องชื่อและตำแหน่งที่ตั้งของ encryptedfile

    หมายเหตุ ในตัวอย่างนี้ เส้นทางของ isC:\CryptographySample\Input.enc เข้ารหัสลับแฟ้ม
  5. คลิกการเข้ารหัสลับ กล่องข้อความEncryptFilesปรากฏขึ้น
  6. คลิก ตกลง
  7. คลิกจบการทำงานเพื่อออกจาก theapplication
สายอักขระที่มีการเข้ารหัสลับปรากฏอยู่ในไฟล์ C:\CryptographySample\Input.enc

กลับไปด้านบน

โปรแกรม DecryptInVBNET

  1. เปิดโซลูชัน DecryptInVBNET ใน Microsoft Visual Studio.NET 2002 เมื่อต้องการทำเช่นนี้ คลิกสองครั้งที่แฟ้มDecryptInVBNET.sln แฟ้ม DecryptInVBNET.sln จะอยู่ในโฟลเดอร์ theC:\CryptographySample\DecryptInVBNET

    หมายเหตุ ถ้าคุณกำลังใช้ Microsoft Visual Studio .NET 2003 หรือ MicrosoftVisual Studio 2005 คุณได้รับกล่องโต้ตอบที่พร้อมท์ให้คุณปรับรุ่น theproject และโซลูชัน Microsoft Visual Studio .NET 2003 หรือ MicrosoftVisual Studio 2005 คลิก ใช่
  2. บนเมนูแก้ไขจุดบกพร่องใน Visual Studio .NET orin Visual Studio 2005 คลิกเริ่ม Isnamed ที่ Form1 ฟอร์ม Windows ปรากฏขึ้น Form1 จะมีส่วนติดต่อผู้ใช้แบบ DecryptInVBNETprogram
  3. ในกล่องป้อน path\filename เต็มสำหรับ todecrypt เป็นแฟ้มพิมพ์เส้นทางของแฟ้มที่คุณต้องการถอดรหัสลับ แฟ้มตัวอย่างที่มาพร้อมกับโปรแกรม DecryptInVBNET, Touse พิมพ์ thefollowing:
    c:\CryptographySample\input.enc
  4. กดแท็บ ชื่อของไฟล์ stringwill แบบถอดรหัสลับเก็บไว้ปรากฏในกล่องชื่อและตำแหน่งที่ตั้งของ decryptedfile

    หมายเหตุ ในตัวอย่างนี้ เส้นทางของ isC:\CryptographySample\Input.dec การถอดรหัสลับแฟ้ม
  5. คลิกการถอดรหัสลับ กล่องข้อความDecryptInVBNETปรากฏขึ้น
  6. คลิก ตกลง
  7. คลิกจบการทำงานเพื่อออกจาก theapplication
สายอักขระแบบถอดรหัสลับปรากฏอยู่ในไฟล์ C:\CryptographySample\Input.dec

กลับไปด้านบน
ข้อมูลอ้างอิง
สำหรับข้อมูลเพิ่มเติม โปรดเยี่ยมชมเว็บไซต์ Microsoft Developer Network (MSDN) ต่อไปนี้: สำหรับข้อมูลเพิ่มเติม คลิกหมายเลขบทความต่อไปนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
277786 การเข้ารหัส/ถอดรหัสลับข้อมูลทั่วทั้งระบบ
กลับไปด้านบน

คำเตือน: บทความนี้ได้รับการแปลโดยอัตโนมัติ

คุณสมบัติ

รหัสบทความ: 821762 - การตรวจสอบครั้งสุดท้าย: 07/25/2015 15:54:00 - ฉบับแก้ไข: 6.0

Microsoft Visual Basic 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft Visual Basic 6.0 Professional Edition

  • kbvs2005applies kbvs2005swept kbhowtomaster kbprovider kbcrypt kbapi kbmt KB821762 KbMtth
คำติชม