如果你想要存储只有你可以检索的机密的数据,你能使用一个有趣的方法:让某些纯文本转换成一个安全字符串,然后将转换后的安全字符串保存到磁盘里。
$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
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!