Des

ANSI X9.9 密碼標準

  • May 26, 2016

我正在嘗試創建一條ISO8583 Rev93消息。ANSI X9.9中生成MAC密鑰的標準方法是什麼

DES-CBC加密算法用於加密消息並生成MAC。

  • 我應該從基於 ANSI X9.9 標準的加密字節數組中取出多少字節?8 還是 16?我想我應該取 4 個字節(8 個 ASCII 字元)並將它們放在欄位 128(MAC)上。但對此非常懷疑。
  • 客戶提供給我的 MAC 密鑰是 16 個字元。(如1234567890123456)。我應該將其轉換為 8 字節密鑰嗎?還是一個 16 字節的密鑰?(基於ISO8583 Rev93ANSI X9.9

謝謝你。

ANSI X9.9 使用 DES 進行加密——這些密鑰長度為 56 位,對於 3DES 為 112 位。幾年前,金融界大多轉向 3DES,因此密鑰通常為 112 位。通常它們會添加奇偶校驗位(每 7 位密鑰 1 個),因此以 64 位(單 DES)或 128 位(三 DES)值傳輸。

當以人類可讀的形式呈現時,它們幾乎總是顯示為十六進制,因此典型的 3DES 密鑰將顯示為 32 個字元,從 0 到 9 和 AF。是否需要將其轉換回二進制取決於您使用的加密 API - 請閱讀文件。

對於 ISO8583,通常的做法是在 CBC 模式下使用 3DES 計算完整的 64 位 MAC,然後將結果的前 4 個字節放入 ISO8583 消息的第 64 或第 128 欄位 - 如果 65-127 中的任何欄位是欄位 128如果僅使用欄位 1-63,則為欄位 64。該欄位的最後 4 個字節通常只是用零填充。

在一些遺留系統中,可以傳輸完整的 64 位 MAC 值。

我還見過使用 ECB 模式而不是 CBC 的古代系統(20 多年前)——基本上只是將消息的每 8 個字節塊 XOR 在一起,然後對結果應用單個 DES 加密。這是非常不安全的。

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