Des
ANSI X9.9 密碼標準
我正在嘗試創建一條
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 Rev93
和ANSI 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 加密。這是非常不安全的。