I have a private text note to store on my remote server. I'd like to encrypt my data in my web browser, using JavaScript, before uploading it. Here is what I currently do: 1. Edit my note in a textarea. 2. Click the `Encrypt and upload` button. 3. The JS asks for a new password. 4. This password is then prepared using PBKDF2. 5. Then the resulting key is used with AES-GCM to encrypt the note. 6. Uploading the encrypted data (and the initialization vector from step 5). Question is: Is it safe to use a hardcoded salt in step 4? What would be the benefits of generating a random salt each time I click the `Encrypt and upload` button? (Then prepending the salt to the encrypted data and the initialization vector.) How could an attacker benefit from a hardcoded salt in this case?