我正在研究一種將AES-128加密應用於HLS流的工具。這裏是我的Ruby代碼至今:將OpenSSL IV轉換爲十六進制?
aes = OpenSSL::Cipher::AES.new(128, :CBC)
aes.encrypt
aes_key = aes.random_key
aes_iv = aes.random_iv
現在,當我輸出aes_iv,它給了我什麼明確的是,我的shell的環境鬥爭轉化爲文本只是二進制數據。這就說得通了。我需要的是將其轉換爲十六進制表示。
的IV必須在HLS清單文件被表示爲這樣:
#EXT-X-KEY:METHOD=AES-128,URI="crypt0.key",IV=0xdc03cfac7ea13f69dd49c1411c14c264
在該行上的IV屬性被描述爲這樣:
「的值是一個十六進制整數,指定初始化向量與密鑰一起使用,IV屬性出現在協議版本2中。「
我有兩個問題:
- 我怎樣才能確保random_iv是設置一個適當的IV是與HLS規範兼容?
- 如何將random_iv的二進制IV輸出轉換爲所需的十六進制值?
我試着這樣做:
aes_iv.unpack("H*")
和aes_iv.unpack("h*")
,返回類似 「4b56da546d807eb0870170b4e03d77dd」,這似乎是正確的。但是,當我將其指定爲IV時,視頻無法播放。
我已經將問題隔離到IV中,就好像我不調用random_iv並指定「00000000000000000000000000000000」的IV,它的工作原理。