Aes

Java - 帶有 20 字節數據包的 AES

  • September 19, 2017

我有 20 個字節的數據需要加密並發送到藍牙節點。主要問題是接收節點只接受 20 字節的數據包。此外,我不能一個接一個地發送多個數據包,因為節點在收到數據包後直接斷開連接。然後該節點連接到網狀網路並將數據包推送到網路中的所有節點。

有沒有辦法使用 AES 設置加密塊大小?我的電氣工程師說 AES128 CCM 內置在他的韌體程式 IDE 中,並且能夠在他的身邊做到這一點。老實說,我不相信他。

如果我不能使用 AES 發送 20 個加密字節,那麼什麼加密方法可以?

將此答案作為先前答案的簡化和擴展(來自 Squeamish Ossifrage)

AES-128 加密將塊大小指定為 16 字節。由於我正在加密 20 個字節,因此添加了填充,這使我的總輸出為 32 個字節,

您可以使用CTR 模式,無需任何填充即可使用。它有效地創建了一個流密碼,因此如果您有 20 個字節的數據,則輸出是 20 個字節的數據。

儘管您仍然需要鹽/計數器和身份驗證標籤。但是 - 這取決於您的選擇。你能使用隱式計數器嗎?

有人已經提到了Format Preserving Encryption,所以 - 如果你沒有更多的空間用於 salt/counter,你只需要使用一個常量 salt,並且沒有任何身份驗證標籤接受一些執行緒向量。

引用自:https://crypto.stackexchange.com/questions/51618