类型: 安全缺陷

    在hash加密的过程,缺少必要的步骤,会削弱所生成hash值的强度。

    例如:下列代码片段中,缺少MessageDigest.update()的调用,导致创建不基于任何数据的hash值。

    1. MessageDigest messageDigest = MessageDigest.getInstance("SHA-512");
    2. //messageDigest.update(inputText.getBytes()); //lack of necessary steps
    3. byte byteBuffer[] = messageDigest.digest();
    4. StringBuilder strHexString = new StringBuilder();
    5. for (int i = 0; i < byteBuffer.length; i++) {
    6. String hex = Integer.toHexString(0xff & byteBuffer[i]);
    7. if (hex.length() == 1) {
    8. strHexString.append('0');
    9. }
    10. strHexString.append(hex);
    11. }
    12. strResult = strHexString.toString();