存储机密数据


如果你想要存储只有你可以检索的机密的数据,你能使用一个有趣的方法:让某些纯文本转换成一个安全字符串,然后将转换后的安全字符串保存到磁盘里。

$storage = "$env:temp\secretdata.txt"
$mysecret = 'Hello, I am safe.'

$mysecret | 
  ConvertTo-SecureString -AsPlainText -Force |
  ConvertFrom-SecureString |
  Out-File -FilePath $storage

然后你可以看到这个文件,它看起来像这样:

<#
PS C:\> 'Hello, I am safe.'|ConvertTo-SecureString -AsPlainText -Force |  Conver
tFrom-SecureString
01000000d08c9ddf0115d1118c7a00c04fc297eb01000000c83b0697d08fd24c9a91f2e89c74f95
f000000000200000000001066000000010000200000003ba0044f5d8591e27785d7dc979abe2e20
cbad8c9c2f7658d43a1bc6333bb7ae000000000e8000000002000020000000f6191f2cd2b8f994b
bcffc57d80537b77b7d9b24e2b540108e25ffcac64c909b30000000b8294120a9caa1d6d38748de
e7593d3a8a04037a9a1c4b6e106c1d27e4d206fd268fc327ed7759380eea7a7cec5741584000000
0cd14eed8ae510133fc5268ec2f2198beca5a8b866ae69b574809f8388f9a6412502c80ebfd71cb
e2518ab0faecf893baffcd332f5afe5429a65ebc937f580950
#>

你的秘密是自动由WINDOS内置的安全API接口加密构建的(DPAPI),用身份和机器作为加密密钥。所以只有你(或程序替你运行)才能在被加密的电脑上解密。

还原秘密数据,请尝试:

$storage = "$env:temp\secretdata.txt"
$secureString = Get-Content -Path $storage | 
  ConvertTo-SecureString

$ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToGlobalAllocUnicode($secureString)
$mysecret = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($ptr) 

$mysecret

OK,你现在得到了和从前一样的加密前的数据

现在,也可以试一下其它用户,你将发现不能使用其它用户解密这个加密文件,并且也不能从其它电脑。

原文地址:Storing Secret Data

 

本文链接: https://www.pstips.net/storing-secret-data.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注