Train a neural net to recognize a (sequence of?) numbers. Train an association of an input (sequence of?) numbers to output numbers. The private key is the input, the actual key is the output.Reverse engineering a neural network is nearly impossible. It is effectively a forward-only black box.
Layers, such as pooling, lose information which makes reversal impossible.Indeed, you don't even have to use numbers as input. Any image, such as a particular page in a particular book, or a picture of your favorite cat, can be the input key. The "real key" is hidden in this black box, encoded in the weights. Without knowing the input to the black box you can't extract the key needed to decrypt messages.Thus, you can send someone the neural net. It will output garbage except when shown the chosen input image.Multiple neural nets can be trained off the same input image. It is trivial to feed "noise" into the training data so the individual hidden weights are different.Then you can send many people "personal" neural nets, all using the same input key but hiding unique encryption keys. When their personal neural net is shown their personally chosen input, you get the correct encryption key as output.