Method, apparatus, and computer program (human readable prime number compression (HRPNC))

HRPNC addresses data transfer challenges in air-gapped and remote systems by converting binary data into human-readable prime number compression, enhancing security and stability in data exchange.

JP2025181728APending Publication Date: 2025-12-11INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025086931
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2024-05-30
Filing Date
2025-05-26
Publication Date
2025-12-11

AI Technical Summary

Technical Problem

Computing systems configured for air-gapped security or operating in remote environments face challenges in data transfer due to compromised security and unstable network connections, leading to vulnerabilities and data corruption.

Method used

Implement Human Readable Prime Number Compression (HRPNC) by computing prime factorization of binary objects, mapping prime factors to distinct words, and generating a human-readable compression format that includes occurrence indicators, allowing data transfer via alternative channels.

Benefits of technology

HRPNC enables secure, stable data transfer in air-gapped and remote environments by providing human-readable encoding that reduces errors and vulnerabilities, facilitating data exchange through various media.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025181728000001_ABST
    Figure 2025181728000001_ABST
Patent Text Reader

Abstract

To solve the challenges in some computing systems in sending or receiving data a due to the systems' configurations or security considerations, without causing drawbacks such as effectively temporarily compromising the air-gapped nature of the systems to expose the systems to various vulnerabilities.SOLUTION: Human readable prime number compression (HRPNC) includes the steps of: calculating a prime factorization based on a binary object; mapping, based on data associating a plurality of prime numbers and a plurality of distinct words, one or more prime factors of the prime factorization to a corresponding word; and generating a HRPNC of the binary object comprising the corresponding word for the one or more prime factors and an indication of a number of occurrences for each of the one or more prime factors in the prime factorization.SELECTED DRAWING: Figure 2
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present disclosure relates to methods, apparatus, and products for human readable prime number compression (HRPNC). [Background technology]

[0002] Some computing systems face particular challenges in transmitting or receiving data due to their configuration or security considerations. For example, some systems may be air-gapped, improving security by not maintaining a network connection to an external network. To transfer data to these systems, the data may be loaded from physical storage media or a temporary network connection may be established to a dedicated server from which the data can be loaded. Summary of the Invention [Problem to be solved by the invention]

[0003] However, these approaches essentially temporarily compromise the air-gapped nature of the systems, exposing them to various vulnerabilities. Also, it may be difficult for users to remember, write, or read and accurately input long binary strings in an air-gapped environment. As another example, certain remote environments, such as outer space or underwater, may affect the quality of available network connections. Data transferred to these locations may be slow and unstable, increasing the likelihood that large data transfers may fail, resulting in corrupted data, etc. Also, in these environments, compression of the amount of data transferred may be highly desirable. [Means for solving the problem]

[0004] According to embodiments of the present disclosure, various methods, apparatuses, and products for Human Readable Prime Number Compression (HRPNC) are described herein. In some aspects, Human Readable Prime Number Compression (HRPNC) comprises: computing a prime factorization based on a binary object; mapping one or more prime factors of the prime factorization to corresponding words based on data associating a plurality of prime numbers and a plurality of distinct words; and generating a Human Readable Prime Number Compression (HRPNC) of the binary object including the corresponding words for the one or more prime factors and an indication of the number of occurrences of each of the one or more prime factors in the prime factorization. In some aspects, an apparatus may comprise a processing device; and a memory operatively coupled to the processing device, the memory storing computer program instructions that, when executed, cause the processing device to perform the method. In some aspects, a computer program product comprising a computer-readable storage medium may store computer program instructions that, when executed, perform the method. [Brief explanation of the drawings]

[0005] [Figure 1] 1 illustrates a diagram of an exemplary computing environment for Human Readable Prime Number Compression (HRPNC) according to some embodiments of the present disclosure.

[0006] [Figure 2] 1 shows a flowchart of an exemplary method for HRPNC according to some embodiments of the present disclosure.

[0007] [Figure 3] 1 shows a flowchart of another exemplary method for HRPNC according to some embodiments of the present disclosure.

[0008] [Figure 4] 1 shows a flowchart of another exemplary method for HRPNC according to some embodiments of the present disclosure.

[0009] [Figure 5] 1 shows a flowchart of another exemplary method for HRPNC according to some embodiments of the present disclosure.

[0010] [Figure 6] 1 shows a flowchart of another exemplary method for HRPNC according to some embodiments of the present disclosure.

[0011] [Figure 7] 1 illustrates a flowchart of an exemplary method for adjusting files for acceleration of HRPNC according to some embodiments of the present disclosure.

[0012] [Figure 8] 10 shows a flowchart of another exemplary method of adjusting files for acceleration of HRPNC according to some embodiments of the present disclosure.

[0013] [Figure 9] 10 shows a flowchart of another exemplary method of adjusting files for acceleration of HRPNC according to some embodiments of the present disclosure.

[0014] [Figure 10] 10 shows a flowchart of another exemplary method of adjusting files for acceleration of HRPNC according to some embodiments of the present disclosure.

[0015] [Figure 11] 1 shows a flowchart of an exemplary method for binary salting for HRPNCs according to some embodiments of the present disclosure.

[0016] [Figure 12] 1 shows a flowchart of another exemplary method of binary salting for HRPNCs according to some embodiments of the present disclosure.

[0017] [Figure 13]1 shows a flowchart of an exemplary method of HRPNC for binary variations according to some embodiments of the present disclosure.

[0018] [Figure 14] 10 shows a flowchart of another exemplary method for HRPNC for binary variations according to some embodiments of the present disclosure.

[0019] [Figure 15] 1 shows a flowchart of an exemplary method for checksumming performed on HRPNCs according to some embodiments of the present disclosure.

[0020] [Figure 16] 10 shows a flowchart of another exemplary method for checksumming performed on HRPNCs according to some embodiments of the present disclosure.

[0021] [Figure 17] 10 shows a flowchart of another exemplary method for checksumming performed on HRPNCs according to some embodiments of the present disclosure.

[0022] [Figure 18] 10 shows a flowchart of another exemplary method for checksumming performed on HRPNCs according to some embodiments of the present disclosure.

[0023] [Figure 19] 1 illustrates a flowchart of an exemplary method for translation tables as a service for HRPNC according to some embodiments of the present disclosure.

[0024] [Figure 20] 10 illustrates a flowchart of another exemplary method for translation tables as a service for HRPNC according to some embodiments of the present disclosure.

[0025] [Figure 21]10 illustrates a flowchart of another exemplary method for translation tables as a service for HRPNC according to some embodiments of the present disclosure.

[0026] [Figure 22] 1 illustrates a flowchart of an exemplary method for generating HRPNC metadata for usage requirements according to some embodiments of the present disclosure.

[0027] [Figure 23] 10 illustrates a flowchart of another exemplary method for generating HRPNC metadata for usage requirements according to some embodiments of the present disclosure.

[0028] [Figure 24] 1 illustrates a flowchart of an example method for decompressing an HRPNC object using metadata according to some embodiments of the present disclosure.

[0029] [Figure 25] 10 illustrates a flowchart of another exemplary method for decompressing an HRPNC object using metadata according to some embodiments of the present disclosure.

[0030] [Figure 26] 1 shows a flowchart of an exemplary method of pattern matching for HRPNCs according to some embodiments of the present disclosure.

[0031] [Figure 27] 1 shows a flowchart of another exemplary method of pattern matching for HRPNCs according to some embodiments of the present disclosure.

[0032] [Figure 28] 1 shows a flowchart of another exemplary method of pattern matching for HRPNCs according to some embodiments of the present disclosure.

[0033] [Figure 29]1 shows a flowchart of another exemplary method of pattern matching for HRPNCs according to some embodiments of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION

[0034] In some embodiments, a method for Human Readable Prime Number Compression (HRPNC) comprises computing a prime factorization based on a binary object; mapping one or more prime factors of the prime factorization to corresponding words based on data associating a plurality of prime numbers and a plurality of distinct words; and generating a Human Readable Prime Number Compression (HRPNC) of the binary object that includes the corresponding words for the one or more prime factors and an indication of the number of occurrences for each of the one or more prime factors in the prime factorization. This provides the advantage of generating human-readable data encoding the binary object, allowing data transfer using various channels or media, including audio channels, printouts, etc.

[0035] In some embodiments, the method may comprise determining that a particular prime factor of the prime factorization is greater than the largest prime number in the data associating the plurality of prime numbers and the plurality of distinct words; calculating another prime factorization of the particular prime factor incremented by one; mapping one or more other prime factors of the other prime factorization to other corresponding words based on the data; and generating the HRPNC portion of the binary object including the other corresponding words for the one or more other prime factors and an indication of the number of occurrences of each of the one or more other prime factors in the other prime factorization. This provides the advantage of enabling HRPNC encoding for binary objects having prime factors that exceed the largest prime number mapped to a word when used for HRPNC.

[0036] In some embodiments, the portion of the HRPNC of the binary object is separated from another portion of the HRPNC by a delimiter, which provides the advantage of improving readability and decoding of the HRPNC object.

[0037] In some embodiments, the method may comprise applying a lossless compression algorithm to the binary object, wherein the prime factorization is based on the binary object after lossless compression, which provides the advantage of reducing the amount of data compressed using HRPNC.

[0038] In some embodiments, the plurality of distinct words comprises a plurality of distinct words having the same length, which provides the advantage of simplifying the mapping of prime factors to words during creation of an HRPNC object.

[0039] In some embodiments, the plurality of distinct words excludes any homophones, which provides the advantage of reducing user confusion when entering or reading HRPNC objects.

[0040] In some embodiments, the plurality of distinct words excludes any phonemes, which provides the advantage of reducing user confusion when entering or reading HRPNC objects.

[0041] In some embodiments, the indication of the number of occurrences of each of the one or more prime factors in the prime factorization includes leading digits for each of the one or more prime factors in the prime factorization, which provides the advantage of improving user understanding of the HRPNC object and simplifying decoding of the HRPNC object.

[0042] In some embodiments, the method may comprise generating the prime factorization from the HRPNC based on the data relating the plurality of prime numbers and the plurality of distinct words; and generating the binary object based on the prime factorization, which provides the advantage of enabling recovery of a binary object from its HRPNC encoding.

[0043] In some embodiments, generating the prime factorization includes identifying a portion of the HRPNC designated by a delimiter and calculating the prime factors of the prime factorization by decrementing other prime factorizations encoded in the portion of the HRPNC. This provides the advantage of generating a binary object in which the HRPNC code includes substrings that encode additional data about prime factors beyond the largest prime number mapped to the HRPNC.

[0044] In some embodiments, an apparatus for human readable prime number compression (HRPNC) comprises a processing device; and a memory operatively coupled to the processing device, wherein the memory stores computer program instructions that, when executed, cause the processing device to compute a prime factorization based on a binary object; map one or more prime factors of the prime factorization to corresponding words based on data associating a plurality of prime numbers and a plurality of distinct words; and generate a human readable prime number compression (HRPNC) of the binary object including the corresponding words for the one or more prime factors and an indication of the number of occurrences for each of the one or more prime factors in the prime factorization. This provides the advantage of generating human readable data encoding the binary object, allowing data transfer using various channels or media, including audio channels, printouts, etc.

[0045] In some embodiments, the computer program instructions, when executed, further cause the processing device to determine that a particular prime factor of the prime factorization is greater than the largest prime number in the data associating the plurality of prime numbers and the plurality of distinct words; calculate another prime factorization of the particular prime factor incremented by one; map one or more other prime factors of the other prime factorization to other corresponding words based on the data; and generate a portion of the HRPNC of the binary object that includes the other corresponding words for the one or more other prime factors and an indication of the number of occurrences of each of the one or more other prime factors in the other prime factorization. This provides the advantage of enabling HRPNC encoding for binary objects that have prime factors that exceed the largest prime number mapped to a word when used for HRPNC.

[0046] In some embodiments, the portion of the HRPNC of the binary object is separated from another portion of the HRPNC by a delimiter, which provides the advantage of improving readability and decoding of the HRPNC object.

[0047] In some embodiments, the computer program instructions, when executed, further cause the processing device to apply a lossless compression algorithm to the binary object, wherein the prime factorization is based on the binary object after lossless compression, which provides the advantage of reducing the amount of data compressed using HRPNC.

[0048] In some embodiments, the plurality of distinct words comprises a plurality of distinct words having the same length, which provides the advantage of simplifying the mapping of prime factors to words during creation of an HRPNC object.

[0049] In some embodiments, the plurality of distinct words excludes any homophones, which provides the advantage of reducing user confusion when entering or reading HRPNC objects.

[0050] In some embodiments, the plurality of distinct words excludes any phonemes, which provides the advantage of reducing user confusion when entering or reading HRPNC objects.

[0051] In some embodiments, the indication of the number of occurrences of each of the one or more prime factors in the prime factorization includes leading digits for each of the one or more prime factors in the prime factorization, which provides the advantage of improving user understanding of the HRPNC object and simplifying decoding of the HRPNC object.

[0052] In some embodiments, the computer program instructions, when executed, further cause the processing device to generate the prime factorization from the HRPNC based on the data associating the plurality of prime numbers and the plurality of individual words; and generate the binary object based on the prime factorization, which provides the advantage of enabling the recovery of a binary object from its HRPNC encoding.

[0053] In some embodiments, to generate the prime factorization, the computer program instructions, when executed, further cause the processing device to identify a portion of the HRPNC designated by a delimiter and calculate the prime factors of the prime factorization by decrementing other prime factorizations encoded in the portion of the HRPNC. This provides the advantage that the HRPNC code generates a binary object that includes substrings that encode additional data about prime factors beyond the largest prime number mapped to the HRPNC.

[0054] In some aspects, a computer program product for Human Readable Prime Number Compression (HRPNC) comprises a computer-readable storage medium, which, when executed, comprises computer program instructions for: computing a prime factorization based on a binary object; mapping one or more prime factors of the prime factorization to corresponding words based on data associating a plurality of prime numbers and a plurality of distinct words; and generating a Human Readable Prime Number Compression (HRPNC) of the binary object, the Human Readable Prime Number Compression (HRPNC) comprising the corresponding words for the one or more prime factors and an indication of the number of occurrences for each of the one or more prime factors in the prime factorization. This provides the advantage of generating human-readable data encoding the binary object, allowing data transfer using various channels or media, including audio channels, printouts, etc.

[0055] In some embodiments, the computer program instructions, when executed, determine that a particular prime factor of the prime factorization is greater than the largest prime number in the data associating the plurality of prime numbers and the plurality of distinct words; calculate another prime factorization of the particular prime factor incremented by one; map one or more other prime factors of the other prime factorization to other corresponding words based on the data; and generate the HRPNC portion of the binary object including the other corresponding words for the one or more other prime factors and an indication of the number of occurrences for each of the one or more other prime factors in the other prime factorization. This provides the advantage of enabling HRPNC encoding for binary objects having prime factors that exceed the largest prime number mapped to a word when used for HRPNC.

[0056] In some embodiments, the portion of the HRPNC of the binary object is separated from another portion of the HRPNC by a delimiter, which provides the advantage of improving readability and decoding of the HRPNC object.

[0057] In some embodiments, the computer program instructions, when executed, apply a lossless compression algorithm to the binary object, wherein the prime factorization is based on the binary object after lossless compression, which provides the advantage of reducing the amount of data compressed using HRPNC.

[0058] In some embodiments, the plurality of distinct words comprises a plurality of distinct words having the same length, which provides the advantage of simplifying the mapping of prime factors to words during creation of an HRPNC object.

[0059] Some computing systems face particular challenges in transmitting or receiving data due to their configuration or security considerations. For example, some systems may be air-gapped, improving security by not maintaining a network connection to an external network. To transfer data to these systems, data may be loaded from physical storage media or a temporary network connection may be established to a dedicated server from which the data can be loaded. However, these approaches essentially temporarily compromise the air-gapped nature of the systems and expose them to various vulnerabilities. As another example, certain remote environments, such as outer space or underwater, may affect the quality of available network connections. Data transferred to these locations may be slow and unstable, increasing the likelihood that large data transfers may fail, resulting in corrupted data, etc. Accordingly, it may be beneficial to encode data in a manner suitable for transfer using an alternative channel or medium, thereby improving the ability to receive data in remote or isolated locations and reducing the likelihood of errors caused by unstable or slow digital data transfers.

[0060] 1, an exemplary computing environment according to aspects of the present disclosure is shown. Computing environment 100 includes an example environment for the execution of at least some computer code involved in performing various methods described herein, such as a Human Readable Prime Number Compression (HRPNC) module 107. In addition to HRPNC module 107, computing environment 100 includes, for example, a computer 101, a wide area network (WAN) 102, an end user device (EUD) 103, a remote server 104, a public cloud 105, and a private cloud 106. In this embodiment, computer 101 includes a set of processors 110 (including processing circuitry 120 and cache 121), a communications fabric 111, volatile memory 112, persistent storage 113 (including an operating system 122 and block 107 shown above), a set of peripheral devices 114 (including a set of user interface (UI) devices 123, storage 124, and a set of Internet of Things (IoT) sensors 125), and a network module 115. The remote server 104 includes a remote database 130. The public cloud 105 includes a gateway 140, a cloud orchestration module 141, a set of host physical machines 142, a set of virtual machines 143, and a set of containers 144.

[0061] Computer 101 may take the form of a desktop computer, a laptop computer, a tablet computer, a smartphone, a smartwatch or other wearable computer, a mainframe computer, a quantum computer, or any other now known or later developed computer or mobile device capable of executing programs, network accessing, or querying a database, such as remote database 130. As is well understood in the field of computer technology, and depending on the technology, execution of a computer-implemented method may be distributed among multiple computers and / or among multiple locations. However, in this description of computing environment 100, for purposes of brevity, the detailed discussion focuses on a single computer, specifically computer 101. Computer 101 may be located in a cloud, although it is not depicted in FIG. 1 within the cloud. However, computer 101 is not required to reside in a cloud except to any extent that may be expressly indicated.

[0062] Processor set 110 includes one or more computer processors of any type now known or later developed. Processing circuitry 120 may be distributed across multiple packages, e.g., multiple tailored integrated circuit chips. Processing circuitry 120 may implement multiple processor threads and / or multiple processor cores. Cache 121 is memory located within the processor chip package and typically used for data or code that should be available for fast access by threads or cores executing on processor set 110. Cache memory is typically organized in multiple levels depending on relative proximity to the processing circuitry. Alternatively, some or all of the cache for a processor set may be located "off-chip." In some computing environments, processor set 110 may be designed to operate with qubits and perform quantum computing.

[0063] Computer-readable program instructions are typically loaded onto computer 101 to cause processor set 110 of computer 101 to perform a series of operational steps, thereby realizing a computer-implemented method, whereby the instructions so executed instantiate the method specified in the computer-implemented method flowcharts and / or descriptions contained herein. These computer-readable program instructions are stored in various types of computer-readable storage media, such as cache 121 and other storage media discussed below. The program instructions and associated data are accessed by processor set 110 to control and direct the execution of the computer-implemented method. In computing environment 100, at least some of the instructions for executing the computer-implemented method may be stored in block 107 in persistent storage 113.

[0064] Communications fabric 111 is the signal-conducting pathway that allows various components of computer 101 to communicate with one another. Typically, this fabric is made up of switches and conductive pathways, such as switches and conductive pathways that make up buses, bridges, physical input / output ports, etc. Other types of signal communication pathways may be used, such as fiber optic and / or wireless communication pathways.

[0065] Volatile memory 112 may be any type of volatile memory now known or later developed. Examples include dynamic random access memory (RAM) or static RAM. Typically, volatile memory 112 is characterized by random access, although this is not required unless expressly stated. In computer 101, volatile memory 112 is located in a single package and is internal to computer 101; however, alternatively or additionally, volatile memory may be distributed across multiple packages and / or located external to computer 101.

[0066] Persistent storage 113 is any form of non-volatile storage for a computer, now known or later developed. The non-volatility of this storage means that stored data is maintained regardless of whether power is supplied to computer 101 and / or directly to persistent storage 113. Persistent storage 113 may be read-only memory (ROM), but typically at least a portion of persistent storage allows data to be written, data to be erased, and data to be rewritten. Some well-known forms of persistent storage include magnetic disks and solid-state storage devices. Operating system 122 can take several forms, including various known proprietary operating systems or open-source Posix-based operating systems employing kernels. The code contained in block 107 typically includes at least some computer code associated with performing the computer-implemented methods described herein.

[0067] The peripheral device set 114 includes a set of peripheral devices of the computer 101. Data communication connections between the peripheral devices and other components of the computer 101 may be implemented in various ways, such as Bluetooth® connections, near-field communication (NFC) connections, connections made by cable (such as a universal serial bus (USB)-type cable), insertable connections (e.g., a secure digital (SD) card), connections made through a local area communication network, and further connections made through a wide area network such as the Internet. In various embodiments, the UI device set 123 may include components such as a display screen, speakers, microphones, wearable devices (such as goggles and smartwatches), keyboards, mice, printers, touchpads, game controllers, and haptic devices. The storage 124 may be external storage, such as an external hard drive, or insertable storage, such as an SD card. The storage 124 may be persistent and / or volatile. In some embodiments, the storage 124 may take the form of a quantum computing storage device for storing data in the form of qubits. In embodiments requiring computer 101 to have a large amount of storage (e.g., computer 101 stores and manages a large database locally), this storage may be provided by a peripheral storage device designed for storing very large amounts of data, such as a storage area network (SAN) shared by multiple geographically distributed computers. IoT sensor set 125 consists of sensors that may be used in Internet of Things applications. For example, one sensor may be a thermometer and another may be a motion detector.

[0068] Network module 115 is a collection of computer software, hardware, and firmware that enables computer 101 to communicate with other computers over WAN 102. Network module 115 may include hardware such as a modem or Wi-Fi® signal transceiver, software for packetizing and / or depacketizing data for communication network transmission, and / or web browser software for communicating data over the Internet. In some embodiments, the network control and network forwarding functions of network module 115 are performed on the same physical hardware device. In other embodiments (e.g., embodiments utilizing software-defined networking (SDN)), the control and forwarding functions of network module 115 are performed on physically separate devices, such that the control function manages several different network hardware devices. Typically, computer-readable program instructions for performing a computer-implemented method may be downloaded to computer 101 from an external computer or external storage device through a network adapter card or network interface included within network module 115.

[0069] WAN 102 is any wide area network (e.g., the Internet) capable of communicating computer data over non-local distances by any now known or later developed technology for communicating computer data. In some embodiments, WAN 102 may be replaced and / or supplemented by a local area network (LAN) designed to communicate data between devices located within a local area, such as a Wi-Fi® network. WANs and / or LANs typically include copper transmission cables, optical fiber transmissions, wireless transmissions, and computer hardware such as routers, firewalls, switches, gateway computers, and edge servers.

[0070] End-user device (EUD) 103 is any computer system used and controlled by an end user (e.g., a customer of the enterprise that operates computer 101) and may take any of the forms discussed above in connection with computer 101. EUD 103 typically receives useful and useful data from the operation of computer 101. For example, in the hypothetical case where computer 101 is designed to provide recommendations to the end user, the recommendations would typically be communicated from network module 115 of computer 101 over WAN 102 to EUD 103. In this manner, EUD 103 can display or otherwise present the recommendations to the end user. In some embodiments, EUD 103 may be a client device, such as a thin client, a heavy client, a mainframe computer, a desktop computer, or the like.

[0071] Remote server 104 is any computer system that provides at least some data and / or functionality to computer 101. Remote server 104 may be controlled and used by the same entity that operates computer 101. Remote server 104 represents a machine that collects and stores data that is useful and useful for use by other computers, such as computer 101. For example, in the hypothetical case where computer 101 is designed and programmed to provide recommendations based on historical data, then this historical data may be provided to computer 101 from remote database 130 of remote server 104.

[0072] A public cloud 105 is any computer system available for use by multiple entities that provides on-demand availability of computer system resources and / or other computer capabilities, particularly data storage (cloud storage) and computing power, without direct active management by users. Cloud computing typically leverages resource sharing to achieve coherence and economies of scale. Direct active management of the computing resources of the public cloud 105 is performed by computer hardware and / or software in a cloud orchestration module 141. The computing resources provided by the public cloud 105 are typically implemented by virtual computing environments running on various computers comprising a host physical machine set 142, which is the universe of physical computers within and / or available to the public cloud 105. A virtual computing environment (VCE) typically takes the form of a virtual machine from a virtual machine set 143 and / or a container from a container set 144. It is understood that these VCEs may be stored as images and transferred among and between various hosts of physical machines either as images or after instantiation of the VCE. Cloud orchestration module 141 manages the transfer and storage of images, deploys new instantiations of VCEs, and manages active instantiations of VCE deployments. Gateway 140 is a collection of computer software, hardware, and firmware that enables public cloud 105 to communicate over WAN 102.

[0073] Some further description of virtual computing environments (VCEs) is now provided. A VCE can be stored as an "image." A new, active instance of a VCE can be instantiated from the image. Two well-known types of VCEs are virtual machines and containers. A container is a VCE that uses operating system-level virtualization. This refers to a feature of an operating system in which the kernel allows the existence of multiple isolated user space instances called containers. These isolated user space instances typically behave as actual computers from the perspective of the programs running within them. A computer program running on a typical operating system can utilize all of the computer's resources, such as connected devices, files and folders, network shares, CPU power, and quantifiable hardware capabilities. However, a program running inside a container can only use the contents of the container and of the devices assigned to the container; this feature is known as containerization.

[0074] A private cloud 106 is similar to a public cloud 105, except that its computing resources are available only to a single enterprise. While the private cloud 106 is shown in communication with the WAN 102, in other embodiments, the private cloud may be completely disconnected from the Internet and accessible only through a local / private network. A hybrid cloud is a composite of multiple clouds of different types (e.g., private, community, or public cloud types), often implemented by different vendors. While each of the multiple clouds remains a separate, discrete entity, the larger hybrid cloud architecture is bound together by standardized or proprietary technologies that enable orchestration, management, and / or data / application portability between the constituent clouds. In this embodiment, both the public cloud 105 and the private cloud 106 are part of a larger hybrid cloud.

[0075] 2 illustrates a flowchart of an exemplary method for human readable prime number compression (HRPNC) according to some embodiments of the present disclosure. The method of FIG. 2 may be performed, for example, using the HRPNC module 107 of FIG. 1. The method of FIG. 2 includes a step 202 of computing prime factorization based on a binary object. A binary object is an instance or unit of data that is compressed using HRPNC. For example, a binary object may include a file, an archive of multiple files, an executable file, and other types of data, as will be understood.

[0076] A prime factorization of a given number expresses the given number as a product of one or more prime numbers (of one or more prime factors). Accordingly, computing a prime factorization for a given number includes computing the prime factors of the given number. The prime factorization is computed 202 based on a binary object, which may be based on a numeric representation of the binary object. For example, in some embodiments, the numeric representation of the binary object may include a numeric representation of a binary string that encodes the binary object (e.g., into decimal or some other numeric encoding scheme). As another example, as described in more detail below, the numeric representation may include the result of applying a compression algorithm to the binary object (e.g., a lossless compression algorithm other than HRPNC as described herein, etc.). As an example, assume a binary object represented by the binary string "0000001100011000." The reader will understand that this binary string contains relatively fewer digits than most use cases and has been abbreviated for clarity and brevity. This binary string is the decimal equivalent of "792" obtained by factorizing "2x2x2x3x3x11".

[0077] The method of Figure 2 also includes step 204 of mapping one or more prime factors of the prime factorization to corresponding words based on data associating a plurality of prime numbers and a plurality of distinct words. The data includes a table or other data structure with each entry including a prime number and a corresponding word. This data is hereinafter referred to as a "table," although other data structures are also considered within the scope of this disclosure. For example, in some embodiments, a table of N entries may include entries for the first N prime numbers.

[0078] The table facilitates the conversion of prime factorizations into human-readable word combinations by mapping prime numbers to words. The specific set of words mapped by the table may vary depending on specific design considerations and could potentially include any set of human-readable words. In some embodiments, the table may map prime numbers to a set of words that all have the same length (e.g., three letters, four letters, etc.). For example, in some embodiments, assuming there are 1063 three-letter words in the English language, the table may map the first 1063 prime numbers to different three-letter English words. In some embodiments, the set of numbers mapped by the table may be selected to exclude phonemes (homonyms), homonyms (similarly spelled words), or other words that meet certain criteria. For example, in some embodiments, the set of words may be dynamically generated based on these criteria or dynamically filtered to exclude words based on these criteria. Such an approach may be used to prevent incorrect entry of words when manually entering compressed binary objects for decompression.

[0079] Using this table, each of the prime factors is mapped to a corresponding word. As an example, assume a table that matches three-letter words to prime numbers, where the prime number 2 is mapped to "ace," the prime number 3 is mapped to "act," and the prime number 11 is mapped to "ago." Here, the prime factorization of an exemplary binary object might be expressed as "ace, ace, ace, act, act, ago." The reader will understand that in some embodiments, the prime factorization of a given binary object may include prime numbers outside the range of prime numbers mapped by the table. This is addressed in more detail below.

[0080] The method of FIG. 2 also includes generating 206 a Human Readable Prime Number Compression (HRPNC) of a binary object that includes corresponding words for one or more prime factors and an indication of the number of occurrences for each of the one or more prime factors in the prime factorization. In other words, the mapping of prime factors to words is used to generate the HRPNC of the binary object (e.g., the compressed binary object). The compressed binary object may include a string of words or other symbols that are mapped to the prime factors of the prime factorization. In some embodiments, the compressed binary object may include an indication of the number of occurrences that each prime factor occurs in the prime factorization. Returning to the example above, the prime factorization may include three occurrences of prime number 2, two occurrences of prime number 3, and one occurrence of prime number 11. Accordingly, the resulting compressed binary object may include the string "3Ace2ActAgo." In this example, the indication of the number of occurrences for a given prime factor is the leading digit adjacent to the corresponding word. Also, in this example, prime factors with a single occurrence (e.g., "ago" or 11) are missing leading digits. Accordingly, an indication of the number of occurrences of a given prime factor is implicit or included by omission (e.g., the missing leading digit serves as the indication). In some embodiments, the compressed binary object may include leading digits or other numeric indications of a single occurrence of a given prime factor.

[0081] The reader will understand that the above exemplary compressed binary object is merely illustrative, and that other arrangements of words and representations of the number of occurrences are also contemplated within the scope of this disclosure. For example, while the above example includes capitalizing each word to make it easier to read, other capitalization schemes may also be used. As another example, while the above example includes representations as leading numbers associated with the corresponding word, trailing numbers or other arrangements of such representations may also be used.

[0082] The approach presented above allows for the conversion of binary objects into human-readable string codes. This can be useful in a variety of use cases related to data exchange or transmission. For example, a human can manually input a compressed binary object to be read by another human using a secure voice line or by reading a printout of the compressed binary object to provide data to an air-gapped or blacksite system without a direct network connection or the ability to load from external media. As another example, optical character recognition (OCR) techniques can be used to scan printed or displayed instances of the compressed binary object. As described in more detail below, the HRPNC can be reversed in linear time after the compressed binary object is stored within a computer system, thereby enabling the compressed binary object to be decompressed.

[0083] As another example, in very remote locations, including underwater or in outer space, network connections may be slow or error-prone, increasing the likelihood of data loss when transferring long files. An automated sound loop that reads the HRPNC may be used to provide encoded data for such locations, with the loop serving to fill in any gaps or clarify any previously listed portions of the HRPNC. Also, using quantum computing to perform the HRPNC allows for data transfer in n hours, with no lag time between transmission of any amount of data over the internet.

[0084] For further explanation, Figure 3 shows a flowchart of an exemplary method of HRPNC according to some embodiments of the present disclosure. The method of Figure 3 is similar to Figure 2 in that it also includes step 202 of computing a prime factorization based on a binary object; step 204 of mapping one or more prime factors of the prime factorization to corresponding words based on data associating a plurality of prime numbers and a plurality of distinct words; and step 206 of generating a human readable prime number condensation (HRPNC) of the binary object, which includes corresponding words for the one or more prime factors and an indication of the number of occurrences for each of the one or more prime factors in the prime factorization.

[0085] The method of Figure 3 differs from Figure 2 in that it also includes step 302 of determining that a particular prime factor of the prime factorization is greater than the largest prime number in data associating a plurality of prime numbers and a plurality of distinct words. As noted above, in some embodiments, a given prime factorization may contain a prime number that is greater than any prime number mapped by the aforementioned table. Accordingly, it is not possible to directly map that prime number to a corresponding word in the table.

[0086] Consider another example of the prime factorization "1214113112," which is "2x2x2x3x3x11x15329711." In other words, this prime factorization is identical to the previous example with the addition of the prime factor "15329711." Using the previous example, where the table maps the first 1063 primes to their corresponding three-letter words, 15329711 is greater than the 1063rd prime, 8527. In other words, the particular prime factor 15329711 is greater than the largest prime that has been mapped, 8527.

[0087] The method of Figure 3 also includes step 304 of calculating other prime factorizations of the particular prime factor that has been incremented by one. Incrementing the particular prime factor by one ensures that the prime factors in such other prime factorizations are smaller than the square root of the particular prime factor. The method of Figure 3 also includes step 306 of mapping one or more other prime factors of the other prime factorizations to other corresponding words based on the data. Step 306 of mapping one or more other prime factors of the prime factorization may be performed according to a similar approach as that shown above with respect to step 204 of mapping one or more prime factors of the prime factorization to corresponding words.

[0088] 3 also includes generating 308 an HRPNC portion of the binary object that includes other corresponding words for one or more other prime factors and an indication of the number of occurrences for each of the other prime factors in other prime factorizations. The HRPNC portion is generated 308 according to a similar approach as that shown above with respect to generating 206 an HRPNC, but using other prime factorizations and mappings. Continuing with the example above using the particular prime factor 15329711, this other prime factorization (15329711+1) is "2x2x2x2x3x389x821." Using the exemplary mapping for three-letter words for prime numbers, this results in an HRPNC portion of "4AceActMapPeg," with "map" mapped to "389" and "peg" mapped to "821."

[0089] This portion of the HRPNC may then be included in, combined with, or encoded using a previously discussed HRPNC using a set of prime factors that excludes certain prime factors beyond the largest number being mapped. For example, in some embodiments, a portion of the HRPNC may be separated from the remainder of the HRPNC using a delimiter, such as a "+" or another symbol or combination of symbols, as will be understood. Continuing with this example, a binary object represented as "1214113112" and having the factorization "2x2x2x3x3x11x15329711" may have a compressed binary object "3Ace2ActAgo+4AceActMapPeg," where the compressed binary object includes a first substring corresponding to those prime factors of the mappable binary object and a second substring corresponding to the prime factors of the initial factorization that cannot be mapped and identified by a delimiter.

[0090] The approach presented above addresses the limitations in mapping prime numbers to a limited set of words, allowing HRPNC to be used for factorizations that include prime factors outside the mapping range. The reader will understand that as prime number discovery progresses logarithmically, the factorization will generally include additional instances of smaller prime numbers as the binary object grows numerically larger.

[0091] For further explanation, Figure 4 shows a flowchart of an exemplary method of HRPNC according to some embodiments of the present disclosure. The method of Figure 4 is similar to Figure 2 in that it also includes step 202 of computing a prime factorization based on a binary object; step 204 of mapping one or more prime factors of the prime factorization to corresponding words based on data associating a plurality of prime numbers and a plurality of distinct words; and step 206 of generating a human readable prime number compression (HRPNC) of the binary object, which includes corresponding words for the one or more prime factors and an indication of the number of occurrences for each of the one or more prime factors in the prime factorization.

[0092] The method of FIG. 4 differs from FIG. 2 in that it also includes step 402 of applying a lossless compression algorithm to the binary object. Lossless compression, as will be understood, may include any lossless compression algorithm, such as Huffman compression. Step 402 of applying lossless compression to the binary object reduces the overall size of the binary object, potentially reducing the overall size of the compressed binary object after HRPNC is performed and reducing the mathematical complexity of step 202 of computing a prime factorization based on the binary object. Accordingly, in such embodiments, prime factorization of the binary object or any other data as described herein may include prime factorization of the binary object or other data after application of a lossless compression algorithm. In other words, any of the operations described herein as being applied to or performed on a binary object may also be applied to or performed on an instance of the binary object after application of lossless compression.

[0093] For further explanation, Figure 5 shows a flowchart of an exemplary method of HRPNC according to some embodiments of the present disclosure. The method of Figure 5 is similar to Figure 2 in that it also includes step 202 of computing a prime factorization based on a binary object; step 204 of mapping one or more prime factors of the prime factorization to corresponding words based on data associating a plurality of prime numbers and a plurality of distinct words; and step 206 of generating a human readable prime number compression (HRPNC) of the binary object, which includes corresponding words for the one or more prime factors and an indication of the number of occurrences for each of the one or more prime factors in the prime factorization.

[0094] The methods of Figures 5 and 6 describe how to invert HRPNC to decompress compressed binary objects generated using HRPNC. While described in parallel with approaches for executing HRPNC for clarity, the reader will understand that the approaches described herein for decompressing compressed binary objects may be performed by an entity different from that which originally generated the compressed binary objects, and thus may be performed independently of any stage of the execution of HRPNC. For example, decompression of a compressed binary object may be performed by a recipient of a binary object that has been compressed using HRPNC.

[0095] The method of Figure 5 differs from Figure 2 in that it also includes step 502 of generating a prime factorization based on data associating multiple prime numbers and multiple individual words from the HRPNC (e.g., from the compressed binary object). In other words, the prime factorization based on the binary object is reproduced using the compressed binary object. Specifically, the same table that maps prime numbers to words should be used to ensure accurate conversion between words and their corresponding prime numbers.

[0096] As an example, to generate a prime factorization 502, one or more words may be identified in the compressed binary object. If the compressed binary object includes multiple parts separated by delimiters, the one or more words may be identified in a particular part (e.g., the beginning) of the compressed binary object. For each of these one or more words, the number of occurrences may also be identified from the compressed binary object. Using a table, corresponding prime numbers for each of these words are identified. A prime factorization may then be generated with each corresponding prime number included according to their number of occurrences. For example, for the compressed binary object "3Ace2ActAgo," the prime factorization may be generated as "2x2x2x3x3x11." The reader will understand that in this example, the compressed binary object does not include parts separated by delimiters that correspond to prime factors greater than the largest number being mapped. Such a situation is described in more detail below.

[0097] 5 also includes generating 504 a binary object based on the prime factorization. For example, generating 504 the binary object may include multiplying each prime factor in the prime factorization to generate the binary object. If lossless compression was applied to the binary object before computing the prime factorization, the generated 504 binary object may include the binary object as reflecting the lossless compression.

[0098] The reader will understand that in some embodiments, generating prime factorizations 502 and generating binary objects 504 may be performed in combination or at least partially in parallel. For example, rather than extracting the full prime factorizations from the compressed binary object before generating the binary object as a product of the full prime factorizations, the prime factors may be linearly extracted from the compressed binary object and ultimately multiplied into a cumulative sum in the binary object once parsing of the compressed binary object is complete.

[0099] For further explanation, Figure 6 shows a flowchart of an exemplary method of HRPNC according to some embodiments of the present disclosure. The method of Figure 6 is similar to Figure 5 in that it also includes step 202 of calculating a prime factorization based on a binary object; step 204 of mapping one or more prime factors of the prime factorization to corresponding words based on data associating a plurality of prime numbers and a plurality of individual words; step 206 of generating a human readable prime number condensation (HRPNC) of the binary object including corresponding words for the one or more prime factors and an indication of the number of occurrences of each of the one or more prime factors in the prime factorization; step 502 of generating a prime factorization from the HRPNC based on data associating a plurality of prime numbers and a plurality of individual words; and step 504 of generating a binary object based on the prime factorization.

[0100] The method of Figure 6 differs from Figure 5 in that step 502 of generating a prime factorization from an HRPNC based on data associating a plurality of prime numbers and a plurality of individual words also includes step 602 of identifying a portion of the HRPNC designated by a delimiter. The delimiter includes a delimiter (e.g., "+" in the example above) that designates a portion of the HRPNC (e.g., compressed binary object) that corresponds to a particular prime factor beyond the largest prime number being mapped. To generate 502 the prime factorization, this particular prime factor must be calculated using the delimited portion of the compressed binary object.

[0101] Accordingly, generating a prime factorization 502 also includes calculating 604 a prime factor of the factorization (e.g., a particular prime factor as described above) by decrementing another prime factor encoded in a portion of the HRPNC. As shown, a substring of the HRPNC designated by a delimiter can be used to encode another prime factorization that is calculated by incrementing a particular prime factor by 1. Thus, to calculate 604 a prime factor, this substring can be decoded and then decremented by 1 using a similar approach as shown above.

[0102] Returning to the above example for the compressed binary object "3Ace2ActAgo+4AceActMapPeg," the first part of the prime factorization can be calculated as described above using the substring of the compressed binary object that occurs before the delimiter. This results in the first part of the prime factorization "2x2x2x3x3x11." The second part of the prime factorization can then be calculated using the "4AceActMapPeg" substring that occurs after the delimiter. This substring converts to "2x2x2x2x3x389x821," which is equal to the value 15329712. Decrementing this value by one results in the specific prime factor 15329711. Therefore, in combination with the other parts of the prime factorization, this results in the prime factorization of the binary object "2x2x2x3x3x11x15329711." When multiplied together, this prime factorization equals the original binary object "1214113112." Therefore, the original binary object has been reconstructed using a string containing the human-readable words in the prime factorization and the associated number of occurrences.

[0103] The reader understands that to perform HRPNC on a given binary object, prime factorization may need to be performed on potentially large numbers. Such prime factorization may take an indeterminate or unpredictable time to complete, and in some cases may be impossible to complete. Accordingly, it may be beneficial to attempt to accelerate HRPNC for a given binary object using simultaneous or parallel HRPNC compression.

[0104] Accordingly, for further explanation, FIG. 7 illustrates a flowchart of an exemplary method of preparing a file for Human Readable Prime Number Compression (HRPNC) acceleration according to some embodiments of the present disclosure. The method of FIG. 7 includes generating multiple variants of a binary object (step 702). In some embodiments, generating multiple variants of a binary object (step 702) may be performed in response to a command or signal to perform HRPNC on the binary object. In some embodiments, generating multiple variants of a binary object (step 702) may be performed in response to the time taken to perform HRPNC on the binary object exceeding a certain time threshold. In some embodiments, variants of a given binary object are different versions of the given binary object that are functionally identical or equivalent despite containing different data. Accordingly, in some embodiments, generating multiple variants of a binary object (step 702) may include various approaches depending on the data encoded in the binary object.

[0105] For example, in some embodiments, generating 702 multiple variants of a binary object may include adding 704 one or more files to the data encoded in the binary object. This may be used, for example, when the binary object encodes an archive of files or part of a file system, or in other embodiments in which multiple files are encoded in the binary object. As one example, one or more files or one or more folders of empty data may be added. As another example, one or more files of data that are not accessed (e.g., by code or executable content in the binary object) may be added. Although such variants contain different data due to these additional files, such variants remain functionally equivalent to the original binary object. In some embodiments, adding 704 one or more files to the data encoded in the binary object may include recompiling or repackaging the data to generate the variant binary object.

[0106] In some embodiments, generating 702 multiple variants of a binary object may include renaming 706 one or more files of data encoded in the binary object. In some embodiments, renaming 706 one or more files may include modifying one or more references (e.g., in code or other encoded data) to one or more files to reflect their updated names. Again, such variants contain different data under these different names, but such variants remain functionally equivalent to the original binary object. In some embodiments, renaming 706 one or more files of data encoded in the binary object may include recompiling or repackaging the data to generate the variant binary object.

[0107] In some embodiments, generating 702 multiple variants of a binary object may include generating 708 one or more comment variants for source code encoded in the binary object. A comment variant for source code is an instance of source code that differs from another instance of that source code in its comments. In other words, a comment variant for source code may contain functionally identical or equivalent source code with different comments. In some embodiments, if the binary object includes a file of uncompiled code, such as an archive, such comment variants may be reflected in the uncompiled code stored in a different variant binary object. In some embodiments, if the binary object includes an executable file compiled from source code, such comment variants may be reflected in the source code before compilation into a variant binary object. As an example, in some embodiments, generating 708 comment variants may include adding comments, removing existing comments, modifying existing comments, etc., for a given file of source code.

[0108] In some embodiments, generating 702 multiple variants of the binary object may include iteratively compiling 710 the source code using different compiler options. In other words, if the binary object includes compiled code, the same code base may be compiled in different ways to generate different variants of the binary object. Such different compiler options may include, for example, different flags or parameters used in commands (e.g., command line interface (CLI) commands or other commands, as will be understood), or various other options, as will be understood.

[0109] In some embodiments, generating multiple variants 702 may be performed automatically. For example, in some embodiments, the variations described above may be performed programmatically (e.g., on source code or files encoded in a binary object) to generate a number of variants. In some embodiments, the specific number of variants may be predefined, determined based on configuration options or user-provided commands, learned over time based on previously performed HRPNCs, dynamically calculated based on the amount of computational and storage resources, etc. The reader understands that the examples provided above for generating variants 702 of a binary object are merely illustrative, and that other approaches are also contemplated within the scope of the present disclosure. The reader also understands that the exemplary approaches for generating variants 702 provided above, as well as other approaches not explicitly shown, may be used individually or in combination with each other.

[0110] In some embodiments, generating 702 the plurality of variants may be facilitated by a generative artificial intelligence (AI) model, such as a large language model (LLM) or another generative AI model, as will be appreciated. For example, a generative AI model may be used when renaming files such that the renamed files are based on synonyms or other variations of their original names. As another example, a generative AI model may be used to generate or modify comments in source code.

[0111] 7 also includes performing 712 HRPNC on each variant of the binary object. In some embodiments, performing 712 HRPNC on each variant of the binary object may include performing HRPNC on each of the generated 702 variants, and may also include performing HRPNC on the original binary object. In other words, the original binary object may also be considered a variant because it is different from the other generated 702 variants of the binary object.

[0112] The stage 712 of performing HRPNC on each variant of the binary object may be performed using an approach similar to that shown above. Upon completion or completion, HRPNC for a given variant of the binary object results in a compressed variant. Here, the stage 712 of performing HRPNC on each variant of the binary object includes initiating HRPNC on each variant of the binary object without necessarily waiting or predicting that HRPNC is completed for each variant. In some embodiments, HRPNC may be performed on each variant of the binary object at least partially in parallel, such that HRPNC is applied to each variant substantially simultaneously.

[0113] The method of Figure 7 also includes a step 714 of identifying a first-to-complete HRPNC. In other words, for each HRPNC initialized during step 712 of executing the HRPNC for each variant of the binary object, the first-to-complete one is identified or detected. The method of Figure 7 also includes a step 716 of providing a compressed variant of the first-to-complete HRPNC. In other words, the output or result of the first-to-complete HRPNC is provided as the compressed variant. In some embodiments, step 716 of providing a compressed variant may include providing the compressed variant as an output or response to a command to compress the binary object using the HRPNC. In some embodiments, step 716 of providing a compressed variant may include storing data encoding the compressed variant.

[0114] Consider an example where a user wishes to perform HRPNC on a binary object that encodes a file archive. After some time, it may be determined that performing HRPNC on this binary object is either computationally too expensive or potentially impossible. For example, a time threshold may be reached, or the user may automatically indicate that they wish to attempt HRPNC on a variant of the file archive instead. In response, variants of this file archive may be generated with renamed files, additional empty files, etc., to introduce variations in the binary objects being encoded and, therefore, their prime factorization. Once HRPNC is completed for one of these variants, the compressed variant is then provided as output, and may be distributed as desired by the user.

[0115] The reader will understand that each variant of a binary object is different to some extent, and therefore their resulting prime factorizations will also be different. Also, the computational complexity and resource utilization of calculating these prime factors may vary significantly between variants. Accordingly, by generating multiple variants and applying HRPNC to them simultaneously, the likelihood that a variant will have a prime factorization that is computationally low, or even computationally feasible, increases.

[0116] For further explanation, Figure 8 shows a flowchart of another exemplary method of preparing a file for acceleration of human readable prime number compression (HRPNC) according to some embodiments of the present disclosure. The method of Figure 8 is similar to that of Figure 7 in that it also includes generating 702 multiple variants of a binary object. In some embodiments, the variants of a given binary object are different versions of the given binary object that are functionally identical despite containing different data, and include adding 704 one or more files to the data encoded in the binary object; renaming 706 one or more files of the data encoded in the binary object; generating 708 one or more comment variants for the source code encoded in the binary object; or iteratively compiling 710 the source code using different compiler options; running 712 HRPNC on each variant of the binary object; identifying 714 the first completed HRPNC; and providing 716 a compressed variant of the first completed HRPNC.

[0117] The method of Figure 8 differs from Figure 7 in that it also includes step 802 of terminating any uncompleted HRPNCs for each variant of the binary object in response to identifying the first completed HRPNC. Because one instance of the HRPNC for a variant of the binary object has completed, it may be unnecessary to continue the HRPNC for the remaining variants of the binary object. Accordingly, in some embodiments, these other HRPNC processes may be terminated to reduce overall resource usage. In some embodiments, after these other HRPNC processes have terminated, one or more of these respective variants may also be deleted to reduce overall storage space usage.

[0118] For further explanation, Figure 9 shows a flowchart of another exemplary method of preparing a file for acceleration of human readable prime number compression (HRPNC) according to some embodiments of the present disclosure. The method of Figure 9 is similar to Figure 7 in that it also includes generating 702 multiple variants of a binary object. In some embodiments, the variants of a given binary object are different versions of the given binary object that are functionally identical despite containing different data, and include adding 704 one or more files to the data encoded in the binary object; renaming 706 one or more files of the data encoded in the binary object; generating 708 one or more comment variants for the source code encoded in the binary object; or iteratively compiling 710 the source code using different compiler options; running 712 HRPNC on each variant of the binary object; identifying 714 the first completed HRPNC; and providing 716 a compressed variant of the first completed HRPNC.

[0119] The method of Figure 9 differs from Figure 7 in that it also includes step 902 of generating one or more instructions to undo the variation associated with the compression variant (e.g., the first completed HRPNC). When executed, the one or more instructions convert the variant binary object (e.g., as encoded in the compression variant) back to the original binary object from which the variant binary object was generated. The one or more instructions may include, for example, executable code, script, etc.

[0120] In some embodiments, one or more instructions may be stored or provided as a separate output or data payload from a compressed variant. Thus, when providing or transmitting a compressed variant, one or more instructions must also be transmitted or provided separately. In some embodiments, one or more instructions (e.g., data encoding one or more instructions) may also be compressed using HRPNC. In such embodiments, one or more instructions may be encoded along with or appended to the compressed variant. For example, a separate delimiter may be used to separate the HRPNC encoding of one or more instructions from the HRPNC encoding of one or more instructions in the same string encoding.

[0121] 9 illustrates generating one or more instructions 902 as being performed in a particular order of steps, the reader will understand that in some embodiments, generating one or more instructions 902 may be performed at other times. For example, in some embodiments, generating one or more instructions 902 may be performed as part of generating multiple variants 702. For example, when generating multiple variants 702, one or more instructions may be generated 902 and stored for later use. As another example, one or more instructions may be generated 902 and included as data encoded in the corresponding variant itself.

[0122] The reader will also understand that although the method of Figure 9 describes generating 902 one or more instructions to undo variations that associate a compression variant, instructions may also be generated for other variants. For example, when generating 702 multiple variants, instructions to undo each of those generated variants may be generated, stored for later use, encoded with each of those variants, etc.

[0123] The approach presented above facilitates the reversal of variations introduced to accelerate HRPNC of a binary object. While the variations may be functionally equivalent, a user may nevertheless wish to restore a variant to its original state. The generated instruction(s) facilitate the automatic reversal of any introduced variant.

[0124] For further explanation, Figure 10 shows a flowchart of another exemplary method of preparing a file for acceleration of human readable prime number compression (HRPNC) according to some embodiments of the present disclosure. The method of Figure 10 is similar to that of Figure 7 in that it also includes generating 702 multiple variants of a binary object. In some embodiments, the variants of a given binary object are different versions of the given binary object that are functionally identical despite containing different data, and include adding 704 one or more files to the data encoded in the binary object; renaming 706 one or more files of the data encoded in the binary object; generating 708 one or more comment variants for the source code encoded in the binary object; or iteratively compiling 710 the source code using different compiler options; running 712 HRPNC on each variant of the binary object; identifying 714 the first completed HRPNC; and providing 716 a compressed variant of the first completed HRPNC.

[0125] The method of FIG. 10 differs from FIG. 7 in that it also includes step 1002 of generating a notification indicating the first completed HRPNC. In some embodiments, the notification may identify the specific variants being compressed into the compressed variant. In some embodiments, the notification may include or provide a reference to the compressed variant. In some embodiments, the notification may include performance metrics or statistics associated with the first completed HRPNC, such as the time it takes to complete or the amount of computational or storage resources used. In some embodiments, the notification may include one or more selectable elements for various actions that can be taken upon completion of the compression of the compressed variant. For example, the notification may allow a user to manually terminate an incomplete HRPNC process, delete a variant used in an incomplete HRPNC process, etc.

[0126] For further explanation, FIG. 11 shows a flowchart of an exemplary method of binary salting for HRPNC according to some embodiments of the present disclosure. The method of FIG. 11 includes stage 1102 of detecting that a time threshold has been reached during HRPNC of a binary object. HRPNC of a binary object may be performed according to a similar approach as that shown above. In some embodiments, the time threshold may include a predefined time threshold. In some embodiments, the time threshold may include a configurable or user-defined time threshold. In some embodiments, the time threshold may be dynamically calculated depending on various factors, such as current resource usage or resource usage over time, the size of the binary object, etc. Reaching the time threshold may indicate that the HRPNC of the binary object is determined to be extremely complex, for example, when calculating prime factorization for the binary object.

[0127] The method of Figure 11 also includes generating 1104 one or more salted variants of the binary object by applying a corresponding salt value to the binary object in response to reaching a time threshold. As noted above, the time and computational resources required to calculate the prime factorization of different values ​​can vary significantly. Accordingly, different versions or modifications of the binary object may have different levels of complexity and resource utilization when calculating their prime factorization for the HRPNC. In contrast to the approach described above, in which variants of a binary object are created by modifying the data underlying the binary object, the salted variants of the binary object are generated 1104 by applying a salt value to the binary object.

[0128] A salt value is a numerical value that is applied to a binary object using a mathematical or logical operation. For example, in some embodiments, applying a salt value to a binary object may include adding the salt value. Other mathematical or logical operations may also be used when applying a salt value. In some embodiments, generating 1104 one or more salted variants may include applying the same operation to the binary object using different salt values. In some embodiments, generating 1104 one or more salted variants may include applying different operations to the binary object using similar or different values. In some embodiments, the number of salted variants generated 1104 may be predefined, configurable, dynamically calculated based on available processing or storage resources, learned based on HRPNC activity over time, etc.

[0129] The particular salt value applied when generating 1104 the salted variant may vary depending on particular design or engineering considerations. In some embodiments, the salt value may be randomly generated. In some embodiments, if the salt value is randomly generated, such salt value may be randomly generated subject to various constraints, such as minimum or maximum salt values ​​or other constraints, as will be understood. In some embodiments, the salt value may be selected (e.g., randomly or using another approach) from a selection range of prime numbers. For example, in some embodiments, the salt value may be selected from a set of prime numbers mapped to corresponding words used in HRPNC, such as described above with respect to the tables used in HRPNC. In some embodiments, the salt value may be calculated as a factor of a prime number in that set of prime numbers. For example, a prime number may be selected from the set of mapped prime numbers, and the multiplication factor may be generated or selected as an integer value. The salt value may then be calculated as the product of the multiplication factor and the selected prime number. As will be explained in more detail below, a salt value equal to the prime number being mapped or a factor of that prime number facilitates encoding the salt value using the HRPNC.

[0130] 11 also includes performing HRPNC on each of the one or more salted variants of the binary object 1106. Performing HRPNC on each of the one or more salted variants of the binary object 1106 includes initiating HRPNC on each of the one or more salted variants without necessarily completing HRPNC on the one or more salted variants. In some embodiments, HRPNC is performed 1106 at least partially in parallel on each of the one or more salted variants such that HRPNC on each of the one or more salted variants occurs substantially simultaneously.

[0131] The method of Figure 11 also includes step 1108 of providing a compressed salted variant. In some embodiments, the compressed salted variant may include the compressed salted variant of the first completed HRPNC. In some embodiments, if the HRPNC is completed for multiple compressed salted variants, the provided compressed salted variant may include the shortest compressed salted variant (e.g., by character length), the simplest compressed salted variant (e.g., with the fewest mapped words), or another compressed salted variant, as will be understood. In other words, in response to detecting the first completed HRPNC, an output (e.g., a compressed salted variant) of the first completed HRPNC is provided 1108. Step 1108 of providing a compressed salted variant may include outputting the compressed salted variant (e.g., a string code derived from the HRPNC), storing the compressed salted variant, etc. Therefore, after compressing multiple salted variants simultaneously using HRPNC, the first HRPNC compressed salted variant is provided1108.

[0132] Other actions may also be taken in response to detection of the first-completed HRPNC. For example, in some embodiments, a notification may be generated indicating the first-completed HRPNC, the corresponding salted variant, the corresponding salt value, associated performance metrics, etc. As another example, in some embodiments, incomplete HRPNC processes for remaining salted variants may be automatically terminated. As a further example, remaining salted variants may be automatically deleted.

[0133] The reader will understand that the salt value used to generate each salted variant is required to decompress the compressed salted variant. Also, if different operations may be used in applying the salt value, an operation identifier indicating the operation used to apply the salt value is also required. Accordingly, in some embodiments, the salt value may be provided to a recipient of the compressed salted variant as a separate data payload, transmission, etc. In such embodiments, the salt value itself may be compressed using HRPNC. In other embodiments, the salt value may be encoded along with the compressed salted variant, with or without compressing the salt value using HRPNC, as described in further detail below.

[0134] 11 describes generating salted variants and performing HRPNC on these salted variants in response to reaching a time threshold for compressing a binary object, the reader will also understand that the approach described herein may be used without reaching any particular time threshold. For example, multiple salted variants may be automatically generated for HRPNC in response to a user command to compress an original binary object.

[0135] The approach presented above uses salted variants to accelerate HRPNC. The application of a salt value to a binary object introduces variations to the binary object, resulting in multiple salted variants. These salted variants may have different computational requirements for their respective prime factorization calculations. Accordingly, the more salted variants are used, the more likely the salted variants may be to complete HRPNC within time or resource limitations.

[0136] For further explanation, Figure 12 shows a flowchart of another exemplary method for salting a binary for HRPNC according to some embodiments of the present disclosure. The method of Figure 12 is similar to Figure 11 in that it also includes step 1102 of detecting that a time threshold has been reached during human readable prime number compression (HRPNC) of the binary object; step 1104 of generating one or more salted variants of the binary object by applying a corresponding salt value to the binary object in response to reaching the time threshold; step 1106 of performing HRPNC on each of the one or more salted variants of the binary object; and step 1108 of providing a compressed salted variant.

[0137] The method of Figure 12 differs from Figure 11 in that it also includes step 1202 of encoding a corresponding salt value along with the compressed salted variant. In other words, a single code (e.g., a single string code) may be generated that includes the compressed salted variant and the corresponding salt value. In some embodiments, the corresponding salt value may be separated from the compressed salted variant using a delimiter. Accordingly, in some embodiments, step 1202 of encoding the corresponding salt value along with the compressed salted variant may include step 1204 of separating the corresponding salt value from the compressed salted variant using a delimiter.

[0138] Consider an example binary object with numeric representation 15329607. Suppose that among multiple salted variants, a particular salted variant with an additional salt value of 104 finishes the HRPNC first. This compressed salted variant may be represented as "3Ace2ActAgo+4AceActMapPeg" in the HRPNC code (15329607+104==15329711). In this example, a delimiter such as "#" may be used to separate the compressed salted variant from the salt value, resulting in the string code "3Ace2ActAgo+4AceActMapPeg#104".

[0139] In some embodiments, if multiple different operations can potentially be used when applying the salt value, the delimiter may include an operation identifier. As an example, in some embodiments, each possible operation may be mapped to a different symbol (e.g., "-" for subtraction, "*" for multiplication, etc.). The symbol mapped to a particular operation may serve as the delimiter indicating the salt value. In some embodiments, a combination of symbols may be used as a delimiter and an operation identifier. This may be useful, for example, when a special symbol associated with a mathematical or logical operation may be used as a delimiter elsewhere. For example, the single delimiter symbol "+" is already used for specific purposes. Accordingly, to indicate addition as the salting operation, an initial delimiter "#" may indicate that the following symbol "+" is treated as an operation identifier and that the salt value follows the operation identifier. In other words, "3Ace2ActAgo+4AceActMapPeg#+104" may indicate the addition of a salt value, "3Ace2ActAgo+4AceActMapPeg#*104" may indicate the multiplication of a salt value, etc. Other combinations or permutations of delimiters and values ​​are also contemplated within the scope of this disclosure.

[0140] In some embodiments, the corresponding salt value may be compressed using HRPNC. Accordingly, in some embodiments, step 1202 of encoding the corresponding salt value along with the compressed salted variant includes step 1206 of applying HRPNC to the corresponding salt value, where the salt value 104 was calculated as the product of the prime number 13 being mapped (e.g., 8×13=104). Accordingly, the salt value may be encoded as "3AceAha". Thus, the compressed salted variant and the corresponding salt value may be encoded as "3Ace2ActAgo+4AceActMapPeg#3AceAha".

[0141] To generate a binary object from a compressed salted variant, a salted variant is generated by decompressing the compressed salted variant as described above. If the corresponding salt value was also compressed using HRPNC, then the corresponding salt value must also be decompressed. After generating the salted variant, the application of the corresponding salt value is reversed using the inverse of the salting operation. This results in the original binary object.

[0142] For further explanation, FIG. 13 shows a flowchart of an exemplary method for HRPNC of binary variants according to some embodiments of the present disclosure. The method of FIG. 13 includes stage 1302 of generating one or more variants of the binary object in response to reaching a first time threshold in the HRPNC of the binary object. The first time threshold may be reached after a threshold time has elapsed from the start of the HRPNC of the binary object without completing the HRPNC of the binary object. The first time threshold may include, for example, a predefined threshold, a configurable threshold, a dynamically calculated threshold, etc. In some embodiments, the HRPNC of the binary object may be terminated in response to reaching the first time threshold.

[0143] One or more variants of a binary object may be generated using any of the approaches set forth above for generating binary object variants, which may include, for example, adding or renaming files to or from the data encoded in the binary object, generating comment variations, recompiling the binary object with different options, etc. The number of variants of a binary object may also be predefined, configurable, dynamically calculated, etc.

[0144] The method of Figure 13 also includes step 1304 of performing HRPNC for each of one or more variants of the binary object. In other words, HRPNC is initiated for each of one or more variants of the binary object. Step 1304 of performing HRPNC for each of one or more variants of the binary object may be performed using an approach similar to that shown above. For example, in some embodiments, step 1304 of performing HRPNC for each of one or more variants may be performed at least partially in parallel such that HRPNC for each of the one or more variants may be performed substantially simultaneously.

[0145] The method of FIG. 13 also includes step 1306 of determining whether HRPNC of any of the one or more variants has reached a completion threshold in response to reaching a second time threshold during HRPNC of the one or more variants of the binary object. The second time threshold may be reached when a threshold time is reached from the initiation of HRPNC for each of the one or more variants of the binary object without HRPNC for any of the one or more variants being completed. The second time threshold may include, for example, a predefined threshold, a configurable threshold, a dynamically calculated threshold, etc. In some embodiments, the second time threshold may be less than the first time threshold. For example, in some embodiments, the first threshold may correspond to a time at which HRPNC of a binary object may be determined or assumed to be too computationally expensive or impossible, while the second time threshold may correspond to a shorter time at which HRPNC of some variants may continue after reaching the second time threshold.

[0146] The completion threshold corresponds to a measurement or estimate of the progress of the execution of the HRPNC for a binary object, such as one or more variants of the binary object described above. The measurement or estimate of the progress of the execution of the HRPNC may correspond to or be based on a measurement or estimate of the progress of the calculation of prime factorization for the binary object (e.g., one or more variants of the binary object) that is subjected to the HRPNC. In other words, the progress of the HRPNC is measured or estimated for each of one or more variants and compared to the completion threshold.

[0147] If HRPNC for any of the one or more variants reaches the completion threshold, the method of FIG. 13 proceeds to step 1308, which terminates HRPNC for variants other than the at least one or more subsets of variants in response to HRPNC for at least one or more subsets of variants reaching the completion threshold. In some embodiments, the at least one or more subsets of variants may include all of the one or more variants for which HRPNC has reached the completion threshold. In some embodiments, the at least one or more subsets of variants may include a subset of those variants for which HRPNC has reached the completion threshold, such as the variant with the highest amount of HRPNC progression, the top N variants with the highest amount of HRPNC progression, etc. Thus, HRPNC continues only for those variants in the at least one or more subsets of variants for which progression has reached the completion threshold.

[0148] The method of FIG. 13 also includes a step 1310 of providing compressed variants. In some embodiments, the compressed variants may include a compressed variant of the HRPNC that completes first (e.g., from at least a subset of one or more variants for which the HRPNC was not terminated 1308 as described above). In some embodiments, the compressed variants may include another compressed variant, such as the simplest one (e.g., the shortest, with the fewest mapped words). The step 1310 of providing compressed variants may be performed according to an approach similar to providing output by applying an HRPNC to a binary object, as described above. In some embodiments, the method of FIG. 13 may continue to attempt to compress other variants (up to one of a maximum threshold time) to see if others can complete with a simpler HRPNC than the one that completes first. For example, the first completed HRPNC may be "3Ace2ActAgo+4AceActMapPeg#3AceAha", but there may be another variant that compresses to the much simpler "3Dog+2Met*Fry". The second one takes longer, but the shorter HRPNC may be preferred.

[0149] If it is determined 1306 that the HRPNC of the variant has not reached the completion threshold, the method of Figure 13 proceeds to stage 1312 of generating one or more corresponding salted variants for each of the one or more variants of the binary object in response to the HRPNC of the variant not reaching the completion threshold. In other words, for each of the N variants of the binary object, a set including M salted variants is generated, thereby generating M*N salted variants. The number of salted variants generated for each variant may be predefined, configurable, dynamically calculated, etc. In some embodiments, the HRPNC of any or all of the variants of the binary object may be terminated in response to the variant not reaching the completion threshold.

[0150] Generating salted variants from variants of a binary object includes applying a salt value to the variant of the binary object. Accordingly, in some embodiments, generating 1312 the corresponding one or more salted variants may include applying 1314 one or more salt values ​​to each of the one or more variants. The particular salt value used in generating the salted variants may be calculated or selected according to any of the approaches set forth above. For example, the salt value applied may be calculated randomly, selected from a set of prime numbers mapped to words for HRPNC, calculated as factors of those prime numbers, or the like. Applying these salt values ​​may include various mathematical or logical operations, such as addition, subtraction, multiplication, etc. In some embodiments, the same selection range of salt values ​​may be applied to each of the one or more variants. In some embodiments, a different selection range of salt values ​​may be applied to each of the one or more variants. In some embodiments, the same or different salt value numbers may be applied to each of the one or more variants.

[0151] The method of FIG. 13 also includes step 1316 of performing HRPNC on each of the corresponding one or more salted variants and step 1318 of providing a compressed salted variant. In some embodiments, the compressed salted variant may include the first-to-complete HRPNC (e.g., of the salted variant being compressed). In some embodiments, the compressed salted variant may include the shortest or simplest compressed salted variant or another salted variant, as will be appreciated. For example, if none of the HRPNCs for N variants reaches the completion threshold by the point at which the second time threshold is reached, this may indicate that HRPNC for these N variants is too computationally expensive or impossible. Accordingly, additional variations are introduced by applying M salt values ​​to these N variants, creating M*N salted variants. Introducing additional variations of the binary object increases the likelihood that the HRPNC will complete within a certain time or resource constraint.

[0152] The reader will understand that at various points in the method described in Figure 13, the HRPNC of a binary object (e.g., the original binary object or a variant) may complete before reaching a first or second time threshold. In such embodiments, the method of Figure 13 may terminate and a product of the HRPNCs may be provided. As an example, in some embodiments, if the HRPNC of the original binary object completes before reaching the first time threshold, the steps illustrated in Figure 13 need not be performed. As another example, if the HRPNC of a variant of the binary object completes before reaching the second time threshold, step 1306 and subsequent steps of determining whether the HRPNC of any of the one or more variants has reached a completion threshold need not be performed.

[0153] For further explanation, Figure 14 shows a flowchart of another exemplary method for HRPNC of binary variants according to some embodiments of the present disclosure. The method of Figure 14 also includes generating 1302 one or more variants of the binary object in response to reaching a first time threshold during HRPNC of the binary object; performing 1304 HRPNC on each of the one or more variants of the binary object; determining 1306 whether HRPNC of any of the one or more variants has reached a completion threshold in response to reaching a second time threshold during HRPNC of the one or more variants of the binary object; and determining 1307 whether HRPNC of at least a subset of the one or more variants has reached a completion threshold. The method of Figure 14 is similar to that of Figure 13 in that it includes step 1308 of terminating HRPNC for variants other than at least a subset of the one or more variants in response to reaching the threshold; step 1310 of providing compressed variants; step 1316 of generating one or more corresponding salted variants for each of the one or more variants of the binary object in response to the HRPNC for the variants not reaching the completion threshold; step 1316 of performing HRPNC for each of the one or more corresponding salted variants; and step 1318 of providing compressed salted variants.

[0154] The method of FIG. 14 differs from FIG. 13 in that it also includes step 1402 of encoding a corresponding salt value along with the compressed salted variant (e.g., of the first completed HRPNC). Encoding the corresponding salt value along with the compressed salted variant may be performed according to a similar approach as shown above. For example, in some embodiments, the corresponding salt value may be encoded (e.g., appended or otherwise inserted) along with the compressed salted variant in the same string. In some embodiments, the corresponding salt value may be separated from the compressed salted variant or other data encoded along with the compressed salted variant using a delimiter. In some embodiments, the corresponding salt value may be encoded as a numeric value. In some embodiments, the corresponding salt value may be encoded as an HRPNC string by applying the HRPNC to the corresponding salt value.

[0155] For further explanation, Figure 15 shows a flowchart of an exemplary method of checksumming performed on an HRPNC according to some embodiments of the present disclosure. The method of Figure 15 includes step 1502 of calculating a checksum for a binary object. Step 1502 of calculating a checksum for a binary object may be performed according to any approach to calculating a checksum, as will be understood by those skilled in the art. Specifically, the checksum algorithm used is configured so that changes to the underlying data result in predictable changes to the checksum, thereby allowing the binary object to be modified so that its modified checksum equals a desired value, as will be described in more detail below.

[0156] 15 also includes, in response to the checksum not satisfying the checksum condition, modifying 1504 the binary object by applying a value to the binary object, where another checksum for the modified binary object satisfies the checksum condition. In some embodiments, the checksum calculated 1502 is compared to one or more checksum conditions (e.g., criteria for checksums). If the checksum does not satisfy the checksum condition, a value is calculated that, when applied to the binary object, causes the checksum of the modified binary object to satisfy the checksum condition.

[0157] The particular checksum condition used may vary depending on particular design or engineering considerations. For example, in some embodiments, the checksum condition may include a checksum equal to a fixed or predefined value. As another example, in some embodiments, the checksum condition may include a checksum that is a factor or power of a value. In some embodiments, the checksum condition may include other rules or criteria for values, as will be understood.

[0158] Applying the value to the binary object may involve the use of any mathematical or logical operation, as will be understood. The reader will understand that the particular approach for calculating this value and the particular operation used in applying this value may vary depending on various considerations, including the particular checksum algorithm and checksum conditions used. The method of Figure 15 also includes step 1506 of performing HRPNC on the modified binary object to generate a compressed modified binary object. Step 1506 of performing HRPNC on the modified binary object may include any of the approaches for HRPNC presented herein.

[0159] The method of FIG. 15 also includes step 1508 of encoding the value with the compressed modified binary object. Step 1508 of encoding the value with the compressed modified binary object serves to indicate to a recipient of the compressed modified binary object how the binary object was modified prior to HRPNC, thereby enabling the recipient to reverse the application of the value after decompressing the compressed modified binary object to generate the original binary object. In some embodiments, step 1508 of encoding the value with the compressed modified binary object may include step 1510 of combining a string code of the value with a string code of the compressed modified binary object. As an example, the string code of the value may be appended to the string code of the compressed modified binary object. In some embodiments, the string code of the value may be separated from the string code of the compressed modified binary object and / or other encoded values ​​using a delimiter. In some embodiments, the delimiter may include an operation identifier for applying the value. For example, the delimiter may include an operation identifier that indicates a particular mathematical or logical operation to use when applying the value to the binary object. As another example, the delimiter may include an operation identifier that indicates a mathematical or logical operation to reverse the application of the value to the modified binary object to generate the binary object.

[0160] In some embodiments, the delimiter may include a checksum order identifier that indicates when to apply the checksum function. For example, in some embodiments, the checksum order identifier may indicate (e.g., to a recipient of the compressed modified binary object) that the checksum function should be applied after decompression. Thus, if a recipient of compressed data wants to verify that the checksum of the received data satisfies a checksum condition, they should decompress the compressed data before calculating the checksum. As described in more detail below, in some embodiments, the checksum may be calculated based on an HRPNC string (e.g., the output from applying HRPNC). Accordingly, in some embodiments, the checksum order identifier may indicate that a checksum of the received data should be applied (e.g., against the HRPNC string code) before decompression. Here, in embodiments in which the delimiter includes a checksum order identifier, the checksum order identifier indicates that a checksum function should be applied to the modified binary object after decompression.

[0161] For further explanation, Figure 16 shows a flowchart of another exemplary method of checksums performed on HRPNC according to some embodiments of the present disclosure. The method of Figure 16 is similar to Figure 15 in that it also includes a step 1502 of calculating a checksum for the binary object; a step 1504 of modifying the binary object by applying a value to the binary object in response to the checksum not satisfying the checksum condition, where another checksum for the modified binary object satisfies the checksum condition; a step 1506 of performing HRPNC on the modified binary object to generate a compressed modified binary object; and a step 1508 of encoding the value with the compressed modified binary object, which includes a step 1510 of combining a string code of the value with a string code of the compressed modified binary object.

[0162] The method of Figure 16 differs from Figure 15 in that it also includes step 1602 of decompressing the compressed modified binary object to generate a modified binary object. Step 1602 of decompressing the compressed modified binary object may be performed by a recipient of the compressed modified binary object. For example, the recipient may receive the code of the compressed modified binary object and values ​​that are applied to the binary object as described above to generate the modified binary object. Step 1602 of decompressing the compressed modified binary object may include decompressing the HRPNC data, as described herein.

[0163] The method of Figure 16 also includes step 1604 of verifying another checksum of the modified binary object. In some embodiments, step 1604 of verifying another checksum of the modified binary object includes calculating a checksum of the modified binary object after decompression and verifying that this other checksum satisfies a checksum condition. When the binary object is modified such that the resulting checksum satisfies the checksum condition, the other checksum should verify successfully. The method of Figure 16 also includes step 1606 of inverting the application of the value to the modified binary object to generate the binary object. In other words, the inverse of the operation used to modify the binary object is applied to the modified binary object to generate the binary object.

[0164] For further explanation, FIG. 17 shows a flowchart of an exemplary method of checksum implementation for HRPNC according to some embodiments of the present disclosure. The method of FIG. 17 includes stage 1702 of executing HRPNC on the binary object to generate a compressed binary object. Stage 1702 of executing HRPNC on the binary object may include approaches for executing HRPNC similar to those described herein. The method of FIG. 17 also includes stage 1704 of calculating a checksum for the compressed binary object, where the checksum is calculated after execution of HRPNC. In other words, the checksum is calculated according to the HRPNC string encoding of the binary object. The particular checksum algorithm used may vary depending on design or engineering considerations.

[0165] The method of Figure 17 also includes stage 1706, in response to the checksum not satisfying the checksum condition, of calculating a value that, when applied to the checksum, causes the adjusted checksum for the compressed binary object to satisfy the checksum condition. The checksum condition may include checksum conditions similar to those described above. In the example method of Figure 17, rather than producing a particular checksum value that satisfies the checksum condition by applying a value to the underlying data from which the checksum is generated, the value is a value that, when applied to the checksum itself (e.g., to generate the adjusted checksum), causes the adjusted checksum to satisfy the checksum condition.

[0166] As an example, assume that the checksum condition is that the checksum is equal to a predefined value. If the checksum of the compressed binary object is not equal to this predefined value, a value may be calculated 1706 as the difference between the checksum and the predefined value. When this calculated value is applied (e.g., by adding or subtracting this calculated value to the checksum), the adjusted checksum will be equal to the predefined value. As another example, assume that the checksum condition is that the checksum is equal to a power of two. If the checksum of the compressed binary object is not equal to a power of two, a value may be calculated 1706 as the difference between the checksum and the nearest power of two. When this calculated value is applied (e.g., by adding or subtracting this calculated value to the checksum), the adjusted checksum will be equal to the power of two.

[0167] The method of FIG. 17 also includes step 1708 of encoding a value with the compressed binary object. Step 1708 of encoding a value with the compressed binary object serves to indicate to a recipient of the compressed binary object how the checksum for the compressed binary object should be adjusted or modified to meet checksum requirements. In some embodiments, step 1708 of encoding a value with the compressed binary object may include step 1710 of combining a string code of the value with a string code of the compressed binary object. As an example, the string code of the value may be appended to the string code of the compressed binary object. In some embodiments, the string code of the value may be separated from the string code of the compressed binary object and / or other encoded values ​​using a delimiter. In some embodiments, the delimiter may include an operation identifier for applying the value. For example, the delimiter may include an operation identifier that indicates a particular mathematical or logical operation to use when applying the value to the checksum of the compressed binary object. As noted above, in some embodiments, the delimiter may include a checksum order identifier that indicates when to apply the checksum function. Here, the checksum order identifier indicates that the checksum function should be applied to the compressed binary object before decompression.

[0168] For further explanation, Figure 18 shows a flowchart of another exemplary method for checksums performed on HRPNC according to some embodiments of the present disclosure. The method of Figure 18 is similar to Figure 17 in that it also includes step 1702 of performing HRPNC on the binary object to generate a compressed binary object; step 1704 of calculating a checksum for the compressed binary object; step 1706 of calculating, in response to the checksum not satisfying the checksum condition, a value that, when applied against the checksum, causes the adjusted checksum for the compressed binary object to satisfy the checksum condition; and step 1708 of encoding a value with the compressed binary object, which includes step 1710 of combining a string code of the value with a string code of the compressed binary object.

[0169] The method of FIG. 18 differs from FIG. 17 in that it also includes step 1802 of verifying an adjusted checksum of the compressed binary object by applying a value encoded with the compressed binary object against the checksum of the compressed binary object. In other words, a checksum is calculated in response to the compressed binary object. The value encoded with the compressed binary object is then applied to this checksum to generate an adjusted checksum. For example, the value may be applied in response to an operation identifier used as a delimiter or otherwise encoded with the value and the compressed binary object. The adjusted checksum is then verified 1802 to ensure that the adjusted checksum meets the checksum condition. The method of FIG. 18 also includes step 1804 of decompressing the compressed binary object to generate a binary object. Step 1804 of decompressing the compressed binary object may include approaches for decompressing data compressed using HRPNC similar to those described herein. In some embodiments, step 1804 of decompressing the compressed binary object may be performed in response to verification 1802 of the adjusted checksum.

[0170] For further explanation, FIG. 19 shows a flowchart for a translation table as a service for HRPNC according to some embodiments of the present disclosure. The method of FIG. 19 includes step 1902 of receiving a table mapping a plurality of prime numbers to a plurality of distinct words. As noted above, the table or other data structure may associate prime numbers with corresponding words for use in HRPNC. In some embodiments, the table may be received from a remotely located computing device that implements a service that generates and / or provides tables for use in HRPNC, thereby providing these tables as a service. In some embodiments, a table identifier may be received along with the table. Modifying the table used in HRPNC improves data security when the same table may be unusable for decompressing the HRPNC string.

[0171] The method of FIG. 19 includes stage 1904 of performing HRPNC of the binary object based on the table to generate a compressed binary object. Here, a remotely received table is used to perform HRPNC rather than a predefined or pre-generated table. In some embodiments, the entity from which the table is received, or some other remotely located entity, may dynamically generate the table and associate the table with a table identifier for later use, as described in more detail below. In some embodiments, the table may include various time numbers mapped to a dynamically generated selection of words. For example, in some embodiments, the table may map prime numbers to a set of randomly selected words. As another example, in some embodiments, the table may include a random permutation of some other table. Continuing with this example, assume a base table that maps various ordered prime numbers to an ordered set of three-letter words. Here, the words in the mapping may be randomly permuted so that at least some of the prime numbers are mapped to different words.

[0172] In some embodiments, the table may map prime numbers to human-readable sentences. As an example, in some embodiments, the prime factorization of the binary object may be calculated prior to receiving the table. The prime factorization may be included in a request for the table. A table may then be generated that maps each distinct prime factor to words such that the compressed binary object comprises a human-readable sentence (e.g., without any indication of the number of occurrences of each distinct prime factor). Remaining entries in the table (e.g., prime numbers other than the prime factors of the binary object) may then be mapped to random arrangements of words, ordered selections of the remaining unmapped words, etc.

[0173] The method of Figure 19 also includes step 1906 of encoding a table identifier for the table with the compressed binary object. The table identifier may be encoded, added, or appended to the compressed binary object, separated by a delimiter. In some embodiments, the table identifier may include a numeric identifier, one or more words, or another unique identifier for the table, as will be understood. Step 1906 of encoding the table identifier with the compressed binary object allows a recipient to request the table used to compress the compressed binary object in order to decompress it.

[0174] For further explanation, Figure 20 shows a flowchart of another exemplary method for translation tables as a service for HRPNC according to some embodiments of the present disclosure. The method of Figure 20 is similar to Figure 19 in that it also includes step 1902 of receiving a table mapping a plurality of prime numbers to a plurality of distinct words; step 1904 of performing human readable prime number compression (HRPNC) of the binary object based on the table to generate a compressed binary object; and step 1906 of encoding a table identifier for the table with the compressed binary object.

[0175] The method of FIG. 20 also includes step 2002 of providing a request for a table, where the table is received in response to the request. In some embodiments, the request may include one or more conditions or criteria for dynamically generating a table. In response, the received table may be generated based on these conditions or criteria. In some embodiments, the request may include a table identifier or other selection of a particular table. For example, in some embodiments, a selection of multiple tables may be presented to or otherwise made available to the user. The user may then indicate in the request the particular table to be received for use.

[0176] As indicated above, in some embodiments, a request may be sent and a table may be received after computing a prime factorization of a binary object, where the prime factorization may be included in the request such that a table mapping the prime factorization to human-readable sentences may be generated. After receiving the table, the prime factorization may be mappable to generate a compressed binary object.

[0177] For further explanation, Figure 21 shows a flowchart of another exemplary method for translation tables as a service for HRPNC according to some embodiments of the present disclosure. The method of Figure 21 is similar to Figure 19 in that it also includes step 1902 of receiving a table mapping a plurality of prime numbers to a plurality of distinct words; step 1904 of performing human readable prime number compression (HRPNC) of the binary object based on the table to generate a compressed binary object; and step 1906 of encoding a table identifier for the table with the compressed binary object.

[0178] The different steps performed in FIG. 21 may be performed by some other entity other than the entity that originally received the table and generated the compressed binary object as described above. For example, the steps of FIG. 21 may be performed by a recipient of a compressed binary object to decompress the compressed binary object into a binary object. The method of FIG. 21 differs from FIG. 19 in that it includes step 2102 of providing a request for a table, where the request includes a table identifier. The request for a table may be provided to the service or entity that generated or provided the table as described above. The request includes the table identifier to determine which table to provide in response to the request. In some embodiments, access control may require authentication to request an identified table. Accordingly, in some embodiments, the request may include one or more authentication credentials.

[0179] The method of Figure 21 also includes step 2104 of receiving the table (e.g., in response to a request). In embodiments in which the request includes one or more authentication credentials, step 2104 of receiving the table may be performed in response to successful authentication of the authentication credentials. The method of Figure 21 also includes step 2106 of decompressing the compressed binary object using the table to generate a binary object. Step 2106 of decompressing the compressed binary object may be performed using a similar approach to that shown above, instead of using a remotely received table to map words encoded in the compressed binary object to their corresponding prime factors.

[0180] For further explanation, Figure 22 shows a flowchart of an example method for generating HRPNC metadata for usage requirements according to some embodiments of the present disclosure. The method of Figure 22 includes step 2202 of performing HRPNC of the binary object to generate a compressed binary object. Step 2202 of performing HRPNC of the binary object may include any of the approaches described herein for HRPNC.

[0181] The method of Figure 22 also includes step 2204 of generating metadata describing one or more usage requirements for the binary object. The metadata may be encoded using any encoding scheme or format, as will be understood. The one or more usage requirements may include hardware and / or resource requirements associated with the binary object. For example, in some embodiments, the one or more usage requirements may include a size of the binary object. In this example, the size of the binary object is a usage requirement of the binary object such that a system attempting to generate the binary object by decompressing the compressed binary object must have an amount of free storage space equal to or greater than the size of the binary object.

[0182] In some embodiments, the one or more usage requirements may include one or more hardware requirements for decompressing the compressed binary object. For example, in some embodiments, a system may have minimum hardware specifications or specific hardware components for decompressing the compressed binary object or for decompressing the compressed binary object within certain time or resource usage limits. In some embodiments, the one or more usage requirements may include one or more hardware requirements for executing the binary object. These hardware requirements may include minimum system specifications or necessary hardware components for decompressing an HRPNC executing certain software or applications encoded in the binary object. The one or more usage requirements may also include other conditions, as will be understood.

[0183] The method of Figure 22 also includes step 2206 of performing HRPNC on the metadata to generate compressed metadata. Step 2206 of performing HRPNC on the metadata may include any of the approaches for HRPNC as described herein. In some embodiments, the table mapping prime numbers to words used in step 2206 of performing HRPNC on the metadata may be different from the table used in step 2202 of performing HRPNC on the binary object. For example, each of these tables may not contain duplicate words (e.g., words in one table are not found in the other table). As another example, in some embodiments, each table may use different words according to different lengths or other criteria.

[0184] The approach presented herein provides metadata describing usage requirements for binary objects compressed using HRPNC. This allows the metadata to be referenced to determine whether the compressed binary object can be decompressed and / or whether the binary object can be executed, thereby reducing resources that may be used if a given system cannot meet the usage requirements in the metadata. Also, when the metadata itself is compressed using HRPNC, it can be transmitted using a similar approach and channel, or it can be provided along with the compressed binary object. For example, the compressed metadata can be provided to the recipient as a separate string, payload, or transmission from the compressed binary object, or the compressed binary object and compressed metadata can be encoded together, as described in more detail below.

[0185] For further explanation, Figure 23 shows another flowchart for generating HRPNC metadata for usage requirements according to some embodiments of the present disclosure. The method of Figure 23 is similar to Figure 22 in that it also includes step 2202 of performing HRPNC of a binary object to generate a compressed binary object; step 2204 of generating metadata describing one or more usage requirements for the binary object; and step 2206 of performing HRPNC on the metadata to generate compressed metadata.

[0186] The method of Figure 23 differs from Figure 22 in that it also includes step 2302 of encoding the compressed metadata along with the compressed binary object. For example, the compressed metadata and the compressed binary object may be encoded into the same string by appending or otherwise appending the compressed metadata to the compressed binary object. In some embodiments, the compressed metadata may be separated from the compressed binary object or other data in the string encoding using a delimiter. Thus, the compressed binary object and the compressed metadata may be transmitted or otherwise provided to a recipient in the same data payload or transmission.

[0187] For further explanation, Figure 24 shows a flowchart of an example method for decompressing an HRPNC object using metadata according to some embodiments of the present disclosure. The method of Figure 24 includes step 2402 of receiving a compressed binary object and compressed metadata, where the compressed binary object includes the HRPNC of the binary object and the compressed metadata includes the HRPNC of the metadata that associates the binary object. For example, the compressed metadata may describe one or more usage requirements of the binary object, as described above.

[0188] In some embodiments, the compressed metadata and the compressed binary object may be received together (e.g., in the same string encoding, in the same transmission) 2402. Accordingly, in some embodiments, receiving the compressed binary object and the compressed metadata may include receiving 2404 a single string encoding the compressed binary object and the compressed metadata. In some embodiments, the compressed metadata and the compressed binary object may be received separately (e.g., in different string encodings, in different transmissions) 2402. Accordingly, in some embodiments, receiving the compressed binary object and the compressed metadata may include receiving 2406 separate strings each encoding the compressed binary object or the compressed metadata.

[0189] The method of Figure 24 also includes step 2408 of decompressing the compressed metadata to generate metadata. In some embodiments, if the compressed metadata is received along with the compressed binary object, the compressed metadata may be extracted or identified from string encoding of both the compressed metadata and the compressed binary object using delimiter identification or other parsing techniques. Step 2408 of decompressing the compressed metadata may be performed according to any of the approaches for decompressing data compressed using HRPNC presented herein.

[0190] The method of Figure 24 also includes determining 2410, based on the metadata, whether one or more usage requirements indicated in the metadata are met. For example, if the metadata indicates a size of the binary object, determining 2410 whether one or more usage requirements indicated in the metadata are met may include determining whether there is an amount of free storage space that meets or exceeds the size of the binary object. As another example, if the metadata indicates certain hardware requirements, determining 2410 whether one or more usage requirements indicated in the metadata are met may include determining whether those hardware requirements are met.

[0191] In some embodiments, it may also be determined whether usage requirements not explicitly indicated in the metadata are met. Such usage requirements may be implicit or based on some other usage requirements indicated in the metadata. For example, such usage requirements may include a time limit for decompressing the compressed binary object, an estimated battery usage in decompressing the compressed binary object, etc. In this example, the time and / or battery required to decompress the binary object may be calculated or estimated based on the size of the binary object, the current resource usage, etc.

[0192] If one or more usage requirements are not met, the method of FIG. 24 proceeds to step 2412 of generating a notification. In some embodiments, the notification may indicate that the compressed binary object cannot or will not be decompressed. In some embodiments, the notification may indicate which usage requirements were not met. In some embodiments, the notification may indicate corrective actions that may satisfy those usage requirements (e.g., freeing up some storage space, terminating other processes to conserve resources, etc.). In some embodiments, the notification may request confirmation from the user as to whether to decompress the compressed binary object. For example, the user's system may not meet the hardware requirements to run the binary object, but the user may wish to decompress the compressed binary object.

[0193] If one or more usage requirements are met, the method of Figure 24 proceeds to step 2414 of decompressing the compressed binary object to generate a binary object, which may be performed according to a similar approach as for decompressing data that has been compressed using HRPNC, as described herein.

[0194] For further explanation, Figure 25 shows a flowchart of an exemplary method for decompressing an HRPNC object using metadata according to some embodiments of the present disclosure. The method of Figure 25 is similar to Figure 24 in that it also includes step 2402 of receiving a compressed binary object and compressed metadata, which includes step 2404 of receiving a single string encoding the compressed binary object and the compressed metadata, where the compressed binary object includes the HRPNC of the binary object and the compressed metadata includes the HRPNC of the metadata associated with the binary object; or step 2406 of receiving separate strings, each encoding the compressed binary object or the compressed metadata; step 2408 of decompressing the compressed metadata to generate the metadata; and step 2410 of determining, based on the metadata, whether one or more usage requirements for the binary object indicated in the metadata are satisfied; and step 2412 of generating a notification in response to the one or more usage requirements not being satisfied; or step 2414 of decompressing the compressed binary object to generate the binary object in response to the one or more usage requirements for the binary object being satisfied.

[0195] The method of Figure 25 differs from Figure 24 in that it also includes step 2502 of generating a notification describing resource usage associated with decompression of the compressed binary object. The notification may describe, for example, the amount of storage space used before and / or after decompression, the amount of storage space used by the binary object, the time to decompress the compressed binary object, the amount of processing resources used in decompressing the compressed binary object, or further information, as will be appreciated.

[0196] For further explanation, Figure 26 shows a flowchart of an exemplary method of pattern matching for HRPNC according to some embodiments of the present disclosure. The method of Figure 26 includes step 2602 of identifying, in a binary object, one or more portions of the binary object that match one or more patterns. In some embodiments, the one or more patterns may include one or more defined bit sequences in the binary object and / or one or more portions of bits in the binary object that match specific conditions or rules. Specifically, in some embodiments, the one or more patterns may correspond to patterns or sequences of bits that are susceptible to computational isolation and compression using HRPNC or that may match predefined HRPNC codes to accelerate the overall HRPNC process applied to the binary object.

[0197] As one example, the one or more patterns may include powers of 2, such that a matching portion of a binary object may include binary codes of powers of 2. As another example, the one or more patterns may include prime numbers in a set of prime numbers and / or factors of prime numbers in a set of prime numbers. Continuing with this example, the set of prime numbers may include a set of prime numbers that have been mapped to words as described above to perform HRPNC. Other patterns are also contemplated within the scope of this disclosure.

[0198] After identifying 2602 one or more portions of the binary object that match one or more patterns, the binary object may be logically further divided into those portions of the binary object that matched one or more patterns and one or more other portions that potentially did not match a pattern. Various approaches may be used to search or analyze subcomponents (e.g., portions) of the binary object to determine whether they match a pattern. The reader will understand that in some embodiments, the binary object may be iteratively or iteratively searched to find particular portions that match a pattern. As an example, in some embodiments, the binary object may first be searched to identify the largest patterns (e.g., the largest accumulation of 2, the largest prime number or factor thereof), and then iteratively searched for progressively smaller patterns.

[0199] In some embodiments, searching a binary object for portions that match one or more patterns results in the identification of portions that may overlap other portions. Accordingly, in some embodiments, identifying 2602 the one or more portions may include identifying a subset of non-overlapping portions from the plurality of identified portions as the identified 2602 portion(s). As an example, in some embodiments, the binary object may be searched such that the final set of identified 2602 portions has the fewest portions that do not match a pattern, the fewest bits that do not match a pattern (e.g., are not included in a portion of the final set of identified 2602 portions), etc. In some embodiments, when searching the binary object, portions that match a pattern may be removed from consideration and excluded from further searching of the binary object to prevent the identification of overlapping portions.

[0200] The method of Figure 26 also includes step 2604 of performing HRPNC on each of the one or more portions to generate one or more compressed portions. In other words, HRPNC is applied individually to each of the one or more portions to generate one or more corresponding compressed portions, each of the one or more compressed portions comprising a string encoding of the HRPNC-compressed data. Embodiments in which the binary object includes some other portions that do not match the one or more patterns are described in more detail below.

[0201] The method of Figure 26 also includes step 2606 of generating a compressed binary object that includes a concatenation of one or more compressed portions for the binary object. In other words, rather than including an HRPNC code applied to the binary object as a whole, the compressed binary object instead includes one or more HRPNC string codes for different subcomponents (e.g., portions) of the binary object that are combined together. In some embodiments, each of the one or more compressed portions may be included in the compressed binary object in the order in which each of those portions appears in the binary object. In some embodiments, each of the one or more compressed portions may be separated by a delimiter or otherwise identified in the compressed binary object. As an example, assume that a given binary object having five portions A, B, C, D, and E matches a pattern and that no bits do not match this pattern. In this example, the compressed binary object can be represented as "$hrpnc(A)+$hrpnc(B)+$hrpnc(C)+$hrpnc(D)+$hrpnc(E)", where "+" acts as a delimiter and $hrpnc(input) is the HRPNC code of the input portion.

[0202] To decompress a compressed binary object that has been encoded as described above, each of the compressed portions contained in the compressed binary object is individually decompressed using an approach similar to that shown above. This results in each of the portions of the binary object that were identified as matching one or more patterns in 2602. These portions may then be combined (e.g., concatenated) in the appropriate order to recreate the binary object.

[0203] The reader will understand that the computational complexity and resource usage of HRPNC is greatest in computing the prime factorization of the binary object being compressed. The approach described herein enables a binary object to be further divided into portions that reduce computational complexity when applying HRPNC, and that reduce computational complexity and resource usage compared to applying HRPNC to the binary object as a whole. As an example, for a portion of a binary object that matches a factor of a prime number, the prime factorization for that portion may include the prime number multiplied by the prime factorization of that factor. Accordingly, to perform HRPNC on that portion, only the prime factorization for that factor needs to be computed. Computing the prime factorization for the factors of the matching portion is computationally much simpler than computing the prime factorization for the binary object as a whole.

[0204] For further explanation, Figure 27 shows a flowchart of another exemplary method for pattern matching for HRPNC according to some embodiments of the present disclosure. The method of Figure 27 is similar to Figure 26 in that it also includes step 2602 of identifying, in a binary object, one or more portions of the binary object that match one or more patterns; step 2604 of performing HRPNC on each of the one or more portions to generate one or more compressed portions; and step 2606 of generating, for the binary object, a compressed binary object that includes the concatenation of the one or more compressed portions.

[0205] The method of Figure 27 differs from Figure 26 in that it also includes step 2702 of performing HRPNC on one or more remaining portions of the binary object that do not match the one or more patterns to generate one or more remaining compressed portions, where the compressed binary object further includes the concatenation of the one or more remaining compressed portions. As noted above, in some embodiments, not all of the binary object is included in the portions identified in step 2602 that match the one or more patterns. In such embodiments, these remaining portions are each compressed using HRPNC to generate one or more remaining compressed portions.

[0206] The remaining compressed portion is also included as a substring of the compressed binary object. For example, the compressed portion and remaining compressed portion may be concatenated in the order they occur in the binary object. Continuing with the example above, in which the binary object has five portions A, B, C, D, and E that match a pattern, assume further that the binary object also includes remaining portions X, Y, and Z, with remaining portion X appearing first in the binary object, Y being between portions B and C, and Z being at the end of the binary object. This results in a binary object having the remaining portions X, A, B, Y, C, D, E, and Z, in that order. In this example, the compressed binary object may be expressed as "hrpnc(X)+$hrpnc(A)+$hrpnc(B)+hrpnc(Y)+$hrpnc(C)+$hrpnc(D)+$hrpnc(E)+hrpnc(Z)."

[0207] The approach presented herein also allows portions of a binary object that do not match a pattern to be separately compressed using HRPNC so that they are included in the compressed binary object. While these remaining portions may not gain the computational benefit of matching a pattern, their reduced size relative to the binary object as a whole reduces the computational complexity when subjected to HRPNC. In other words, the overall computational complexity required to separately perform HRPNC on portions that match and portions that do not match the pattern may be reduced compared to performing HRPNC on the binary object as a whole.

[0208] For further explanation, Figure 28 shows a flowchart of another exemplary method for pattern matching for HRPNC according to some embodiments of the present disclosure. The method of Figure 28 is similar to Figure 26 in that it also includes step 2602 of identifying, in a binary object, one or more portions of the binary object that match one or more patterns; step 2604 of performing HRPNC on each of the one or more portions to generate one or more compressed portions; and step 2606 of generating, for the binary object, a compressed binary object that includes the concatenation of the one or more compressed portions.

[0209] The method of FIG. 28 differs from that of FIG. 26 in that step 2602 of identifying one or more portions of the binary object that match one or more patterns also includes step 2802 of initializing a counter. As described below, the counter value serves as a factor applied to the prime number when determining whether a factor of the prime number is found in the binary object. Here, the counter is initialized so that as the counter is decremented, each factor of the prime number up to and including the highest counter value is subject to pattern matching. The initial counter value can be calculated according to various approaches. As an example, in some embodiments, an initial counter value n can be calculated by dividing the binary object (e.g., the numerical representation of the binary object) by the highest prime number in a table used to perform HRPNC. If these numbers are evenly divisible (e.g., with no remainder), and the prime factorization for the binary object is n multiplied by this highest prime number, HRPNC can be performed on the binary object without further pattern matching. Otherwise, the counter can be set as the integer portion of n (e.g., with no remainder).

[0210] The method of Figure 28 also includes step 2804 of determining, for each value of the counter, whether the binary object contains a portion that matches a predetermined value of the counter multiplied by the corresponding prime number, for each prime number in the count of prime numbers, until a termination condition is met. In other words, as described below, each combination of counter value and prime number is searched in the binary object until a termination condition is met. For example, given an initial counter value, the set of prime numbers in the table are iterated in order (e.g., in reverse order) to determine whether the current counter value multiplied by the current prime number is found in the binary object. After iterating through the set of prime numbers in order, the counter value may be decremented, and the set of prime numbers may be iterated in order again.

[0211] If a match is found, the matching portion is compressed using HRPNC (e.g., by being identified 2602 as matching a pattern). The portion may then be removed from consideration in further searches of the binary object. The prime number and counter value continue to cycle through until either the counter value reaches zero or the entire binary object is identified as being contained in a portion that matches a pattern. Once the counter value reaches zero, any portion of the binary object that is not identified as matching a pattern is treated as the remainder of the binary object as described above.

[0212] The approach shown in Figure 28 may be further explained using the flowchart of Figure 29. Beginning at step 2902, a counter is initialized. The counter may be initialized using a similar approach as described above, such as dividing the binary object by the highest prime number in the set of prime numbers mapped to the HRPNC. In this example, assume that the binary object is not divisible by this highest prime number. At step 2904, the next prime number in the set of prime numbers is selected. The highest prime number in the set may be selected if no prime number is currently selected, indicating the first iteration of this flowchart, or if the lowest prime number in the set has been selected, indicating the start of a new iteration with a new counter value. Otherwise, the next lowest prime number is selected.

[0213] In step 2906, the pattern searched for in the binary object is set as a counter by which the selected prime number is multiplied. In step 2908, if there is a match for this pattern, the process proceeds to step 2910 where this match is compressed and removed from further searching. In step 2912, it is determined whether any unmatched portions remain. In other words, it is determined whether any remaining portions of the binary object still do not match the pattern. If not, this indicates that the entire binary object has matched a pattern, and the process proceeds to step 2914 and ends. If not, the process proceeds to step 2916, which determines whether any prime numbers remain in the set that have not been multiplied by the current counter value. If so, the process returns to step 2904 where the next prime number is selected. If not, this indicates that the current prime number is the lowest prime number in the set, and the process proceeds to step 2918 where the counter is decremented.

[0214] Step 2920 determines if the counter is equal to zero. If so, this indicates that all combinations of prime numbers and counter values ​​have been searched in the binary object, and the process proceeds to step 2914 and ends. Otherwise, the process returns to step 2904 where the next prime number is selected. Returning to step 2908, if no match for the pattern was found, the process proceeds to step 2916, which determines whether any prime numbers remain.

[0215] Various aspects of the present disclosure are described through text, flowcharts, block diagrams of computer systems, and / or block diagrams of machine logic included in computer program product (CPP) embodiments. For any flowchart, depending on the technology involved, operations may be performed in a different order than that shown in a given flowchart. For example, again depending on the technology involved, two operations shown in successive flowchart blocks may be performed in reverse order, as a single integrated step, simultaneously, or in an at least partially overlapping manner.

[0216] A computer program product embodiment ("CPP embodiment" or "CPP") is a term used in this disclosure to describe any set of one or more storage media (also referred to as "media") collectively included in one or more storage devices that collectively contain machine-readable code corresponding to instructions and / or data for performing the computer operations specified in a given CPP claim. A "storage device" is any tangible device that can hold and store instructions for use by a computer processor. The computer-readable storage medium may be, but is not limited to, an electronic storage medium, a magnetic storage medium, an optical storage medium, an electromagnetic storage medium, a semiconductor storage medium, a mechanical storage medium, or any suitable combination of the foregoing. Some known types of storage devices that include these media include diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), compact disk read-only memory (CD-ROM), digital versatile disk (DVD), memory stick, floppy disk, mechanically encoded device (such as pits / lands formed on the major surface of a punch card or disk), or any suitable combination of the foregoing. Computer-readable storage media, as the term is used in this disclosure, is not to be construed as storage of transient signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide, light pulses passing through a fiber optic cable, electrical signals traveling through a wire, and / or other transmission media. As will be understood by those skilled in the art, data is typically moved at some point from time to time during the normal operation of a storage device, such as during access, defragmentation, or garbage collection, but this does not make the storage device transient because the data is not transient while it is stored.

[0217] While the description of various embodiments of the present disclosure has been presented for illustrative purposes, it is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments. The terminology used herein has been selected to best explain the principles, practical applications, or technical improvements of the embodiments over technologies found in the market, or to enable others skilled in the art to understand the embodiments disclosed herein. [Other possible items] [Item 1] computing a prime factorization based on the binary object; mapping one or more prime factors of the prime factorization to corresponding words based on data associating a plurality of prime numbers and a plurality of distinct words; and generating a Human Readable Prime Number Compression (HRPNC) of the binary object including the corresponding words for the one or more prime factors and an indication of the number of occurrences for each of the one or more prime factors in the prime factorization; A method comprising: [Item 2] determining that a particular prime factor of the prime factorization is greater than a largest prime number in the data relating the plurality of prime numbers and the plurality of distinct words; calculating another prime factorization of said particular prime factor incremented by 1; mapping one or more other prime factors of the other prime factorization to other corresponding words based on the data; and 2. The method of claim 1, further comprising generating a portion of the HRPNC of the binary object including the other corresponding words for the other one or more prime factors and an indication of the number of occurrences for each of the other one or more prime factors in the other prime factorization. [Item 3] 3. The method of claim 2, wherein the portion of the HRPNC of the binary object is separated from another portion of the HRPNC by a delimiter. [Item 4] Item 1. The method of item 1, further comprising applying a lossless compression algorithm to the binary object, wherein the prime factorization is based on the binary object after lossless compression. [Item 5] Item 10. The method of item 1, wherein the plurality of distinct words comprises a plurality of distinct words having the same length. [Item 6] Item 10. The method of claim 1, wherein the plurality of distinct words excludes any homophones. [Item 7] Item 10. The method of claim 1, wherein the plurality of distinct words excludes any phonemes. [Item 8] 2. The method of claim 1, wherein the indication of the number of occurrences for each of the one or more prime factors in the prime factorization includes a leading digit for each of the one or more prime factors in the prime factorization. [Item 9] generating the prime factorization from the HRPNC based on the data relating the plurality of prime numbers and the plurality of distinct words; and Item 10. The method of item 1, further comprising generating the binary object based on the prime factorization. [Item 10] The step of generating the prime factorization comprises: identifying a portion of the HRPNC designated by a delimiter; and 10. The method of claim 9, comprising calculating the prime factors of the factorization by decrementing other prime factorizations encoded in the portion of the HRPNC. [Item 11] a processing device; and a memory operatively coupled to the processing device, wherein the memory, when executed, causes the processing device to: Calculate prime factorization based on binary objects; mapping one or more prime factors of the prime factorization to corresponding words based on data associating a plurality of prime numbers and a plurality of distinct words; and an apparatus storing computer program instructions for generating a Human Readable Prime Number Compression (HRPNC) of the binary object including the corresponding words for the one or more prime factors and an indication of the number of occurrences of each of the one or more prime factors in the prime factorization. [Item 12] The computer program instructions, when executed, cause the processing device to further: determining that a particular prime factor of the prime factorization is greater than a largest prime number in the data relating the plurality of prime numbers and the plurality of distinct words; computing another prime factorization of said particular prime factor incremented by one; mapping one or more other prime factors of the other prime factorization to other corresponding words based on the data; and Item 12. The apparatus of item 11, wherein the HRPNC portion of the binary object is generated including the other corresponding words for the other one or more prime factors and an indication of the number of occurrences for each of the other one or more prime factors in the other prime factorization. [Item 13] Item 13. The apparatus of item 12, wherein the portion of the HRPNC of the binary object is separated from another portion of the HRPNC by a delimiter. [Item 14] Item 12. The apparatus of item 11, wherein the computer program instructions, when executed, further cause the processing device to apply a lossless compression algorithm to the binary object, wherein the prime factorization is based on the binary object after lossless compression. [Item 15] Item 12. The apparatus of item 11, wherein the plurality of distinct words includes a plurality of distinct words having the same length. [Item 16] Item 12. The apparatus of item 11, wherein the plurality of distinct words excludes any homophones. [Item 17] Item 12. The apparatus of item 11, wherein the plurality of distinct words excludes any phonemes. [Item 18] Item 12. The apparatus of item 11, wherein the indication of the number of occurrences for each of the one or more prime factors in the prime factorization includes a leading digit for each of the one or more prime factors in the prime factorization. [Item 19] The computer program instructions, when executed, cause the processing device to further: generating the prime factorization from the HRPNC based on the data relating the plurality of prime numbers and the plurality of distinct words; and Item 12. The method of claim 11, wherein the binary object is generated based on the prime factorization. [Item 20] To generate the prime factorization, the computer program instructions, when executed, further cause the processing device to: Identifying the portion of the HRPNC designated by a delimiter; and 20. The apparatus of claim 19, wherein the prime factors of the prime factorization are calculated by decrementing other prime factorizations encoded in the portion of the HRPNC. [Item 21] a computer-readable storage medium, wherein the computer-readable storage medium, when executed, Calculates prime factorization based on binary objects; mapping one or more prime factors of the prime factorization to corresponding words based on data associating a plurality of prime numbers and a plurality of distinct words; and a computer program product, comprising computer program instructions for generating a Human Readable Prime Number Compression (HRPNC) of the binary object, the computer program product comprising the corresponding words for the one or more prime factors and an indication of the number of occurrences of each of the one or more prime factors in the prime factorization. [Item 22] The computer program instructions, when executed: determining that a particular prime factor of the prime factorization is greater than a largest prime number in the data relating the plurality of prime numbers and the plurality of distinct words; calculating other prime factorizations of said particular prime factor being incremented by 1; based on the data, mapping one or more other prime factors of the other prime factorization to other corresponding words; and 22. The computer program product of claim 21, wherein the HRPNC portion of the binary object includes the other corresponding words for the other one or more prime factors and an indication of the number of occurrences for each of the other one or more prime factors in the other prime factorization. [Item 23] Item 23. The computer program product of item 22, wherein the portion of the HRPNC of the binary object is separated from another portion of the HRPNC by a delimiter. [Item 24] 22. The computer program product of claim 21, wherein the computer program instructions, when executed, apply a lossless compression algorithm to the binary object, and wherein the prime factorization is based on the binary object after lossless compression. [Item 25] 22. The apparatus of claim 21, wherein the plurality of distinct words comprises a plurality of distinct words having the same length.

Claims

1. Computing a prime factorization based on the binary object; mapping one or more prime factors of the prime factorization to corresponding words based on data associating a plurality of prime numbers and a plurality of distinct words; and generating a Human Readable Prime Number Compression (HRPNC) of the binary object including the corresponding words for the one or more prime factors and an indication of the number of occurrences for each of the one or more prime factors in the prime factorization; A method comprising:

2. determining that a particular prime factor of the prime factorization is greater than a largest prime number in the data relating the plurality of prime numbers and the plurality of distinct words; calculating another prime factorization of said particular prime factor incremented by one; mapping one or more other prime factors of the other prime factorization to other corresponding words based on the data; and 2. The method of claim 1, further comprising generating the HRPNC portion of the binary object including the other corresponding words for the one or more other prime factors and an indication of the number of occurrences for each of the one or more other prime factors in the other prime factorizations.

3. The method of claim 2 , wherein the portion of the HRPNC of the binary object is separated from another portion of the HRPNC by a delimiter.

4. The method of claim 1 , further comprising applying a lossless compression algorithm to the binary object, wherein the factorization is based on the binary object after lossless compression.

5. The method of claim 1 , wherein the plurality of distinct words comprises a plurality of distinct words having the same length.

6. The method of claim 1 , wherein the plurality of distinct words excludes any homophones.

7. The method of claim 1 , wherein the plurality of distinct words excludes any phonemes.

8. 2. The method of claim 1, wherein the indication of the number of occurrences of each of the one or more prime factors in the prime factorization includes a leading digit for each of the one or more prime factors in the prime factorization.

9. generating the prime factorization from the HRPNC based on the data relating the plurality of prime numbers and the plurality of distinct words; and The method of claim 1 , further comprising generating the binary object based on the prime factorization.

10. The step of generating the prime factorization comprises: identifying a portion of the HRPNC designated by a delimiter; and 10. The method of claim 9, comprising calculating prime factors of the factorization by decrementing other prime factorizations encoded in the portion of the HRPNC.

11. a processing device; and a memory operatively coupled to the processing device, wherein the memory, when executed, causes the processing device to: Calculate prime factorization based on binary objects; mapping one or more prime factors of the prime factorization to corresponding words based on data associating a plurality of prime numbers and a plurality of distinct words; and 1. An apparatus storing computer program instructions for generating a Human Readable Prime Number Compression (HRPNC) of the binary object including the corresponding words for the one or more prime factors and an indication of the number of occurrences for each of the one or more prime factors in the prime factorization.

12. The computer program instructions, when executed, cause the processing device to further: determining that a particular prime factor of the prime factorization is greater than a largest prime number in the data relating the plurality of prime numbers and the plurality of distinct words; computing another prime factorization of said particular prime factor incremented by one; Mapping one or more other prime factors of the other prime factorization to other corresponding words based on the data; and 12. The apparatus of claim 11, further comprising: generating the HRPNC portion of the binary object including the other corresponding words for the one or more other prime factors and an indication of the number of occurrences for each of the one or more other prime factors in the other prime factorizations.

13. The apparatus of claim 12 , wherein the portion of the HRPNC of the binary object is separated from another portion of the HRPNC by a delimiter.

14. 12. The apparatus of claim 11, wherein the computer program instructions, when executed, further cause the processing device to apply a lossless compression algorithm to the binary object, wherein the prime factorization is based on the binary object after lossless compression.

15. The apparatus of claim 11 , wherein the plurality of distinct words comprises a plurality of distinct words having the same length.

16. The apparatus of claim 11 , wherein the plurality of distinct words excludes any homophones.

17. The apparatus of claim 11 , wherein the plurality of distinct words excludes any phonemes.

18. 12. The apparatus of claim 11, wherein the indication of the number of occurrences of each of the one or more prime factors in the prime factorization includes a leading digit for each of the one or more prime factors in the prime factorization.

19. The computer program instructions, when executed, cause the processing device to further: generating the prime factorization from the HRPNC based on the data relating the plurality of prime numbers and the plurality of distinct words; and The apparatus of claim 11 , wherein the binary object is generated based on the prime factorization.

20. To generate the prime factorization, the computer program instructions, when executed, further cause the processing device to: Identifying the portion of the HRPNC designated by a delimiter; and 20. The apparatus of claim 19, wherein the prime factors of the factorization are calculated by decrementing other prime factorizations encoded in the portion of the HRPNC.

21. On your computer: A procedure for computing prime factorization based on a binary object; mapping one or more prime factors of the prime factorization to corresponding words based on data associating a plurality of prime numbers and a plurality of distinct words; generating a Human Readable Prime Number Compression (HRPNC) of the binary object including the corresponding words for the one or more prime factors and an indication of the number of occurrences of each of the one or more prime factors in the prime factorization; A computer program for executing

22. The computer, determining that a particular prime factor of the prime factorization is greater than a largest prime number in the data relating the plurality of prime numbers and the plurality of distinct words; computing another prime factorization of the particular prime factor incremented by one; mapping one or more other prime factors of the other prime factorization to other corresponding words based on the data; generating the HRPNC portion of the binary object including the other corresponding words for the one or more other prime factors and an indication of the number of occurrences for each of the one or more other prime factors in the other prime factorization; 22. The computer program of claim 21, further comprising:

23. 23. The computer program of claim 22, wherein the portion of the HRPNC of the binary object is separated from another portion of the HRPNC by a delimiter.

24. 22. The computer program product of claim 21, further causing the computer to perform the step of applying a lossless compression algorithm to the binary object, wherein the prime factorization is based on the binary object after lossless compression.

25. 22. The computer program product of claim 21, wherein the plurality of distinct words comprises a plurality of distinct words having the same length.