簡體   English   中英

獲取密鑰流-Java解密

[英]Getting keystream - Java Decryption

我正在使用Java的Cipher類進行解密。

幾個問題:

  1. 使用DES解密和OFB進行多部分解密,是否有可能在第一次迭代中生成密鑰流,但不將該密鑰流用於XOR運算,但仍將密鑰流饋送到下一個塊密碼中?

我的代碼(簡短地)如下:

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);
  }

}

我不確定它是否確實會跳過update(dummy)操作中的XORing,然后將密鑰流用於下一個分組密碼。

  1. 是否可以檢索每個操作的密鑰流? 最好查看確切生成了什么。

謝謝濕婆

  1. 是的,這就是OFB的工作方式:加密(密鑰流)的輸出直接作為輸入饋送到下一個塊,因此XOR-ing部分獨立於加密引擎,就像流密碼一樣。

  2. 除了對明文進行XOR運算以外,獲取密鑰流的另一種方法是對XOR(或僅使用零調用update()/doFinal() ),您將獲得實際的密鑰流。 以防萬一您想查看密鑰流的外觀。 但是您的方式顯然也可以工作,我只是為了完整性而添加此內容。

我發現第一次迭代確實跳過了XORing階段。

可以通過將純文本與解密的VCW異或來找到密鑰流(這對我來說應該是顯而易見的)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM