# US 7,664,765 B2 · Method for accelerating the computational speed of a computer algorithm

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 7,664,765 B2
- Document ID: US7664765B2
- Status: Granted
- Kind: B2
- Application number: 11/485,188
- Filed: 2006-07-12
- Published: 2007-02-08
- Granted: 2010-02-16
- Earliest claimed: 2005-07-12
- Assignees: Cipherflux, LLC
- Inventors: Jerzy Henryk Urbanik; Krzysztof Ryszard Kalita; Przemyslaw Bartlomiej Bezeg
- Web page: https://patentgrep.com/patent/US7664765B2

## CPC

- H04L 9/302: {involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes}
- H04L 2209/30: Compression, e.g. Merkle-Damgard construction
- Y10S 707/99942: Manipulating data structure, e.g. compression, compaction, compilation
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- Y10S: TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS

## Abstract

A new technique for accelerating the computational speed of a computer algorithm is provided. The inventive technique can be applied to an encryption algorithm, such as an RSA algorithm, for example. A method and system for effecting secure information communications utilizing an accelerated information encryption algorithm is also contemplated.

## Claims

### Claim 1

A method for accelerating the processing speed of a computer algorithm, comprising the steps of:
obtaining data to be processed by said computer algorithm;
providing a first data structure for holding at least a portion of said data;
setting an index representing a stabilization state of said first data structure to a value indicating an unstabilized state;
verifying said index setting;
obtaining at least one data element of said data; and
when said index setting indicates an unstabilized state of said first data structure, (i) inserting at least a portion of said at least one data element into said first data structure, (ii) processing said portion of said at least one data element by said computer algorithm, (iii) inserting said processed portion of said at least one data element into said first data structure, (iv) determining whether said first data structure is filled, and (a) when said first data structure is filled, setting said index to a value representing a stabilized state of said first data structure, determining if all of said data have been processed, when all of said data have been processed, adding said processed portion of said at least one data element into a second data structure and ceasing further operation, when all of said data have not been processed, adding said processed portion of said at least one data element into said second data structure and revisiting said step of obtaining at least one data element of said data, and (b) when said first data structure is not filled, determining if all of said data have been processed, when all of said data have been processed, adding said processed portion of said at least one data element into said second data structure and ceasing further operation, when all of said data have not been processed, adding said processed portion of said at least one data element into said second data structure and revisiting said step of obtaining at least one data element of said data; and
when said index setting indicates a stabilized state of said first data structure, (1) searching said first data structure for at least a portion of said at least one data element that has been processed by said computer algorithm, (2) copying said processed portion of said at least one data element from said first data structure into said second data structure, (3) determining if all of said data have been processed, and (A) when all of said data have been processed, ceasing further operation, and (B) when all of said data have not been processed, revisiting said step of obtaining at least one data element of said data.

### Claim 2 (depends on 1)

The method according to claim 1, wherein ones of said processed portion of said at least one data element are placed in said second data structure only after said first data structure is in a stabilized state.

### Claim 3 (depends on 1)

The method according to claim 1, further comprising the steps of verifying said stabilization state of said first data structure when said index setting indicates an unstabilized state of said first data structure.

### Claim 4 (depends on 1)

The method according to claim 1, wherein said computer algorithm is an encryption algorithm, and said step of processing said portion of said at least one data element by said computer algorithm includes encrypting said portion of said at least one data element.

### Claim 5 (depends on 4)

The method according to claim 4, wherein said computer algorithm is an RSA encryption algorithm.

### Claim 6 (depends on 1)

The method according to claim 1, wherein said computer algorithm is a decryption algorithm, and said step of processing said portion of said at least one data element by said computer algorithm includes decrypting said portion of said at least one data element.

### Claim 7 (depends on 6)

The method according to claim 6, wherein said computer algorithm is an RSA decryption algorithm.

### Claim 8

A computer program product comprising a computer usable medium having a computer readable program code means embodied in said medium for causing an application program to execute on a computer for accelerating the processing speed of a computer algorithm, comprising:
means for obtaining data to be processed by said computer algorithm;
a first data structure for holding at least a portion of said data;
means for setting an index representing a stabilization state of said first data structure to a value indicating an unstabilized state;
means for verifying said index setting;
means for obtaining at least one data element of said data; and
means for, when said index setting indicates an unstabilized state of said first data structure, (i) inserting at least a portion of said at least one data element into said first data structure, (ii) processing said portion of said at least one data element by said computer algorithm, (iii) inserting said processed portion of said at least one data element into said first data structure, (iv) determining whether said first data structure is filled, and (a) when said first data structure is filled, setting said index to a value representing a stabilized state of said first data structure, determining if all of said data have been processed, when all of said data have been processed, adding said processed portion of said at least one data element into a second data structure and ceasing further operation, when all of said data have not been processed, adding said processed portion of said at least one data element into said second data structure and revisiting said step of obtaining at least one data element of said data, and (b) when said first data structure is not filled, determining if all of said data have been processed, when all of said data have been processed, adding said processed portion of said at least one data element into said second data structure and ceasing further operation, when all of said data have not been processed, adding said processed portion of said at least one data element into said second data structure and revisiting said step of obtaining at least one data element of said data; and
means for, when said index setting indicates a stabilized state of said first data structure, (1) searching said first data structure for at least a portion of said at least one data element that has been processed by said computer algorithm, (2) copying said processed portion of said at least one data element from said first data structure into said second data structure, (3) determining if all of said data have been processed, and (A) when all of said data have been processed, ceasing further operation, and (B) when all of said data have not been processed, revisiting said step of obtaining at least one data element of said data.

### Claim 9

A system for accelerating the processing speed of a computer algorithm, comprising:
means for obtaining data to be processed by said computer algorithm;
a first data structure for holding at least a portion of said data;
means for setting an index representing a stabilization state of said first data structure to a value indicating an unstabilized state;
means for verifying said index setting;
means for obtaining at least one data element of said data; and
means for, when said index setting indicates an unstabilized state of said first data structure, (i) inserting at least a portion of said at least one data element into said first data structure, (ii) processing said portion of said at least one data element by said computer algorithm, (iii) inserting said processed portion of said at least one data element into said first data structure, (iv) determining whether said first data structure is filled, and (a) when said first data structure is filled, setting said index to a value representing a stabilized state of said first data structure, determining if all of said data have been processed, when all of said data have been processed, adding said processed portion of said at least one data element into a second data structure and ceasing further operation, when all of said data have not been processed, adding said processed portion of said at least one data element into said second data structure and revisiting said step of obtaining at least one data element of said data, and (b) when said first data structure is not filled, determining if all of said data have been processed, when all of said data have been processed, adding said processed portion of said at least one data element into said second data structure and ceasing further operation, when all of said data have not been processed, adding said processed portion of said at least one data element into said second data structure and revisiting said step of obtaining at least one data element of said data; and
means for, when said index setting indicates a stabilized state of said first data structure, (1) searching said first data structure for at least a portion of said at least one data element that has been processed by said computer algorithm, (2) copying said processed portion of said at least one data element from said first data structure into said second data structure, (3) determining if all of said data have been processed, and (A) when all of said data have been processed, ceasing further operation, and (B) when all of said data have not been processed, revisiting said step of obtaining at least one data element of said data.
