What is this called: encrypt $X$ with key $E$, decrypt $X$ with key $D$? I am a software developer interested in developing an application with cryptography. I can explain what I want to accomplish, but I do not know the technical terms for the cryptographic functions I am seeking.  Many Google searches have not helped me. Could someone please help me with the proper cryptographic terms for what I am seeking, so I know what to search for in my research?

Here is what I am looking for:


Encrypt large amounts of data quickly with key $E$.
Encryption is currently unbreakable and is expected to remain so as far as is
known.
The encrypted data cannot be decrypted with key $E$.
The encrypted data can only be decrypted with key $D$.
Key $E$ is created by passing key $D$ into an algorithm/function.
It is preferred that key $D$ can be less than 20 characters and can be
typed from what is visible on the keys of an ordinary computer
keyboard. (AKA...a password)


Thank you!
As correctly pointed out in the comments: The term is asymmetric cryptography, also known as public-key cryptography.

How do we know that it's asymmetric encryption?

In symmetric encryption the encryption key and decryption key are identical, meaning you can decrypt data with the same key that it has been encrypted with.

On the other hand, in asymmetric encryption the encryption key and decryption key are different from one another ($K_{Enc} \ne K_{Dec}$) and in your example it's stated:


  The encrypted data cannot be decrypted with key $E$.




How to create $E$ from $D$

This can be achieved with the following procedure:


Create a key $K$ with a key derivation function by using your password. You can think of this function as a key-stretching-function. KDFs can be used to stretch keys into longer keys or to obtain keys of a required format. This is important to get an input which is "random enough" for step 2.


PBKDF2 is a noteworthy here. To increase the difficulty of a potential attack a cryptographic salt is added to the password.

You can now use this created key $K$ as a seed for a PRNG (pseudo random number generator). Important here is the word pseudo, which means that given the same seed it will always return the same created number.
The PRNG is used for a key-pair-generation-algorithm, which then returns the public-key $K_{Public}$ (in your example $E$ for encryption) and the private-key $K_{Private}$ (in your example $D$ for decryption).
You can now use this generated keys for any asymmetric cryptography methods, some well known examples are:


ECDH (Elliptic-Curve-Diffie-Hellman).
RSA



Important: I left out that you would have to use different key-pair-generation-algorithms, depending on which asymmetric cryptographic scheme you would use.



This procedure would work theoretically, but is very expensive from a computational view as you're only using asymmetric encryption. In practice this problem is solved by implementing a hybrid cryptosystem: 


  A hybrid cryptosystem is one which combines the convenience of a public-key cryptosystem with the efficiency of a symmetric-key cryptosystem.


A noteworthy example of this would be ECIES (Elliptic Curve Integrated Encryption Scheme), where the security is based on the Diffie–Hellman problem. This scheme allows two parties to create a (random) session key, which allows symmetric encryption.