A system for generating a symmetric encryption key, said system comprising a first terminal comprising key generation data, a second terminal comprising key generation data and a server, wherein the server is configured to: generate a first processing file for the first terminal based on key data for the first terminal and a combination of key data for the first terminal and key data for the second terminal; generate a second processing file for the second terminal based on key data for the second terminal and a combination of key data for the first terminal and key data for the second terminal; and send the first processing file to the first terminal and the second processing file to the second terminal; wherein the first terminal is configured to: receive the first processing file; extract combined key data from the first processing file; generate a first random key seed and send it to the second terminal; receive a second random key seed from the second terminal; wherein the second terminal is configured to receive the second processing file; extract combined key data from the second processing file; generate the second random key seed and send it to the first terminal; receive the first random key seed from the first terminal; whereby the first terminal and the second terminal are each configured to: input the combined key data and the first random seed into a function; input the combined key data and the second random seed into the same function; and concatenate the results of the functions into the symmetric encryption key, each terminal thereby generating a copy of the symmetric encryption key. generate a first processing file for the first terminal based on key data for the first terminal and a combination of key data for the first terminal and key data for the second terminal; generate a second processing file for the second terminal based on key data for the second terminal and a combination of key data for the first terminal and key data for the second terminal; and send the first processing file to the first terminal and the second processing file to the second terminal; wherein the first terminal is configured to: receive the first processing file; extract combined key data from the first processing file; generate a first random key seed and send it to the second terminal; receive a second random key seed from the second terminal; wherein the second terminal is configured to receive the second processing file; extract combined key data from the second processing file; generate the second random key seed and send it to the first terminal; receive the first random key seed from the first terminal; whereby the first terminal and the second terminal are each configured to: input the combined key data and the first random seed into a function; input the combined key data and the second random seed into the same function; and concatenate the results of the functions into the symmetric encryption key, each terminal thereby generating a copy of the symmetric encryption key. receive the first processing file; extract combined key data from the first processing file; generate a first random key seed and send it to the second terminal; receive a second random key seed from the second terminal; wherein the second terminal is configured to receive the second processing file; extract combined key data from the second processing file; generate the second random key seed and send it to the first terminal; receive the first random key seed from the first terminal; whereby the first terminal and the second terminal are each configured to: input the combined key data and the first random seed into a function; input the combined key data and the second random seed into the same function; and concatenate the results of the functions into the symmetric encryption key, each terminal thereby generating a copy of the symmetric encryption key. input the combined key data and the first random seed into a function; input the combined key data and the second random seed into the same function; and concatenate the results of the functions into the symmetric encryption key, each terminal thereby generating a copy of the symmetric encryption key.