There's a few different things here.
a public key is the product of two large prime numbers
That is partially true for RSA, though RSA public keys also contain an additional integer (e, in the algorithm's description). Other public key algorithms, and even public key ciphers, do not work the same way (see ElGamal Encryption, for example.)
as long as ...
No, this is not possible with hashes. Hashes are specifically designed to prevent this, otherwise attacker wanting to obtained the hashed value could start by checking first letter, then the next...
Also, you are likely using salt wrong.
In simple terms, RSA encryption is a trap-door function: easy to calculate in one way, hard in reverse.
Chiphertext is generated by using modulo operation on a result of the computation involving public key and the message.
message = 123
result of the computation = 1234567890
ciphertext (result of the computation modulo 1000) = 890
The numbers in the ...
Someone is trying to log in. That means they've provided two things:
Who they claim to be.
Something they claim proves they are that person.
The salt should be tied to #1, as it's unique per user (and globally, but especially unique within your own database). Then you can just look up the user's information in your database, and the salt will be part of ...
Diffie Hellman, RSA, and ECC are all ways to implement asymmetric cryptography (not only encryption but digital signatures and key exchange). There are also additional ways to implement asymmetric cryptography, for example the active research on post quantum crypto.
For actual specific questions ...
Moved from the question to an answer.
This was very simple to check, I just changed the IV to be the correct
length and the ciphertext remained the same. Hence, the extra byte is
not used in the algorithm and somebody miscounted.
/* A 128 bit IV */
unsigned char *iv = (unsigned char *)"...