首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AES256 vs 3DES 256键检测

AES256 vs 3DES 256键检测
EN

Stack Overflow用户
提问于 2013-05-30 04:21:17
回答 1查看 2.7K关注 0票数 2

如何确定密钥(AES256或3DES 256)的加密两个密钥都是32个字符(每个字符8位* 32个字符)=256位...Since Mime编码。

示例

MQAyAEgAOgA5ADUAMwA3AD8AQgBFAD4A ->AES256密钥

g1EOWGFb+JjCZ7BbH2RergtKUtDfXrNb ->3DES密钥

AES密钥是在Openssl中生成的,而3DES密钥是使用Java和以下Apis生成的。

代码语言:javascript
复制
javax.crypto.Cipher;
 javax.crypto.KeyGenerator;
 javax.crypto.SecretKey;
 javax.crypto.SecretKeyFactory;
 javax.crypto.spec.DESedeKeySpec;
 javax.crypto.spec.IvParameterSpec;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-30 20:44:57

首先,不存在3DES 256这样的东西。3DES具有128或192比特的密钥大小,其中112比特和168比特被有效利用。请注意,3DES的安全边际甚至更低。

另一方面,AES可以与128、192和256位一起使用,所有这些位都被使用。

现在base64(不是SMIME,这是一个更高级别的协议)每个字符有6位(不排除末尾的伪位)。如果我检查你的密钥,它们的大小都是192位,所以这不能帮助你区分密钥。您可以使用Apache Codec库来解码base64字符串。

然而,您的3DES密钥-第二个密钥-似乎使用奇数奇偶校验字节作为3个单独的DES密钥。可以用来区分密钥的。请注意,这并不是万无一失的,随机生成的 AES可能仅凭机会就正确地设置了奇偶校验位。然而,这种情况发生的可能性约为2^24的水平。

可以使用方法DESedeKeySpec.isParityAdjusted(byte[] key, int offset)检查是否正确设置了奇偶校验。当然,首先需要对base64字符串进行解码。

请注意,有时在未正确设置奇偶校验的情况下分发3DES密钥。在您的示例中,您需要使用KeyFactory来生成密钥,否则可能无法设置奇偶校验。

检查密钥是否为正确类型的另一种方法是使用这两种算法来解密一些已知的明文/密文/密钥对。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16823107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档