繁体   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