【问题标题】:AES256 vs 3DES 256 key detectionAES256 与 3DES 256 密钥检测
【发布时间】:2013-05-29 20:21:17
【问题描述】:

我如何能够确定密钥的加密(AES256 或 3DES 256)...因为两个密钥都是 32 个字符(每个字符 8 位 * 32 字符)=256 位并经过 Mime 编码。

例子

MQAyAEgAOgA5ADUAMwA3AD8AQgBFAD4A --->AES256 密钥

g1EOWGFb+JjCZ7BbH2RergtKUtDfXrNb --->3DES 密钥

AES 密钥是在 Openssl 中制作的,而 3DES 密钥是使用 Java 和以下 API 制作的。

javax.crypto.Cipher;
 javax.crypto.KeyGenerator;
 javax.crypto.SecretKey;
 javax.crypto.SecretKeyFactory;
 javax.crypto.spec.DESedeKeySpec;
 javax.crypto.spec.IvParameterSpec;

【问题讨论】:

  • 在这成为一个真正的问题之前,您还有很长的路要走。
  • 您有一些数据,您需要知道它是加密的 AES 密钥还是加密的 3DES 密钥?你知道用的是什么加密算法吗?
  • @GregS 无论如何都会回答 :)
  • 请注意,解码您的 AES 密钥(我认为是测试密钥)表明它不是随机生成的,因此使用起来不安全。
  • public static String newKey(){ return encode(RandomString(12)); }

标签: java encryption openssl aes 3des


【解决方案1】:

首先,没有 3DES 256 之类的东西。3DES 的密钥大小为 128 或 192 位,其中 112 和 168 位被有效使用。请注意,3DES 的安全边际甚至更低。

另一方面,AES 可用于 128、192 和 256 位,所有这些都已使用。

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

但是,您的 3DES 密钥(第二个)似乎对 3 个单个 DES 密钥使用奇校验字节。这可以用来区分密钥。请注意,这并非万无一失,随机生成的 AES 密钥可能只是偶然地正确设置了奇偶校验位。但是,发生这种情况的可能性大约是2^24

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

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

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

【讨论】:

  • @Duncan Jones 我的 AES 密钥是通过在 Base64 中编码随机字符串生成的。我的 3DES 密钥是使用 SecretKeyFactory 制作的
  • 以下是用于生成我的 3DES 密钥的代码...也许它有助于检测是否已生成密钥。
  • public static String generateKey() { try { KeyGenerator newKey = KeyGenerator.getInstance("DESede"); SecretKey key = newKey.generateKey();返回 Base64.encodeBytes(key.getEncoded()); } catch (NoSuchAlgorithmException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } 返回 ””; }
  • 那么如果每个字节中的前 7 位用于 ascii 数据......我是否假设最后一位是奇校验?
  • 前 7 位不应该是随机二进制数据,而不是 ASCII 数据。我已经更新了我的答案,包括 base 64 解码和一种指示奇偶校验是否正确设置的方法。
猜你喜欢
  • 2017-08-08
  • 1970-01-01
  • 2019-02-24
  • 1970-01-01
  • 2013-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多