← Back to Patent Explorer
US5425103A Expired / Lapsed US ⏱️ 0.0 years remaining

Variable-key cryptography system

Assignee: Individual
•
Filing: 1994-03-14
•
Granted: 1995-06-13
•
Expires: 2014-03-14
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract Binary data is encrypted or decrypted using a final key. The final key is formed by manipulating one or more user keys and a base key, and combining the manipulated keys using an exclusive-OR operation. The data to be encrypted or decrypted are combined with the final key using a circular exclusive-OR operation. The user and base keys are binary sequences having any number of bits. The user key may be input to the present invention directly in binary form or in any other suitable form that the present invention can interpret as a binary sequence, such as a string of ASCII-encoded alphanumeric characters. Manipulating the user key includes the steps of shuffling or permuting segments of the user key, such as bytes, circularly shifting the permuted user key by a number of bit positions, and filling a location with one or more copies of the permuted and shifted key such that the result has a length equal to that of the base key. The ordering of the segments of the user key in the permutation step and the number of bit positions by which the user key is shifted in the shifting step are determined in response to the value and position of the segments of the user key itself. Manipulating the base key includes the step of circularly shifting the base key by a number of bit positions that is determined in response to the value and position of segments of the user key.

Inventors

  • 👤 William Y. Shaw

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-08 00:31
CPC Classifications
H; H04; H04L; H04L9/00; H04L9/06; H04L9/065; H04L2209/00; H04L2209/12; H04L2209/34

Claims Analysis

Total Claims: 29
Claim 1
Independent Claim 156 words
A method for encrypting and decrypting digital data, comprising the steps of: forming an actual user key, said step of forming an actual user key comprising the steps of: receiving an input user key comprising a sequence of bits; permuting said input user key to form a permuted user key; circularly shifting said permuted user key to form a shifted user key; and filling a location having a length equal to the length of said base key with said shifted user key to form said actual user key; forming an actual base key, said step of forming an actual base key comprising the step of: circularly shifting a predetermined base key comprising a sequence of bits; forming a final key, said step of forming a final key comprising the step of: calculating the exclusive-OR of said actual base key and said actual user key; and calculating the exclusive-OR of said final key and said digital data.
Claim 2
Independent Claim 156 words
A method for encrypting and decrypting digital data, comprising the steps of: forming an actual user key, said step of forming an actual user key comprising the steps of: receiving an input user key comprising a sequence of bits; permuting said input user key to form a permuted user key; circularly shifting said permuted user key to form a shifted user key; and filling a location having a length equal to the length of said base key with said shifted user key to form said actual user key; forming an actual base key, said step of forming an actual base key comprising the step of: circularly shifting a predetermined base key comprising a sequence of bits; forming a final key, said step of forming a final key comprising the step of: calculating the exclusive-OR of said actual base key and said actual user key; and calculating the exclusive-OR of said final key and said digital data.
Claim 3
Dependent Claim 77 words
The method recited in claim 1, wherein said step of permuting said input user key comprises the steps of: selecting two selected portions of said input user key, each said selected portion comprising a sequence of bits, each said selected portion determined in response to the value and position within said input user key of each of a plurality of predetermined portions of said input user key; and swapping said selected portions of said input user key.
Claim 4
Dependent Claim 14 words
The method recited in claim 2, wherein each said portion consists of a byte.
Claim 5
Dependent Claim 22 words
The method recited in claim 3, wherein said predetermined portions consist of a plurality of consecutive bytes of said input user key.
Claim 6
Dependent Claim 20 words
The method recited in claim 4, wherein said predetermined portions consist of three consecutive bytes of said input user key.
Claim 7
Dependent Claim 118 words
The method recited in claim 5, wherein: said step of selecting two selected portions of said input user key comprises the steps of: selecting a byte KEY i of said input user key having an index number equal to i; selecting a byte KEY L of said input user key having an index number equal to L; and said step of permuting said input user key comprises repeating said steps of selecting a byte for values of i between 2 and N-1 inclusive, wherein each byte of said input user key has an index number, wherein N is the length of said input user key in bytes, and wherein: L=((KEY i-1 +KEY i +KEY i+1 +i) modulo N)+1.
Claim 8
Dependent Claim 63 words
The method recited in claim 1, wherein said step of circularly shifting said permuted user key comprises the step of: circularly shifting said permuted user key by a number of bit positions, said number determined in response to the value and positional weight of each of a plurality of portions of said permuted user key, each said portion comprising a sequence of bits.
Claim 9
Dependent Claim 14 words
The method recited in claim 7, wherein each said portion consists of a byte.
Claim 10
Dependent Claim 18 words
The method recited in claim 8, wherein said portions consist of all bytes of said permuted user key.
Claim 11
Dependent Claim 102 words
The method recited in claim 9, wherein said step of circularly shifting said permuted user key by a number of bit positions comprises the steps of: forming a shift factor S equal to the sum of the values (255+i)*KEY i for values of i between 1 and N inclusive, wherein KEY is a byte of said user key, wherein each said byte of said user key has an index number, wherein N is the length of said user key in bytes; and circularly shifting said permuted user key by L bit positions toward the most significant bit position, wherein: L=(S modulo (N*8))+1.
Claim 12
Dependent Claim 68 words
The method recited in claim 1, wherein said step of circularly shifting a predetermined base key comprises the step of: circularly shifting said predetermined base key by a number of bit positions; and said number of bit positions is determined in response to the value and positional weight of each of a plurality of portions of said permuted user key, each said portion comprising a sequence of bits.
Claim 13
Dependent Claim 14 words
The method recited in claim 11, wherein each said portion consists of a byte.
Claim 14
Dependent Claim 18 words
The method recited in claim 12, wherein said portions consist of all bytes of said permuted user key.
Claim 15
Dependent Claim 114 words
The method recited in claim 13, wherein said step of circularly shifting said predetermined base key by a number of bit positions comprises the steps of: forming a shift factor S equal to the sum of the values (255+i)*KEY i for values of i between 1 and N inclusive, wherein KEY is a byte of said user key, wherein each said byte of said user key has an index number, wherein N is the length of said user key in bytes; and circularly shifting said predetermined base key by L bit positions toward the most significant bit position; wherein M is the length of said base key in bytes, and wherein: L=(S modulo (M*8))+1.
Claim 16
Dependent Claim 116 words
The method recited in claim 1, wherein said step of forming a final key comprises the steps of: forming a shift factor S equal to the sum of the values (255+i)*KEY i for values of i between 1 and N inclusive, wherein KEY is a byte of said user key, wherein each said byte of said user key has an index number, wherein N is the length of said user key in bytes; calculating the exclusive-OR of said shifted base key and said filled user key to form a semifinal key; and calculating the exclusive-OR of said semifinal key and said shift factor S, wherein said shift factor S is represented as a four byte word.
Claim 17
Dependent Claim 97 words
The method recited in claim 1, wherein said step of receiving an input user key comprises the steps of: reading said input user key from an input device; packing said input user key; determining the number of unique bytes in said packed input user key; and rejecting said input user key if said packed input user key has a number of bytes less than a predetermined minimum number of total user key bytes or if said packed input user key has a number of unique bytes less than a predetermined minimum number of unique user key bytes.
Claim 18
Dependent Claim 34 words
The method recited in claim 16, wherein said step of packing said user key comprises the step of deleting all bytes consisting of all ones ("1") and all bytes consisting of all zeros ("0").
Claim 19
Dependent Claim 82 words
The method recited in claim 1, wherein said step of forming an actual user key comprises the steps of: receiving at least one input user key from an input device, each comprising a sequence of bits; permuting each said input user key to form a permuted user key; calculating the exclusive-OR of each said permuted user key with every other said permuted user key to form a total user key; permuting said total user key; and circularly shifting said total user key.
Claim 20
Dependent Claim 100 words
The method recited in claim 18, wherein said step of forming an actual user key further comprises, before said step of permuting said total user key, the steps of: packing said total user key to form a packed total user key; determining the number of unique bytes in said packed total user key; and rejecting all said input user keys if said packed total user key has a length less than a predetermined minimum total user key length or if said packed total user key has a number of unique bytes less than a predetermined minimum number of unique bytes.
Claim 21
Independent Claim 275 words
A method for encrypting and decrypting digital data, comprising the steps of: forming an actual user key, said step of forming an actual user key comprising the steps of: receiving an input user key comprising a sequence of bits; selecting two selected portions of said input user key, each said selected portion comprising a sequence of bits, each said selected portion determined in response to the value and position of each of a plurality of predetermined portions of said user key; swapping said selected portions of said input user key to form a permuted user key; and circularly shifting said permuted user key by a number of bit positions to form a shifted user key, said number determined in response to the value and positional weight of each of a plurality of portions of said permuted user key, each said portion comprising a sequence of bits; and filling a location having a length equal to the length of said base key with said shifted user key to form said actual user key; forming an actual base key, said step of forming an actual base key comprising the step of: circularly shifting said predetermined base key by a number of bit positions, said number of bit positions determined in response to the value and positional weight of each of a plurality of portions of said permuted user key, each said portion comprising a sequence of bits; forming a final key, said step of forming a final key comprising the step of: calculating the exclusive-OR of said actual base key and said actual user key; and calculating the exclusive-OR of said final key and said digital data.
Claim 22
Independent Claim 275 words
A method for encrypting and decrypting digital data, comprising the steps of: forming an actual user key, said step of forming an actual user key comprising the steps of: receiving an input user key comprising a sequence of bits; selecting two selected portions of said input user key, each said selected portion comprising a sequence of bits, each said selected portion determined in response to the value and position of each of a plurality of predetermined portions of said user key; swapping said selected portions of said input user key to form a permuted user key; and circularly shifting said permuted user key by a number of bit positions to form a shifted user key, said number determined in response to the value and positional weight of each of a plurality of portions of said permuted user key, each said portion comprising a sequence of bits; and filling a location having a length equal to the length of said base key with said shifted user key to form said actual user key; forming an actual base key, said step of forming an actual base key comprising the step of: circularly shifting said predetermined base key by a number of bit positions, said number of bit positions determined in response to the value and positional weight of each of a plurality of portions of said permuted user key, each said portion comprising a sequence of bits; forming a final key, said step of forming a final key comprising the step of: calculating the exclusive-OR of said actual base key and said actual user key; and calculating the exclusive-OR of said final key and said digital data.
Claim 23
Dependent Claim 117 words
The method recited in claim 20, wherein: said step of selecting two selected portions of said user key comprises the steps of: selecting a byte KEY i of said user key having an index number equal to i; selecting a byte KEY L of said user key having an index number equal to L; and said step of forming an actual user key comprises repeating said steps of selecting a byte of said user key for values of i between 2 and N-1 inclusive, wherein each byte of said user key has an index number, wherein N is the length of said user key in bytes, and wherein: L=((KEY i-1 +KEY i +KEY i+1 +i) modulo N)+1.
Claim 24
Dependent Claim 102 words
The method recited in claim 20, wherein said step of circularly shifting said permuted user key by a number of bit positions comprises the steps of: forming a shift factor S equal to the sum of the values (255+i)*KEY i for values of i between 1 and N inclusive, wherein KEY is a byte of said user key, wherein each said byte of said user key has an index number, wherein N is the length of said user key in bytes; and circularly shifting said permuted user key by L bit positions toward the most significant bit position, wherein: L=(S modulo (N*8))+1.
Claim 25
Dependent Claim 114 words
The method recited in claim 20, wherein said step of circularly shifting said predetermined base key by a number of bit positions comprises the steps of: forming a shift factor S equal to the sum of the values (255+i)*KEY i for values of i between 1 and N inclusive, wherein KEY is a byte of said user key, wherein each said byte of said user key has an index number, wherein N is the length of said user key in bytes; and circularly shifting said predetermined base key by L bit positions toward the most significant bit position; wherein M is the length of said base key in bytes, and wherein: L=(S modulo (M*8))+1.
Claim 26
Dependent Claim 116 words
The method recited in claim 20, wherein said step of forming a final key comprises the steps of: forming a shift factor S equal to the sum of the values (255+i)*KEY i for values of i between 1 and N inclusive, wherein KEY is a byte of said user key, wherein each said byte of said user key has an index number, wherein N is the length of said user key in bytes; calculating the exclusive-OR of said shifted base key and said filled user key to form a semifinal key; and calculating the exclusive-OR of said semifinal key and said shift factor S, wherein said shift factor S is represented as a four byte word.
Claim 27
Independent Claim 90 words
An apparatus for encrypting and decrypting digital data, comprising: interface means for bidirectionally communicating digital data; processor means for computing a final key in response to a predetermined user key and a predetermined base key; memory means for storing said final key; exclusive-OR means for receiving said final key and said digital data and for providing the exclusive-OR of said digital data and said final key to said interface; and addressing means for sequentially providing addresses to said memory means, said addresses corresponding to successive portions of said final key.
Claim 28
Independent Claim 90 words
An apparatus for encrypting and decrypting digital data, comprising: interface means for bidirectionally communicating digital data; processor means for computing a final key in response to a predetermined user key and a predetermined base key; memory means for storing said final key; exclusive-OR means for receiving said final key and said digital data and for providing the exclusive-OR of said digital data and said final key to said interface; and addressing means for sequentially providing addresses to said memory means, said addresses corresponding to successive portions of said final key.
Claim 29
Dependent Claim 15 words
The apparatus recited in claim 25, wherein each of said successive portions is a byte.

References Cited (Backward Citations)

US4200770A Cited
US4819267A Cited
US4897876A Cited
US5115467A Cited
US5241599A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1998-06-12 1998-12-12 1999-06-13 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2002-06-12 2002-12-12 2003-06-13 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2006-06-12 2006-12-12 2007-06-13 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag