Or *_*ren 1 encryption streaming openssl aes
这是我的shell脚本的代码,static.key包含我的随机密钥.
hexKey=$(cat static.key | hexdump -e '16/1 "%02x"')
echo $hexKey
hexIV="0"
echo $hexIV
openssl aes-128-cbc -e -in logo-1.ts -out logo-enc-1.ts -p -nosalt -K ${he-iv ${hexIV}
Run Code Online (Sandbox Code Playgroud)
运行时我遇到一些错误.
(output:
non-hex digit
invalid hex iv value
: command not found
)
Run Code Online (Sandbox Code Playgroud)
也许有人知道这个问题.我已经好几天了.
该错误意味着OpenSSL对IV的值包含非十六进制字符(即,除了0123456789abcdefABCDEF之外的其他内容).
AES128密钥是128/8 = 16字节,因此密钥应该有32个字符.IV是16个字节,对应于AES块大小,OpenSSL会将单个"0"转换为16个零字节.这是一个很好的命令的例子:
$ echo -n "hello" > in
$ openssl aes-128-cbc -e -in in -out out -p -nosalt \
-K 000102030405060708090a0b0c0d0e0f -iv 000102030405060708090a0b0c0d0e0f
$ cat out | hexdump -e '16/1 "%02x"'
8326dc340c564d49790650a59260fea0
Run Code Online (Sandbox Code Playgroud)
现在用非十六进制字符替换IV的最后一个字符,并看到你得到的错误相同.
$ openssl aes-128-cbc -e -in in -out out -p -nosalt \
-K 000102030405060708090a0b0c0d0e0f -iv 000102030405060708090a0b0c0d0e0q
$ cat out | hexdump -e '16/1 "%02x"'
non-hex digit
invalid hex iv value
Run Code Online (Sandbox Code Playgroud)
如果您粘贴的是您正在运行的真实代码,则问题很明显.首先,这-K ${he-iv ${hexIV}意味着什么?其次,论证-K是给出关键.你错过-iv了给IV.你甚至错过了一个闭合支撑.
假设static.key有16个字节,这可能会解决您的问题:
openssl aes-128-cbc -e -in logo-1.ts -out logo-enc-1.ts -p -nosalt -K $hexKey -iv $hexIV
Run Code Online (Sandbox Code Playgroud)
作为最后一个提示,如果你正在使用bash,那么运行你的脚本-x作为bash的参数,它将在它扩展变量后打印它执行的每一行,这样你就可以看到它正在做什么:
$ /bin/bash -x my_script
+ hexKey=0
+ hexIV=0
+ openssl aes-128-cbc -e -in in -out out -p -nosalt -K 0 -iv 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5948 次 |
| 最近记录: |