我有以下字节数组,我想获取十六进制格式,以便使用aes-256-ecb解密加密字符串。(如果您在ConvertFrom-SecureString
函数中指定密钥参数,PowerShell将使用AES加密)
为了检查这一点,我使用openssl验证:
echo 'mysecretdata' | openssl enc -d -aes-256-ecb -K 303534303438303439303939303438303938303937303435303530303530303937303537303435303439303439303130310a
- 十六进制字符串太长,十六进制密钥值无效**
我错过了什么?
3条答案
按热度按时间anhgbhbe1#
可以对每个字节使用
X2
字符串来获取其十六进制表示,然后使用-join
运算符来连接字符串:(If这是你真正的密钥,你可能希望避免再次使用它,既然它是公开的;- ))
piztneat2#
如果可以使用连字符,可以使用
string System.BitConverter::ToString(byte[] value)
静态方法:逗号操作符(
,
)确保您的字节数组(或可转换为该数组的对象)按原样传入(通过ForEach-Object
(%
)在一个1元素数组上运行脚本块),而不是迭代。如果这是不可避免的,那么后一个示例使用点源操作符(
.
)、脚本块和数组子表达式操作符(@( )
)从$input
自动函数变量(一个IEnumerator
,notIEnumerable
)中收集元素,并生成一个ToString
满意的数组。az31mfrm3#
这是将字节数组转换为HexString的通用方法:
给出以下结果:010月20日星期三
在你最初的问题中我根本没有看到数组,但是AES256密钥必须是32字节长(用64个字符的十六进制字符串表示)。