Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
某些情况下,由PowerShell脚本从Base64解码的数据已损坏_Powershell_Base64 - Fatal编程技术网

某些情况下,由PowerShell脚本从Base64解码的数据已损坏

某些情况下,由PowerShell脚本从Base64解码的数据已损坏,powershell,base64,Powershell,Base64,使用Base64中编码的一些二进制数据,我使用下面的powershell脚本将其转换回二进制。例如,它可以很好地处理由C#代码编码的PDF文件,以便包含在XML文档中 但现在我尝试使用相同的脚本处理不同类型的二进制数据-使用Bouncy Castle library for.NET使用PGP加密的文本。而且,此解码的文件无法解密(PGP错误34),即使下面的同一个Base 64字符串保存在SQL数据库varchar(max)列中,我也会将其读回并解密。为什么PowerShell对Base64的解

使用Base64中编码的一些二进制数据,我使用下面的powershell脚本将其转换回二进制。例如,它可以很好地处理由C#代码编码的PDF文件,以便包含在XML文档中

但现在我尝试使用相同的脚本处理不同类型的二进制数据-使用Bouncy Castle library for.NET使用PGP加密的文本。而且,此解码的文件无法解密(PGP错误34),即使下面的同一个Base 64字符串保存在SQL数据库
varchar(max)
列中,我也会将其读回并解密。为什么PowerShell对Base64的解码与c代码不同?两者都在使用.NET

$b64      = '4oCmAgwDw4HCq8O3FcKgVHHDpQEPw79Fw5E1xZLDoyLCtB9+D8OqHMKdQMKl4oCTGMOBwqBK4oCURAbDug/Cr8OGFXPDk8K4MMOTw4/igKF2w71Mw64VJHfigqzCoELDsFLCoxvDnsKwEcO0MsK4aMOSWcOIOsOQWMOAw5UydcKvwrUmw6BCw6oaDsWhw5/DlnoKw5bCokdjTMOfSBDFoC5KxaHCrR/DoMOtbQAUw6/DvCDDujJfw7YcxZPigJM4w4HDmMOZABAuw67CkMOCwp3DscK5KMOCxaHCsOKAsMWhenLDh8ObAkvCt8O5XzA7w7PFvcO6bcK2SQ9iwp3DkcKd4oCcbMOqYcW+w6pz4oC6Y+KAmcKowqcIAzIlw5LDuyrCvsKwTF7FoMO7ZH8kaOKAoMKPb8OOSSAaeF8VT8WhVMOew6gwwqfDrEFXRkjDtsO14oCdw4UULUF9w6HDtMO+wrzCqUHDl8OYw5sqZl5Dwr0j4oCYWsOK4oCaxZLDmMK8ZCldJ0/DtsOvesO4w5PDkmYlBOKAk8uGwrnCtMK6y4bDtMOwEMOfRUnigLoZK0ZXw4wea0IEw5fDgMOwWWlpWFbDoHtRxb3CtsOhwo3igKExw4/igJrCrGLDnMKqw7DigJPCo8OzIMWSA8OVC2fDlMOqwo8fw63igqx4EzFB4oCcV1hdQjhXRcOWMcKgZXXCuknDiDXDnVAUy5xRLMOlAsW4w5TCvMKsxaHDmBDDkDrDgcONwo3CjUkuHAXDhTXigJjDlHfigKBXacKieMKq4oCTPVgCLgxxdsOhfBPDhOKAlMOzIDZkU8OKIDUfYkHDilwtxb11w4RWB8KhZRHCrMOpBjDDrsOUw5jCowM0wo3Cu1XDr8O4KmkKw4zigJTigKLigJzigJ4ewrDigKLDu8K1wqXDo2I8y4bDnUpnwq9mw6rCvcO4XnDCocKySChiw4nDuAM44oCdbeKAmcOYdcKBXOKAmcO3Q8W+XMOIMMOQ4oCmw7rCusONDWHDnwvDk8O7w5Ydwqojw51GPnosw5vDrHsSPCIsw53DkGIOy4bFkhHCocOHwr3Dow3DtsOGw73Dk2JY4oKsBxd7w4knT3XFuGJBwrd34oSiXsKtCwPCqhzDpBZZRxF2b8OGwqnDrcOqaQfDiBjFkgZdw44GdwDDrsOOLQ=='
$filename = '1.bin'

$bytes = [Convert]::FromBase64String($b64)
[IO.File]::WriteAllBytes($filename, $bytes)
(只是想在这里加载)

这里可能需要更多信息。您的代码获取字符串并将其转换为原始二进制,然后将其输出到文件。如果您随后重新导入它,并将其转换回,则它正在工作


您是否尝试过从两个过程中获取数据并比较输出?例如,一个可能有一个头,而另一个没有。

我已经考虑过这样做,但是如果我发现生产代码和上面的脚本生成的二进制数据不同,那么该测试会有什么价值?我认为PGP错误34很明显是不同的,所以没有麻烦编写测试工具。Ajeh:我怀疑问题不在于编码,而在于标题。例如,证书请求需要“-Begin”语法。是否有一个丢失的标题或类似的标题阻止读取原始数据,这是我的问题所在。ASCII armor已关闭。