2017年2月2日

【PowerShell】セキュア文字列を暗号化された標準文字列に変換する


セキュア文字列を暗号化された標準文字列に変換するには、ConvertFrom-SecureStringを使用します。

構文
ConvertFrom-SecureString [-SecureString] <セキュア文字列> [-Key <バイト配列>]

ConvertFrom-SecureString [-SecureString] <セキュア文字列> [[-SecureKey] <セキュア文字列>]


PS C:\work> $pass = Read-Host -AsSecureString "パスワー力してください"
パスワー入力してください: *********
PS C:\work>
PS C:\work> ConvertFrom-SecureString $pass
01000000d08c9ddf0115d1118c7a00c04fc297eb01000000df361c139a452a4baaf5cc5139ce7d9c00000000020000000000
10660000000100002000000046613cf7087028a133564e007372ab6405437b1be966752b860230149aa97766000000000e80
000000020000200000006d0393512347248822ab99e737858fa5b49d345382e264c97c1b9b244771b56e20000000adeafb68
123ccc4f1905e372054ea61c8ba7015fa49d5fe86c9000e5bc46b68e40000000c10b922c0aac0f23ea4409f6c292feb2991c
4f4d09f6b52bbb7763312c2028d308a969e260672afa401a3a89ba66d613ddc75d73b29b4b9d1c2d8f7775444d3a
この例では、Read-HostのAsSecureStringパラメータを使って得られたセキュア文字列を暗号化された標準文字列に変換しています。

ちなみにこの暗号化は、Windows Data Protection API(DPAPI)を使用して暗号化されています。


Key

Keyパラメータでバイト配列のキーを指定することによりAESアルゴリズムにより暗号化されます。
PS C:\work> ConvertFrom-SecureString $pass -Key (16,89,3,8,11,20,2,55,1,24,5,9,6,4,22,31)
76492d1116743f0423413b16050a5345MgB8AFUAMQA1ADgAVQB5AEwATABhAEQAYQBXAEEAYgA2AHYARQBoAFgANgBTAGcAPQA9
OQBhADEANgA3ADYAZgAyADIAYwBhAGEAYQA3AGYAYwBmADAAMQA4AGIAMwAxAGYAMgBhADAAYQAyADMAZAA1ADgAMwBjADEANgA0
NQA2AGUAMAAwADkANgA=
この例では、キー長を128bitで生成しています。
バイト配列の長さは、128bit(8×16)なので16になります。
AESでサポートされているキー長は、128bit、192bit、256bitですので、Keyパラメータで指定するバイト配列の長さもそれに合わせる必要があります。



スポンサーリンク