CodeQL 文档

使用可能已损坏或存在安全风险的加密算法

ID: java/potentially-weak-cryptographic-algorithm
Kind: path-problem
Security severity: 7.5
Severity: warning
Precision: medium
Tags:
   - security
   - external/cwe/cwe-327
   - external/cwe/cwe-328
Query suites:
   - java-security-extended.qls
   - java-security-and-quality.qls

点击查看 CodeQL 仓库中的查询

使用已损坏或薄弱的加密算法会导致数据容易被解密。

加密库提供的许多加密算法已知是薄弱的或有缺陷的。使用此类算法意味着攻击者可以轻松解密加密数据。

建议

确保使用强大的现代加密算法。至少使用 AES-128 或 RSA-2048。不要使用 ECB 加密模式,因为它容易受到重放攻击和其他攻击。

示例

以下代码展示了使用 java Cipher 加密某些数据的示例。创建 Cipher 实例时,必须指定要使用的加密算法。第一个示例使用 DES,它是一种旧的算法,现在被认为是薄弱的。第二个示例使用 AES,它是一种强大的现代算法。

// BAD: DES is a weak algorithm 
Cipher des = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);

byte[] encrypted = cipher.doFinal(input.getBytes("UTF-8"));

// ...

// GOOD: AES is a strong algorithm
Cipher aes = Cipher.getInstance("AES");

// ...

参考

  • ©GitHub, Inc.
  • 条款
  • 隐私