Encrypting a payload for transmission over HTTP. AES256 with PBKDF2
A few, mostly minor notes:




"payload_here".getBytes();


getBytes() should have been called with a Charset. Otherwise it uses the platform's default charset which can vary from platform to platform and could result to data loss and/or other bugs.
You have local variable called salt inside the getRandomBytes method. It's a little bit confusing since the same method is called for iv too:

byte[] salt = new byte[length];

The encrypt method could throw six different types of exceptions. It's a little bit too much. All of them is a subclass of GeneralSecurityException. I'd use that instead, I don't think that clients want to handle those six different types differently.
According to the Code Conventions for the Java Programming Language class names should start with uppercase letters. 


Code Conventions for the Java Programming Language, 9 - Naming Conventions
Effective Java, 2nd edition, Item 56: Adhere to generally accepted naming conventions