d3s*_*ync 4 arrays encryption powershell byte
我有以下字节数组,我想获得十六进制格式,以便使用aes-256-ecb解密加密的字符串.(如果在"ConvertFrom-SecureString"函数中指定键参数,powershell将使用AES加密)
为了检查这一点,我使用openssl进行验证:
echo'mysecretdata'| openssl enc -d -aes-256-ecb -K 303534303438303439303939303438303938303937303435303530303530303937303537303435303439303439303130310a
十六进制字符串太长无效的十六进制键值
我错过了什么?
谢谢.
您可以X2在每个单独的字节上使用格式字符串来获取它的十六进制表示,然后使用-join运算符来连接字符串:
$bytes = 0,54,0,48,0,49,0,99,0,48,0,98,0,97,0,45,0,50,0,50,0,97,0,57,0,45,0,49,0,49,0,101
$hexString = ($bytes|ForEach-Object ToString X2) -join ''
Run Code Online (Sandbox Code Playgroud)
(如果这是你的实际密钥,你可能想避免再次使用它,现在它是公共知识;-))
如果您可以使用string System.BitConverter::ToString(byte[] value)连字符,则可以使用静态方法:
PS> $bytes = 0,7,14,21,28,35,42
PS> [System.BitConverter]::ToString($bytes)
00-07-0E-15-1C-23-2A
PS>
PS> # If you'd like to use this in a pipeline:
PS> ,$bytes | % { [System.BitConverter]::ToString($_) }
00-07-0E-15-1C-23-2A
PS>
PS> # If you can't obtain a byte[]-compatible input:
PS> $bytes | . { [System.BitConverter]::ToString(@($input)) }
00-07-0E-15-1C-23-2A
Run Code Online (Sandbox Code Playgroud)
的逗号操作符(,)可以确保您字节数组(或对象可浇注到例如)在通过(经由ForEach-Object(%)运行在1个元素的数组的脚本块),因为它是,而不是遍历。
如果这是不可避免的,那么后一个示例使用点源运算符 ( .)、脚本块和数组子表达式运算符 ( @( ))从$input自动函数变量 (an IEnumerator, not IEnumerable ) 中收集项并生成一个ToString满意的数组。
| 归档时间: |
|
| 查看次数: |
5834 次 |
| 最近记录: |