2017-09-19 133 views
0

我有以下字节数组,我想要获得十六进制格式,以便使用aes-256-ecb解密加密的字符串。 (PowerShell使用AES加密,如果你在“ConvertFrom-SecureString的”功能键指定参数)Powershell字节数组到十六进制

为了检查这一点,我通过使用OpenSSL的验证:

回声“mysecretdata” | OpenSSL的ENC -d -AES-256-ECB -K 303534303438303439303939303438303938303937303435303530303530303937303537303435303439303439303130310a

十六进制字符串太长 无效的十六进制键值

我缺少什么?

谢谢。

回答

0

您可以使用每个单独字节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 '' 

(如果那是你的实际密钥,您可能希望避免从此再次使用它,现在它是公共知识;-))

+0

谢谢Mathias!现在十六进制键值似乎是正确的,但现在我看到一个解密错误。坏解密 140097927906968:错误:0606506D:数字包络例程:EVP_DecryptFinal_ex:错误的最终块长度:evp_enc.c:518: GPQ3S/2d)k〜Jjz + - – d3sync

+0

从你的例子看起来你试图解密明文(这是没有意义的),并提供密文为重点 –

+0

其实我试图用这个字符串(前一个只是一个例子):$回声76492d1116743f0423413b16050a5345MgB8AHoATQBZAEMAVgAyAG4ATQBOAGIAZABRAHIAMAA0AEUANgBKAFUAUABXAHcAPQA9AHwAYQAzADkANAAwADMAMQAzAGMAMgA1AGUAZAAxAGQAZQA1ADUAZgA2AGEAMgA2ADQAYQA2ADAAZQA5AGYANQBjAGEANgBkAGYAZQA1ADkAYQA5AGIANgBmAGYAYgBjADQAZgBiADcAMABiADAAYgBhADQAMABkADIAMAA3AGEAZgA = | OpenSSL的ENC -d -AES-256-ECB -K 0036003000310063003000620061002D0032003200610039002D003100310065 )2AP @ $ 坏解密 140645963531928:错误:0606506D:数字信封套路:EVP_DecryptFinal_ex:错误的最后块长度:evp_enc.c:518: – d3sync

相关问题