我試圖進入密碼,相互認證等,並認爲它可能是很好的看到什麼是「在市場上」。現在,cipurse國家在其規格這樣的詞來生成會話密鑰:爲Cipurse(Java Card)創建AES會話密鑰?
k0 = AES (key = PAD2 (kP) XOR PAD (rT), kID) XOR kID
,其中K0是會話密鑰KP是一個卡上計算的關鍵,RT是來自終端的響應。 PAD表示填充(前導零),PAD 2表示雙填充(前導零),kID表示卡的祕密密鑰。
現在,據我所知,我創建了一個關鍵是這樣的:
AESKey k0_pre = (AESKey) KeyBuilder.buildKey(KeyBuilder.TYPE_AES_TRANSIENT_DESELECT, KeyBuilder.LENGTH_AES_128, false);
k0_pre.clearKey();
k0_pre.setKey(key, (short) 0);
現在我有一個問題是關於一點點逗號nameingly
鍵= PAD2(KP) XOR PAD(RT), KID
setkey的需要byte[]
和偏移,小子是不是一個偏移克利 - 這個逗號應該是「AND」還是應該將這兩個表達式連接起來或者完全不同?
在準則的例子小子
53 45 43 5f 4d 45 4d 4f 52 59 20 4b 45 59 20 31
結果後PAD2 (kP) XOR PAD (rT)
是
00 00 00 00 b7 a0 d2 cb 01 15 25 3f c4 0d 43 8f
和k0_pre然後是:
72 4b e3 3e 05 47 b5 99 9c 78 13 9d 8b 25 94 e6
我只是不」不知道如何從「2」輸入鍵中生成AES密鑰
該開放標準僅適用於會員。必須是我沒有意識到的開放式新定義。然後,上面似乎是我還沒有意識到的關鍵推導機制。 –
只有閱讀規格的會員纔是免費的,但我同意!我能以另一種方式向您發送密碼術規範嗎? – achiever