2016-01-13 91 views
0

我正在使用Java的Cipher類進行解密。獲取密鑰流 - Java解密

幾個問題:

  1. 使用DES解密與OFB,對於多部分解密,是有可能生成密鑰流在第一次迭代但不使用密鑰流的異或,但仍然養活密鑰流進入下一個分組密碼?

我的代碼是(簡述)如下:

desCipher = Cipher.getInstance("DES/OFB56/NoPadding"); 
desCipher.init(Cipher.DECRYPT_MODE, secretKey, ivParameter); 
for (i=0;i<subframeCount;i++){ 
// perform the skip iteration here 
    if (firstFrame){ 
     byte[] dummy = new byte[7]; 
     dummy[0] = 1;dummy[1] = 12;dummy[2] = 12;dummy[3] = 15;dummy[4] = 26;dummy[5] = 12;dummy[6] = 12; 
     desCipher.update(dummy); 
    } 
    if (not_last_frame){ 
     decryptedVCW = desCipher.update(vcwShift_E); 
    } 
    else{ 
     decryptedVCW = desCipher.doFinal(vcwShift_E); 
    } 

} 

我不知道,如果它確實是跳過更新(假)操作的異或,然後使用密鑰流的下一個分組密碼。

  1. 是否有可能檢索每個操作的密鑰流?很高興看到究竟產生了什麼。

感謝希夫

回答

2
  1. 是的,這就是OFB如何工作發現:從加密(密鑰流)輸出直接作爲輸入提供給下一個塊,因此異或部分獨立於加密引擎,就像流密碼一樣。

  2. 獲得密鑰流的另一種方法是將XOR與純文本進行異或運算(或調用update()/doFinal()),只有零值,您將獲得實際的密鑰流。以防萬一你想看看密鑰流的樣子。但是你的方式顯然也會起作用,我只是爲了完整性而添加它。

+0

感謝XORing與零,更好的方式來獲得密鑰流。 – Seb

0

我發現第一次迭代確實跳過異或運算階段。

密鑰流可以通過異或與decryptedVCW純文本(這應該是很明顯對我來說)