[英]how to implement AES 128bit with CBC (with 32bit IV and key)in java?
[英]Android: decrypt AES with 128 bit key size and 128 bit block size - Block cipher mode: CBC-CS1
我需要解密一些数据(在Android上),这些数据已按照以下规范进行了加密:
在Internet上找不到太多信息,到目前为止,我尝试过的所有AES解密方法都行不通。
主要问题似乎是CBC-CS1的实现,是否受支持还是应该自己实现?
谢谢Dem
如果您愿意,似乎应该可以使用new NISTCTSBlockCipher(NISTCTSBlockCipher.CS1, aes)
。 一件事可能会有所作为:您应该直接将AES分组密码提供给它,例如:
AESFastEngine aes = new AESFastEngine();
NISTCTSBlockCipher aescbccts = new NISTCTSBlockCipher(NISTCTSBlockCipher.CS1, aes);
这与CTSBlockCipher
有所不同, CTSBlockCipher
似乎期望CBCBlockCipher
(无论如何都用于CBC + CTS操作)。
如果您确实输入了CBC,那么您-很有趣-最终又得到了两倍的CBC = ECB:
CTB_n = E(CTB_n-1 XOR CTB_n-1 XOR PTB_n) = E(PTB_n).
从WikiPedia:
这里的编号来自德沃金,德沃金描述了所有这些。 第三个是最受欢迎的,由Daemen和Schneier描述; Meyer描述了一种相关但不兼容的方案(关于位排序和密钥使用)。
我刚刚验证Bouncy实现了CS3。 因此,看来您应该能够使用CTSBlockCipher
(如ArtjomB所建议),但仅在交换(部分)最后一个和第一个至最后一个块之后。
或者,您可以简单地重写CTSBlockCipher
,Bouncy Castle具有非常宽松的许可证。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.