# US 9,521,128 B2 · Using a hash of a filename to control encoding/decoding of a digital file

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

- Number: US 9,521,128 B2
- Document ID: US9521128B2
- Status: Granted
- Kind: B2
- Application number: 14/535,628
- Filed: 2014-11-07
- Published: 2016-05-12
- Granted: 2016-12-13
- Earliest claimed: 2014-11-07
- Assignees: QUALCOMM Incorporated
- Applicants: QUALCOMM Incorporated
- Inventors: Keir Finlow-Bates
- Web page: https://patentgrep.com/patent/US9521128B2

## CPC

- H04L 63/061: {for key exchange, e.g. in peer-to-peer networks (cryptographic mechanisms or cryptographic arrangements for key agreement H04L9/0838)}
- G06F 16/137: {Hash-based (content-based indexing of textual data G06F16/31)}
- G06F 21/602: {Providing cryptographic facilities or services}
- G06F 21/6209: {to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself}
- G09C 1/00: Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system (cryptographic typewriters G09C3/00)
- H04L 63/0876: {based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint}
- G06F 2221/2107: File encryption
- H04L 9/50: {using hash chains, e.g. blockchains or hash trees}
- H04L 2209/16: Obfuscation or hiding, e.g. involving white box
- H04L 2209/34: Encoding or coding, e.g. Huffman coding or error correction
- H04L 2209/60: Digital content management, e.g. content distribution
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G09C: CIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY

## Abstract

Methods, devices, systems, and non-transitory process-readable storage media for a computing device to reversibly obfuscate contents of a digital file includes generating a binary string by applying a shared hash function to a public filename of the digital file. The method may include subdividing the digital file into a first plurality of data segments corresponding to one of a number of bits represented by the generated binary string and a file size of the digital file, shuffling the first plurality of data segments using a shared, looping shuffle algorithm. Each shuffling operation of the shared, looping shuffle algorithm may use a different bit of the generated binary string in a predefined first sequence. The shuffled first plurality of data segments may be combined to obtain a shuffled digital file. A reverse of the method may be performed to obtain the original digital file.

## Claims

### Claim 1

A method for a computing device to reversibly obfuscate contents of a digital file, comprising:
generating, by a micro-processor of the computing device, a binary string by applying a shared hash function to a public filename of a digital file that is stored in a memory of the computing device in an unshuffled configuration;
subdividing, by the micro-processor of the computing device, the digital file into a first plurality of data segments corresponding to one of a number of bits represented by the generated binary string and a file size of the digital file;
shuffling, by the micro-processor of the computing device, the first plurality of data segments using a shared, looping shuffle algorithm, wherein each shuffling operation of the shared, looping shuffle algorithm uses a different bit of the generated binary string in a predefined first sequence; and
combining, by the micro-processor of the computing device, the shuffled first plurality of data segments to obtain a shuffled digital file that is stored according to the shuffled configuration in the memory.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
subdividing, by the micro-processor of the computing device, the shuffled digital file into a second plurality of data segments corresponding to one of the number of bits represented by the generated binary string and the file size of the digital file;
un-shuffling, by the micro-processor of the computing device, the second plurality of data segments by executing the shared, looping shuffle algorithm in a reverse manner, wherein each un-shuffling operation of the reversibly-executed shared, looping shuffle algorithm uses a different bit of the generated binary string in a predefined reverse sequence; and
combining, by the micro-processor of the computing device, the un-shuffled second plurality of data segments to obtain the digital file that is stored in the memory in the unshuffled configuration.

### Claim 3 (depends on 2)

The method of claim 2, further comprising removing, by the micro-processor of the computing device, padding data segments from the un-shuffled second plurality of data segments.

### Claim 4 (depends on 1)

The method of claim 1, further comprising padding, by the micro-processor of the computing device, the digital file to have a total size equal to a power of two.

### Claim 5 (depends on 1)

The method of claim 1, further comprising transmitting, by the micro-processor of the computing device, the shuffled digital file with the public filename to another computing device.

### Claim 6 (depends on 1)

The method of claim 1, further comprising reversibly executing, by the micro-processor the computing device, the shared, looping shuffle algorithm on the shuffled digital file using the shared hash function and the public filename to obtain the digital file.

### Claim 7 (depends on 6)

The method of claim 6, wherein the shuffled digital file is obtained from memory by the micro-processor of the computing device.

### Claim 8 (depends on 1)

The method of claim 1, wherein the shared hash function and the shared, looping shuffle algorithm are associated with a file-sharing application.

### Claim 9

A computing device, comprising:
a memory;
a micro-processor coupled to the memory and configured with processor-executable instructions to perform operations comprising:
generating a binary string by applying a shared hash function to a public filename of a digital file that is stored in the memory in an unshuffled configuration;
subdividing the digital file into a first plurality of data segments corresponding to one of a number of bits represented by the generated binary string and a file size of the digital file;
shuffling the first plurality of data segments using a shared, looping shuffle algorithm, wherein each shuffling operation of the shared, looping shuffle algorithm uses a different bit of the generated binary string in a predefined first sequence; and
combining the shuffled first plurality of data segments to obtain a shuffled digital file that is stored according to a shuffled configuration in the memory.

### Claim 10 (depends on 9)

The computing device of claim 9, wherein the micro-processor is configured with processor-executable instructions to perform operations further comprising:
subdividing the shuffled digital file into a second plurality of data segments corresponding to one of the number of bits represented by the generated binary string and the file size of the digital file;
un-shuffling the second plurality of data segments by executing the shared, looping shuffle algorithm in a reverse manner, wherein each un-shuffling operation of the reversibly-executed shared, looping shuffle algorithm uses a different bit of the generated binary string in a predefined reverse sequence; and
combining the un-shuffled second plurality of data segments to obtain the digital file that is stored in the memory in an unshuffled configuration.

### Claim 11 (depends on 10)

The computing device of claim 10, wherein the micro-processor is configured with processor-executable instructions to perform operations further comprising removing padding data segments from the un-shuffled second plurality of data segments.

### Claim 12 (depends on 9)

The computing device of claim 9, wherein the micro-processor is configured with processor-executable instructions to perform operations further comprising padding the digital file to have a total size equal to a power of two.

### Claim 13 (depends on 9)

The computing device of claim 9, wherein the micro-processor is configured with processor-executable instructions to perform operations further comprising transmitting the shuffled digital file with the public filename to another computing device.

### Claim 14 (depends on 9)

The computing device of claim 9, wherein the micro-processor is configured with processor-executable instructions to perform operations further comprising reversibly executing the shared, looping shuffle algorithm on the stored shuffled digital file using the shared hash function and the public filename to obtain the digital file.

### Claim 15 (depends on 14)

The computing device of claim 14, wherein the shuffled digital file is obtained from memory by the micro-processor of the computing device.

### Claim 16 (depends on 9)

The computing device of claim 9, wherein the shared hash function and the shared, looping shuffle algorithm are associated with a file-sharing application.

### Claim 17

A computing device, comprising:
means for generating a binary string by applying a shared hash function to a public filename of a digital file that is stored in a memory of the computing device in an unshuffled configuration;
means for subdividing the digital file into a first plurality of data segments corresponding to one of a number of bits represented by the generated binary string and a file size of the digital file;
means for shuffling the first plurality of data segments using a shared, looping shuffle algorithm, wherein each shuffling operation of the shared, looping shuffle algorithm uses a different bit of the generated binary string in a predefined first sequence; and
means for combining the shuffled first plurality of data segments to obtain a shuffled digital file that is stored according to a shuffled configuration in the memory.

### Claim 18 (depends on 17)

The computing device of claim 17, further comprising:
means for subdividing the shuffled digital file into a second plurality of data segments corresponding to one of the number of bits represented by the generated binary string and the file size of the digital file;
means for un-shuffling the second plurality of data segments by executing the shared, looping shuffle algorithm in a reverse manner, wherein each un-shuffling operation of the reversibly-executed shared, looping shuffle algorithm uses a different bit of the generated binary string in a predefined reverse sequence; and
means for combining the un-shuffled second plurality of data segments to obtain the digital file that is stored in the memory in the unshuffled configuration.

### Claim 19 (depends on 18)

The computing device of claim 18, further comprising means for removing padding data segments from the un-shuffled second plurality of data segments.

### Claim 20 (depends on 17)

The computing device of claim 17, further comprising means for padding the digital file to have a total size equal to a power of two.

### Claim 21 (depends on 17)

The computing device of claim 17, further comprising means for transmitting the shuffled digital file with the public filename to another computing device.

### Claim 22 (depends on 17)

The computing device of claim 17, further comprising means for reversibly executing the shared, looping shuffle algorithm on the shuffled digital file using the shared hash function and the public filename to obtain the digital file.

### Claim 23 (depends on 22)

The computing device of claim 22, further comprising means for obtaining the shuffled digital file from memory of the computing device.

### Claim 24 (depends on 17)

The computing device of claim 17, wherein the shared hash function and the shared, looping shuffle algorithm are associated with a file-sharing application.

### Claim 25

A non-transitory processor-readable storage medium having stored thereon processor-executable instructions configured to cause a processor of a computing device to perform operations comprising:
generating a binary string by applying a shared hash function to a public filename of a digital file that is stored in a memory of the computing device in an unshuffled configuration;
subdividing the digital file into a first plurality of data segments corresponding to one of a number of bits represented by the generated binary string and a file size of the digital file;
shuffling the first plurality of data segments using a shared, looping shuffle algorithm, wherein each shuffling operation of the shared, looping shuffle algorithm uses a different bit of the generated binary string in a predefined first sequence; and
combining the shuffled first plurality of data segments to obtain a shuffled digital file that is stored in a shuffled configuration in the memory.

### Claim 26 (depends on 25)

The non-transitory processor-readable storage medium of claim 25, wherein the stored processor-executable instructions are configured to cause the processor of the computing device to perform operations further comprising:
subdividing the shuffled digital file into a second plurality of data segments corresponding to one of the number of bits represented by the generated binary string and the file size of the digital file;
un-shuffling the second plurality of data segments by executing the shared, looping shuffle algorithm in a reverse manner, wherein each un-shuffling operation of the reversibly-executed shared, looping shuffle algorithm uses a different bit of the generated binary string in a predefined reverse sequence; and
combining the un-shuffled second plurality of data segments to obtain the digital file that is stored in the memory in the unshuffled configuration.

### Claim 27 (depends on 25)

The non-transitory processor-readable storage medium of claim 25, wherein the stored processor-executable instructions are configured to cause the processor of the computing device to perform operations further comprising padding the digital file to have a total size equal to a power of two.

### Claim 28 (depends on 25)

The non-transitory processor-readable storage medium of claim 25, wherein the stored processor-executable instructions are configured to cause the processor of the computing device to perform operations further comprising reversibly executing the shared, looping shuffle algorithm on the shuffled digital file using the shared hash function and the public filename to obtain the digital file.
