I know that salts protect against rainbow tables, and I also know that hashing a password a certain number of times increases the strength of encryption, with more times of hashing being better.
But are salts and hashes really needed if you have a truly random key and not a password entered by a user? For instance, suppose the password is a "ridiculously" long string of random printable (or better yet, pure binary) characters, for instance 256 random bytes for an AES256 cipher.
Does it matter how the cipher is used? For instance, one use might be to encrypt the contents of a file with the random key, and another might be to use it as a stream cipher to encrypt some kind of communications. Assume in all cases that in addition to being random the key itself is secure (e.g. never transmitted on an un-secure channel).