- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有一个 XML 文档的加密压缩文件。此文件在 Delphi 中使用名为“DcpCrypt”的包使用 Rijndael 和 SHA256 加密:
fRijndael:=TDCP_rijndael.Create(nil);
fRijndael.BlockSize:=16;
fRijndael.CipherMode:=cmCBC;
fSHA256:=TDCP_sha256.Create(nil);
fSHA256.HashSize:=256;
C# 能够解密吗?我在谷歌上搜索了很多,似乎 DcpCrypt 计算他的 key 的方式与 .NET lib 不同。
提前致谢
最佳答案
简短的回答是肯定的。长答案是“视情况而定”。
“计算他的 key ”这句话,我假设您的意思是生成加密 key 。 key 的生成方式与使用这些 key 进行加密和解密的过程完全无关。
DcpCrypt 是在 Rijndael 成为 AES 标准之前编写的(那是很久以前的事了)。假设预标准 Rijndael 实现与 AES 相同(很可能是),AES 加密/解密互操作性应该是语言和实现中立的,仅取决于实现选项。
但这就是问题所在……识别这些选项并将它们设置为在加密编解码器和解密编解码器上相同可能很棘手。
有哪些选项?
一旦确定了加密器使用的所有选项,就必须将这些相同的选项应用于解密器。这个问题不是 Rijndael/AES 特有的,而是所有密码普遍存在的。
顺便说一句,如果您为了压缩目的而压缩,则压缩后的加密毫无意义。 Zip 不会压缩任何内容已经是最大随机性的文件,例如密文。
我建议您使用 TurboPower LockBox 3 在 AES 中加密,而不是 DcpCrypt。戴夫·巴顿 (Dave Barton) 的 DCPcrypt 在当时很不错,但它不是最新的标准,而且它不能安全地管理 IV。
如果您使用 LockBox,有哪些选项?如果您在 CBC 模式下使用 LockBox 3 的 AES 编解码器,则通过将 IV 设置为随机数并预先发出它来管理加盐和 IV。对于长度超过一个 block 的消息,通过窃取密文来实现阻塞。对于短于一个 block 的消息,链接模式强制为 8 位 CFB,即 key 流。
您关于使用 SHA256 加密文件的评论也没有意义。 SHA 是散列,而不是密码。
关于C# 和德尔福。使用 C# 在 Delphi 中读取加密和压缩的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4214086/
我是一名优秀的程序员,十分优秀!