I agree with the previous answer about using SSL, but I will address the algorithm specifically here.
To break your algorithm, an attacker would need to do one of the following:
- Learn the user's plaintext password
- Learn the user's hashed password
- Learn the cleartext random string plus the double-hashed password
Assume that an attacker knows or can guess the hash algorithm that you use.
There are several ways to achieve (1) that lie outside your algorithm. Common-passwords, password reuse, etc.
The hashed password (2) is essentially a password as well, since you will accept anybody who submits the hashed password + the random plaintext. So if an attacker can find the hashed password on either the client or the server, then he can login to your site.
(3) is interesting, and is a likely attack vector. Without SSL, an attacker can sniff to find both elements from (3) - he will hear the random plaintext coming from the server and then the double-hashed password going to the server. Then he can use password-guessing tools to determine the original password. Start with a list of common passwords, hash them, add the cleartext, and then hash again. The time that it takes to crack will depend on the strength of the password and the size of the hash algorithm. He could also try using a rainbow table to find the 'hashed password'+'random plaintext' string.
Your security would be improved by finding a way to prevent the attacker from sniffing the exchange at all.