ค้นหาเว็บไซต์

ConvertTo-SecureString (Microsoft.PowerShell.Security)


ConvertTo-SecureString

โมดูล :
Microsoft.PowerShell.Security

แปลงข้อความธรรมดาหรือสตริงที่เข้ารหัสเป็นสตริงที่ปลอดภัย

ไวยากรณ์

ConvertTo-SecureString
              [-String] <String>
              [[-SecureKey] <SecureString>]
              [<CommonParameters>]
ConvertTo-SecureString
              [-String] <String>
              [-AsPlainText]
              [-Force]
              [<CommonParameters>]
ConvertTo-SecureString
              [-String] <String>
              [-Key <Byte[]>]
              [<CommonParameters>]

คำอธิบาย

ConvertTo-SecureString cmdlet จะแปลงสตริงมาตรฐานที่เข้ารหัสเป็นสตริงที่ปลอดภัย นอกจากนี้ยังสามารถแปลงข้อความธรรมดาเป็นสตริงที่ปลอดภัยได้ ใช้กับ ConvertFrom-SecureString และ Read-Host สตริงที่ปลอดภัยที่สร้างโดย cmdlet สามารถใช้กับ cmdlet หรือฟังก์ชันที่ต้องใช้พารามิเตอร์ประเภท SecureString สตริงที่ปลอดภัยสามารถแปลงกลับเป็นสตริงมาตรฐานที่เข้ารหัสได้โดยใช้ cmdlet ConvertFrom-SecureString ทำให้สามารถจัดเก็บไว้ในไฟล์เพื่อใช้ในภายหลังได้

หากสตริงมาตรฐานที่กำลังแปลงถูกเข้ารหัสด้วย ConvertFrom-SecureString โดยใช้คีย์ที่ระบุ จะต้องระบุคีย์เดียวกันนั้นเป็นค่าของ คีย์ หรือ SecureKey ของ cmdlet ConvertTo-SecureString

บันทึก

โปรดทราบว่าตาม DotNet เนื้อหาของ SecureString จะไม่ถูกเข้ารหัสบนระบบที่ไม่ใช่ Windows

ตัวอย่าง

ตัวอย่างที่ 1: แปลงสตริงที่ปลอดภัยเป็นสตริงที่เข้ารหัส

ตัวอย่างนี้แสดงวิธีการสร้างสตริงที่ปลอดภัยจากอินพุตของผู้ใช้ แปลงสตริงที่ปลอดภัยเป็นสตริงมาตรฐานที่เข้ารหัส จากนั้นแปลงสตริงมาตรฐานที่เข้ารหัสกลับเป็นสตริงที่ปลอดภัย

PS C:\> $Secure = Read-Host -AsSecureString
PS C:\> $Secure
System.Security.SecureString
PS C:\> $Encrypted = ConvertFrom-SecureString -SecureString $Secure
PS C:\> $Encrypted
01000000d08c9ddf0115d1118c7a00c04fc297eb010000001a114d45b8dd3f4aa11ad7c0abdae98000000000
02000000000003660000a8000000100000005df63cea84bfb7d70bd6842e7efa79820000000004800000a000
000010000000f10cd0f4a99a8d5814d94e0687d7430b100000008bf11f1960158405b2779613e9352c6d1400
0000e6b7bf46a9d485ff211b9b2a2df3bd6eb67aae41
PS C:\> $Secure2 = ConvertTo-SecureString -String $Encrypted
PS C:\> $Secure2
System.Security.SecureString

คำสั่งแรกใช้พารามิเตอร์ AsSecureString ของ cmdlet Read-Host เพื่อสร้างสตริงที่ปลอดภัย หลังจากที่คุณป้อนคำสั่ง อักขระใดๆ ที่คุณพิมพ์จะถูกแปลงเป็นสตริงที่ปลอดภัย จากนั้นบันทึกไว้ในตัวแปร $Secure

คำสั่งที่สองแสดงเนื้อหาของตัวแปร $Secure เนื่องจากตัวแปร $Secure มีสตริงที่ปลอดภัย PowerShell จึงแสดงเฉพาะประเภท System.Security.SecureString

คำสั่งที่สามใช้ ConvertFrom-SecureString cmdlet เพื่อแปลงสตริงที่ปลอดภัยในตัวแปร $Secure ให้เป็นสตริงมาตรฐานที่เข้ารหัส โดยจะบันทึกผลลัพธ์ไว้ในตัวแปร $Encrypted

คำสั่งที่สี่แสดงสตริงที่เข้ารหัสในค่าของตัวแปร $Encrypted

คำสั่งที่ห้าใช้ ConvertTo-SecureString cmdlet เพื่อแปลงสตริงมาตรฐานที่เข้ารหัสในตัวแปร $Encrypted กลับเป็นสตริงที่ปลอดภัย โดยจะบันทึกผลลัพธ์ไว้ในตัวแปร $Secure2 คำสั่งที่หกแสดงค่าของตัวแปร $Secure2 ประเภท SecureString บ่งชี้ว่าคำสั่งสำเร็จ

ตัวอย่างที่ 2: สร้างสตริงที่ปลอดภัยจากสตริงที่เข้ารหัสในไฟล์

ตัวอย่างนี้แสดงวิธีสร้างสตริงที่ปลอดภัยจากสตริงมาตรฐานที่เข้ารหัสซึ่งบันทึกไว้ในไฟล์

$Secure = Read-Host -AsSecureString
$Encrypted = ConvertFrom-SecureString -SecureString $Secure -Key (1..16)
$Encrypted | Set-Content Encrypted.txt
$Secure2 = Get-Content Encrypted.txt | ConvertTo-SecureString -Key (1..16)

คำสั่งแรกใช้พารามิเตอร์ AsSecureString ของ cmdlet Read-Host เพื่อสร้างสตริงที่ปลอดภัย หลังจากที่คุณป้อนคำสั่ง อักขระใดๆ ที่คุณพิมพ์จะถูกแปลงเป็นสตริงที่ปลอดภัย จากนั้นบันทึกไว้ในตัวแปร $Secure

คำสั่งที่สองใช้ ConvertFrom-SecureString cmdlet เพื่อแปลงสตริงที่ปลอดภัยในตัวแปร $Secure ให้เป็นสตริงมาตรฐานที่เข้ารหัสโดยใช้คีย์ที่ระบุ เนื้อหาจะถูกบันทึกในตัวแปร $Encrypted

คำสั่งที่สามใช้ตัวดำเนินการไปป์ไลน์ (|) เพื่อส่งค่าของตัวแปร $Encrypted ไปยัง Set-Content cmdlet ซึ่งจะบันทึก ค่าในไฟล์ Encrypted.txt

คำสั่งที่สี่ใช้ Get-Content cmdlet เพื่อรับสตริงมาตรฐานที่เข้ารหัสในไฟล์ Encrypted.txt คำสั่งใช้ตัวดำเนินการไปป์ไลน์เพื่อส่งสตริงที่เข้ารหัสลับไปยัง cmdlet ConvertTo-SecureString ซึ่งจะแปลงเป็นสตริงที่ปลอดภัยโดยใช้คีย์ที่ระบุ ผลลัพธ์จะถูกบันทึกไว้ในตัวแปร $Secure2

ตัวอย่างที่ 3: แปลงสตริงข้อความธรรมดาเป็นสตริงที่ปลอดภัย

คำสั่งนี้จะแปลงสตริงข้อความธรรมดา P@ssW0rD! ให้เป็นสตริงที่ปลอดภัยและจัดเก็บผลลัพธ์ไว้ในตัวแปร $Secure_String_Pwd

เริ่มตั้งแต่ PowerShell 7 เป็นต้นไป ไม่จำเป็นต้องใช้พารามิเตอร์ Force เมื่อใช้พารามิเตอร์ AsPlainText อย่างไรก็ตาม การรวมพารามิเตอร์ Force จะทำให้คำสั่งนี้เข้ากันได้กับเวอร์ชันก่อนหน้า

$Secure_String_Pwd = ConvertTo-SecureString "P@ssW0rD!" -AsPlainText -Force

คำเตือน

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

พารามิเตอร์

-AsPlainText

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

พิมพ์ :

SwitchParameter

ตำแหน่ง:

1

ค่าเริ่มต้น:

None

ที่จำเป็น:

False

ยอมรับอินพุตไปป์ไลน์:

False

ยอมรับอักขระตัวแทน:

False

-Force

เริ่มตั้งแต่ PowerShell 7 เป็นต้นไป พารามิเตอร์ Force ไม่จำเป็นอีกต่อไปเมื่อใช้พารามิเตอร์ AsPlainText แม้ว่าจะไม่ได้ใช้พารามิเตอร์ แต่ก็ไม่ได้ถูกเอาออกเพื่อให้เข้ากันได้กับ PowerShell เวอร์ชันก่อนหน้า

พิมพ์ :

SwitchParameter

ตำแหน่ง:

2

ค่าเริ่มต้น:

None

ที่จำเป็น:

False

ยอมรับอินพุตไปป์ไลน์:

False

ยอมรับอักขระตัวแทน:

False

-Key

ระบุคีย์เข้ารหัสที่ใช้ในการแปลงสตริงความปลอดภัยดั้งเดิมเป็นสตริงมาตรฐานที่เข้ารหัส ความยาวของคีย์ที่ถูกต้องคือ 16, 24 และ 32 ไบต์

พิมพ์ :

ไบต์[]

ตำแหน่ง:

ตั้งชื่อ

ค่าเริ่มต้น:

None

ที่จำเป็น:

False

ยอมรับอินพุตไปป์ไลน์:

False

ยอมรับอักขระตัวแทน:

False

-SecureKey

ระบุคีย์เข้ารหัสที่ใช้ในการแปลงสตริงความปลอดภัยดั้งเดิมเป็นสตริงมาตรฐานที่เข้ารหัส ต้องระบุคีย์ในรูปแบบของสตริงที่ปลอดภัย สตริงที่ปลอดภัยจะถูกแปลงเป็นอาร์เรย์ไบต์เพื่อใช้เป็นคีย์ ความยาวของคีย์ความปลอดภัยที่ถูกต้องคือ 8, 12 และ 16 จุดโค้ด

พิมพ์ :

SecureString

ตำแหน่ง:

1

ค่าเริ่มต้น:

None

ที่จำเป็น:

False

ยอมรับอินพุตไปป์ไลน์:

False

ยอมรับอักขระตัวแทน:

False

-String

ระบุสตริงที่จะแปลงเป็นสตริงที่ปลอดภัย

พิมพ์ :

String

ตำแหน่ง:

0

ค่าเริ่มต้น:

None

ที่จำเป็น:

True

ยอมรับอินพุตไปป์ไลน์:

True

ยอมรับอักขระตัวแทน:

False

อินพุต

สตริง

คุณสามารถไพพ์สตริงที่เข้ารหัสมาตรฐานไปที่ cmdlet นี้

เอาท์พุต

สตริงที่ปลอดภัย

cmdlet นี้ส่งคืนวัตถุ SecureString ที่สร้างขึ้น

หมายเหตุ

อักขระบางตัว เช่น อิโมติคอน สอดคล้องกับจุดโค้ดหลายจุดในสตริงที่มีอักขระเหล่านั้น หลีกเลี่ยงการใช้อักขระเหล่านี้เนื่องจากอาจทำให้เกิดปัญหาและความเข้าใจผิดเมื่อใช้เป็นรหัสผ่าน

บทความที่เกี่ยวข้อง