I have using message digest, I have seen it being used sometimes with `salt` 

```
        synchronized (hasher) {
            hasher.update(salt);            // "Updates" the digest using the specified byte.
            salt++;
            digest = hasher.digest(data);   // Final "updates" on the digest using the specified array of bytes, then "completes" the digest computation.   
        }

```

and some times without salt:

```
 md.update(data);
 byte[] toChapter1Digest = md.digest();

```

Now, when can should I, be using the digest with `salt` and should not I ?
Brief research, I concluded, that whenever the password element is involved the salt is used.