A method is disclosed for performing cryptographic tasks, that include key
setup tasks and work data processing tasks. This method comprises the
steps of processing the key data in a first cryptographic engine and
processing the work data in a second cryptographic engine. The processing
of the key data comprises the steps of receiving key data, processing the
key data, and generating processed key data. The processing of the work
data comprises the steps of receiving the processed key data, receiving
work data, processing the work data, and outputting the processed work
data. In this method of the invention, the first cryptographic engine
performs its tasks independently of the second cryptographic engine. A
method for allocating cryptographic engines in a cryptographic system is
also disclosed comprising monitoring a queue of cryptographic tasks,
monitoring activity levels of a first allocation of a plurality of
cryptographic engines, and dynamically adjusting the first allocation.