Vigenere cipher with random salt
Lacking a good reason to do otherwise, I think I'd use a Vernam cipher instead of a Vigenere. The two offer about the same level of security (none, at least against anybody who knows anything about cryptanalysis), but a Vernam cipher is generally easier to implement, and (probably more importantly, at least for your purposes) with a typical key, a single pass produces output that looks much more random (in particular, it frequently produces a lot of relatively unreadable symbols and such. For example:

#include &lt;iostream&gt;
#include &lt;sstream&gt;

int main() {
    std::istringstream input("This is some input for encryption.");
    std::string key("EncryptionKey");

    unsigned pos = 0;
    char ch;
    while (input.get(ch)) {
        std::cout &lt;&lt; char(ch ^ key[pos]);
        ++pos;
        if (pos &gt; key.length())
            pos = 0;
    }
}


Obviously, the code is quite short and simple. The result it produces in this case is:


  ◄♠
  ☺Y↓I∟☺&amp; Yi+▲▬♠Y▬←←O♂%♠♂y5→
  ↔↨^


As already noted, there's little difference in terms of real security--but in terms of producing output that looks strange and off-putting, this seems to me to win by a wide margin.

If you were going to mix two different ciphers, I don't think I'd use the same algorithm, just with two different keys. Rather, I'd use two entirely different types of ciphers. Since Vigenere is a substitution cipher, the obvious choice would be to use a transposition cipher for the second one.