This sounds like Secret Sharing or Secret Splitting.
Secret sharing (also called secret splitting) refers to methods for
distributing a secret among a group of participants, each of whom is
allocated a share of the secret. The secret can be reconstructed only
when a sufficient number, of possibly different types, of shares are
combined together; individual ...
Strictly speaking, TLS already supports what you're asking about. There are "null cipher suites" - that is, TLS cipher suites that have no ("null") encryption - that would do what you want. Using one will allow you to use existing TLS libraries and take advantage of all the work and hard thought and lessons learned that has gone into the ...
But how do I know which hash (of all the other hashes in the database) to compare to the user input?
Each user has a row in your database with entries for columns: (1) username; (2) bcrypt output.
Also, if bcrypt could check if it matches without a salt, couldn't anyone do that?
bcrypt can not check without the salt.
However, how do I know which salt to ...
Given that your cyphertext is all As, I am going to assume that the key is of the same length as the plaintext (there are edge cases where this is technically untrue, but for decryption purposes it's probably true).
When your Vigenère key is as long as your plaintext, you are effectively using a One-time pad, which is impossible to decrypt.
This isn't a question of cryptography, but of auditing. Bank A and Bank B both keep records of the transactions they've performed. Eventually, they're going to compare notes and realize that the two sets of records don't match. Specifically, Bank B has a collection of transactions that transfer money into Oscar's account without counterpart transactions ...