<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>A comparison of programming languages' applicability for encrypted data analysis⋆</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Leila Rzayeva</string-name>
          <email>l.rzayeva@astanait.edu.kz</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Abilkair Imanberdi</string-name>
          <email>a.imanberdiyev@astanait.edu.kz</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Yerassyl Yermekov</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Information security systems, L.N. Gumilyov Eurasian National University</institution>
          ,
          <addr-line>2 Satbaev str., ENU Educational building, Astana</addr-line>
          ,
          <country country="KZ">Kazakhstan</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Research and Innovation Center “CyberTech”, Astana IT University, Business center EXPO</institution>
          ,
          <addr-line>55/11 Mangilik El ave., block C1, Astana</addr-line>
          ,
          <country country="KZ">Kazakhstan</country>
        </aff>
      </contrib-group>
      <fpage>54</fpage>
      <lpage>63</lpage>
      <abstract>
        <p>A sufficient level of data processing performance is important for real digital forensics use cases, where data should be processed as fast as possible to streamline the forensic analysis process and reduce crucial delays. While constantly improving the hardware is a simple and intuitive method to achieve performance increases, the software optimization provides significantly higher performance gains. This paper presents a comparative analysis of mainstream programming languages applicability for the statistic analysis of encrypted data. A set of statistical data test programs were developed in Python and Go programming languages in order to compare their performance and utilization metrics-execution time, CPU utilization and RAM usage. The comparison was performed on two separate computers-the first one employing a server-oriented AMD EPYC central processing unit, and the second one employing a mobile AMD Ryzen CPU. Overall, four independent tests were performed, the results of which were averaged from two samples. Results were consistent with expectations-a mostly compiled programming language with better optimization techniques, such as Go, provides significantly better time metrics than the Python version of the same data encryption detection algorithm-the Go version is 2.5 to 5 times faster than the Python version.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;encryption analysis</kwd>
        <kwd>statistical methods</kwd>
        <kwd>autocorrelation</kwd>
        <kwd>performance metrics</kwd>
        <kwd>digital forensics</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>Nowadays, more and more crimes are carried out partially or entirely in cyberspace. Digital
forensics processes have become an important part of investigations. Modern mobile devices are
equipped with large amounts of memory, often more than 128 gigabytes, and in the case of forensic
analysis of such data dumps, the time factor becomes important, especially when the discovery
process has to be performed in a limited amount of time, often days and hours instead of months.</p>
      <p>The reliable detection of data encryption is an important part of the digital forensics process as
well, and it determines the direction of the following actions and tests. For example, an analysis of
a smartphone’s internal memory is being performed. If the internal memory is not encrypted and a
valid file system structure is found, the analysis can go down to the file system level. Otherwise, if
the data block is determined as encrypted with a valid file system, a conclusion is made that the file
system uses FBE (File-Based Encryption); if data encryption is detected, but without a valid file
system, that means a high probability of a full-disk encryption being used. Data retrieval strategies
significantly differ for all of the described cases. A variety of statistical and non-statistical methods
are being used for data encryption detection. Statistical analysis methods often utilize an empirical
byte distribution model and a theoretical uniform distribution model to determine whether these
models are similar. Non-statistical methods can employ different data analysis algorithms, which
do not use empirical distribution models or any statistical models. Such methods can use pattern
analysis, rule-based searches, etc. Data encryption detection methods’ performance is highly
dependent on a number of factors, originating from both hardware and software limitations, but
the most important factor is software optimization.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Literature review</title>
      <p>The problem of programming languages’ differences in execution optimization is actively
researched for various use cases.</p>
      <p>
        For example, a 2020 research study, carried out by Paweł Dymora and Andrzej Paszkiewicz from
Rzeszów University of Technology (Rzeszów, Poland) [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], includes Python, Java, and Go
programming languages in the context of supporting Industry 4.0 decision-making processes, a
process especially critical in minimizing time delays. The results demonstrate a non-linear increase
in execution time and resource usage for each programming language, with Python being the
fastest language for the large decision tree algorithm. On the other hand, the Java programming
language performed the worst in execution time and resource utilization. The Go version has
displayed intermediate results.
      </p>
      <p>
        A 2023 research by Atishay Jain from Dr. Akhilesh Das Gupta Institute of Technology and
Management (New Delhi, India) [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] focuses on the applicability of Java and Python programming
languages for machine learning purposes. The results display that the Java programming language
is significantly faster for basic operations and slightly faster for complex programs, such as the
TicTac-Toe player algorithm.
      </p>
      <p>
        A 2022 study by Luka and Luca Olivari from the Šibenik University of Applied Science (Šibenik,
Croatia) [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] is mainly focused on the performance of the Ant Colony Optimization (ACO)
algorithm for the Traveling Salesman Problem. The algorithm was implemented in Python, C, C#,
R, and MATLAB languages and tested on a high-performance laptop. The Python version has
exhibited the worst result, being on average 12 times slower than the pure C implementation.
MATLAB, C#, and R versions of the same algorithm displayed a non-linear relationship between
data size and performance relative to the base C version, with the MATLAB version displaying the
highest non-linearity.
      </p>
      <p>A common conclusion of these studies is that the interpreted implementations of programming
languages (such as R, MATLAB, and default CPython for Python) are noticeably slower and more
resource-intensive than more minimalistic and compiled programming languages and their
implementations (C#, Go, C, etc).</p>
      <p>
        In addition to the general performance of languages, the implementation of cryptographic
algorithms is an important factor. For example, studies show that methods for analyzing encrypted
data, in particular using cryptographic structures such as hybrid crypto-code structures based on
false codes, can differ significantly in efficiency [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. The development and implementation of
postquantum cryptographic algorithms is a separate research area that requires attention to practical
challenges and solutions [
        <xref ref-type="bibr" rid="ref5 ref6">5, 6</xref>
        ]. Ensuring security in software is also an important aspect, as
confirmed by the analysis of vulnerabilities in mobile frameworks [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] and the search for
hardcoded credentials [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. The generation of reliable pseudo-random sequences, which are the basis for
many cryptographic systems [
        <xref ref-type="bibr" rid="ref10 ref8 ref9">8–10</xref>
        ], also requires careful design to increase their cryptographic
robustness [
        <xref ref-type="bibr" rid="ref11 ref12 ref13">11–13</xref>
        ]. All these studies emphasize that the choice of tools and their implementation
have a direct impact on the ultimate efficiency and security of systems.
      </p>
    </sec>
    <sec id="sec-3">
      <title>3. Data analysis speed variability factors</title>
      <p>
        As mentioned before, the performance of statistical and non-statistical data encryption detection
methods depends on a number of factors, such as CPU performance (measured in operations per
second), data storage sequential and random access speed (measured in megabytes per second) and
latency (measured in milliseconds), target operating system threads/processes management
strategies and the level of the program optimization, that is, if the data analysis algorithm is
implemented in an efficient way using efficient and highly optimized tools [
        <xref ref-type="bibr" rid="ref14 ref15 ref16">14–16</xref>
        ].
Modern programming languages have different levels of source code and binary optimization
methods. Also, the level and quality of the optimizations depend on the used compiler or
interpreter (in case of the existence of multiple compilers or interpreters, such as with C/C++ and
Python). For example, a standard CPython Python interpreter [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] generally performs worse than
optimized, but unmaintained PyPy interpreter [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ], which employs JIT compilation.
      </p>
      <sec id="sec-3-1">
        <title>3.1. Compiled and interpreted programming languages</title>
        <p>Programming languages can be differentiated into two main categories: compiled and interpreted.
It is possible to create a compiler for an interpreted language and vice versa, but most
programming languages usually utilize one of the two program execution methods.</p>
        <p>
          Compiled programming languages perform the compilation process to transform the source
code into a binary file (so-called ahead-of-time compilation [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]). The resulting binary file is
usually platform-dependent, with the main portability limitations being the operating system and
the target computer’s architecture. Compiled programming languages typically offer high
performance levels, direct hardware access, and advanced parallelism support.
        </p>
        <p>
          Interpreted programming languages are programming languages that use an interpreter for
code execution [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ]. The interpreter is a program that directly executes the written code without
precompiling it, usually by converting the source code into an intermediate representation and
running it line by line. Because of that, interpreted languages are highly portable and versatile, as
the code can be run directly on multiple platforms with a small number of adaptation changes or
no changes. However, interpreted programming languages usually have worse performance
metrics than compiled languages, which is caused by the intermediary layer between the hardware
and the program itself. Also, some interpreters (for example, CPython) severely limit the program’s
ability to use multi-threading and multi-processing, because they can only run in one thread.
        </p>
      </sec>
      <sec id="sec-3-2">
        <title>3.1.1. JIT compilation for interpreted languages</title>
        <p>
          JIT (just-in-time) compilation is a form of dynamic compilation, which performs the compilation of
the code at run time, unlike classic ahead-of-time compilation [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ]. This allows for immediate
performance optimizations. A common JIT tactic is as follows:





        </p>
        <p>Initial interpretation—the program is being compiled into an unoptimized bytecode and
executed.</p>
        <p>Performance monitoring—while the unoptimized program is running, it is being analyzed
for commonly reused code sections (also known as “hot spots”) and execution patterns.
Optimization—detected “hot spots” and patterns are being dynamically compiled with
optimizations applied. An optimized variant can include data type changes, idiom
simplification, code reordering and exclusion, conditional statements optimization, etc.
Execution—unoptimized bytecode is replaced with an optimized variant.</p>
        <p>Re-evaluation and decision making—if the optimized version performs worse or emits
errors, it is replaced by another optimization variation or by the initial version.</p>
        <p>In general, JIT compilation combines both positive and negative aspects of the ahead-of-time
compilation and straight interpretation. It is commonly used in Java, JavaScript, PHP,
WebAssembly, Ruby, C#, Python (as an experimental branch in the 3.14 release), and other
languages.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Data Test Suite composition and components</title>
      <p>
        Data Test Suite (DTS) is a program that implements a previously developed complex method for
detecting data encryption (Figure 1). DTS utilizes both statistical and non-statistical methods to
determine whether the provided partition image file (Mode 1) or a set of individual files (Mode 2) is
encrypted. Two versions of this program were developed: version 1 was written in Python 3.12 and
uses various external libraries for data manipulation and analysis, such as NumPy [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ], SciPy [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ],
Seaborn [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ], Matplotlib [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ], and others; version 2 is a complete rewrite of the previous version in
Go 1.24.1, which uses a minimal number of external libraries. Most notably, this version employs
the github.com/burntsushi/rure-go [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ] binding package for a fast regular expression engine found
in the Rust programming language’s standard library [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ], the github.com/montanaflynn/stats
package for statistical functions [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ], and the github.com/vimeo/go-magic interface package for the
libmagic library, used for MIME type extraction [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ].
      </p>
      <sec id="sec-4-1">
        <title>4.1. Autocorrelation test</title>
        <p>
          The autocorrelation function is a correlation of a signal (or, in our case, a data block) with a
delayed (shifted) copy of itself [
          <xref ref-type="bibr" rid="ref30">30</xref>
          ]. This method is commonly used for detecting hidden and/or
weak periodicities in a data set. This method (without prior data normalization) can be used to
detect structured and repeatable sections in data blocks. The standard deviation value for the set of
average autocorrelation coefficient values (per block) is calculated. Encrypted and highly
compressed data blocks exhibit low autocorrelation coefficient results and low standard deviation
of the set of points (large input data is split into smaller blocks), while plaintext blocks exhibit
varying values of the coefficient and high standard deviation values. In the DTS, a block size of 1
kibibyte is being used with a maximum lag value of 50 bytes.
        </p>
      </sec>
      <sec id="sec-4-2">
        <title>4.2. Image file system detection test</title>
        <p>
          This test uses the GNU Parted disk management utility [
          <xref ref-type="bibr" rid="ref31">31</xref>
          ] to determine if the input file contains a
valid partition or partition table. GNU Parted is an advanced open-source command-line partition
management software that supports both block devices and image files. The output of the utility is
parsed in order to determine the file system type. This test is used to branch the analysis strategies
using the following rule set:



        </p>
        <p>IF a file system is detected and the autocorrelation test result is “not encrypted”—the image
is not encrypted and can be mounted for further analysis.</p>
        <p>ELSE IF a file system is detected and the autocorrelation test result is “encrypted”—the
image is a product of a file-based encryption software.</p>
        <p>ELSE IF no file system is detected—the image is a product of a full-disk encryption or is not
an image.</p>
      </sec>
      <sec id="sec-4-3">
        <title>4.3. Compression test</title>
        <p>As is known, encrypted data are hard to compress. This property can be used to determine if input
data is encrypted or not. It is worth mentioning that this test does not differentiate between
encrypted and already compressed data, as they exhibit similar statistical parameters. A set of
compression utilities is used to calculate the average compression ratio of the input data. If the
average compression ratio is below 1,1, the data are considered encrypted. Compression ratio can
be less than 1,0, which means that the compression algorithm has added a layer of redundancy
(block structures, recovery data, etc).</p>
      </sec>
      <sec id="sec-4-4">
        <title>4.4. Kolmogorov-Smirnov test</title>
        <p>
          The Kolmogorov-Smirnov goodness-of-fit test is a statistical test used to determine how well a set
of observations corresponds to a statistical model [
          <xref ref-type="bibr" rid="ref32">32</xref>
          ]. Encrypted data exhibit near-uniform byte
distribution patterns, while non-encrypted data usually have some discrepancies in their patterns.
The Kolmogorov-Smirnov test result is a maximum value of the distance between empirical and
theoretical models, although the P-value is the most commonly used criterion.
        </p>
      </sec>
      <sec id="sec-4-5">
        <title>4.5. MIME type test</title>
        <p>
          MIME string is a unified data type descriptor, originally designed to describe email attachment
types [
          <xref ref-type="bibr" rid="ref33">33</xref>
          ]. A MIME string consists of two parts: type and subtype, separated by a slash symbol.
Main MIME type entries are “application”, “audio”, “image”, “message”, “multipart”, “text”, “video”,
“font”, “example”, “model”, and “haptics”. MIME strings can be used to determine if a file is
previously compressed and can be excluded from a batch scan, because compressed files, as was
mentioned before, compressed and encrypted files have similar statistical properties. MIME
detection is implemented using the vimeo/go-magic binding to the highly optimized libmagic
library and has high levels of performance. This makes the performance testing redundant, and this
test is excluded from the performance testing. MIME type detection test branches the batch mode
file evaluation process as follows: IF the file MIME string corresponds to compressed data (archived
or not), THEN the test for this file is skipped, ELSE the file is being analyzed as usual.
        </p>
      </sec>
      <sec id="sec-4-6">
        <title>4.6. Signature detection test</title>
        <p>File signatures are sequences of bytes, which are embedded in the file structure to denote its type
and properties. The file signature analysis is used to find such bytes in a file system image. If the
data file is encrypted (or contains random data), the number of signatures per megabyte is usually
low (below 150 signatures per MB, usually around 60-70 signatures per MB). Images with
unencrypted data and without empty blocks usually demonstrate significantly higher signature
values per MB because they contain individual files. Signature search test in Go version is
implemented using the rure-go binding package, which is claimed to be faster than the native Go
implementation of the regular expressions matching engine. The Python version utilizes the
standard library regex functionality.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. Performance testing</title>
      <sec id="sec-5-1">
        <title>5.1. Testing methodology</title>
        <p>The performance testing will be carried out on two separate computers with processors for
different use cases. Both Python and Go versions will be tested in Mode 1 (Mode 2 uses statistical
tests, identical to Test 1, and non-statistical tests, such as MIME type or file system detection, are
negligibly fast). Speed of individual tests, RAM usage, and CPU utilization will be measured using
built-in time count functions and top software.. Two passes of every benchmark were performed,
with the results being averaged. A 1-gibibyte random data file was used to compare the
performance of both tests on both systems.</p>
      </sec>
      <sec id="sec-5-2">
        <title>5.2. Test system specifications</title>
        <sec id="sec-5-2-1">
          <title>Test system 1:</title>
          <p>



</p>
        </sec>
        <sec id="sec-5-2-2">
          <title>HP 255 G9 laptop. AMD Ryzen 5 5625U CPU (6 cores, 12 threads, Zen3 architecture, 2.3 GHz base clock, 4.3 GHz boost clock, 14830 Passmark points in multi-core, 2877 Passmark points in single-core [34]).</title>
          <p>OpenSUSE Tumbleweed operating system.
16 GB DDR4-3200 RAM in dual-channel mode.</p>
          <p>Kingston XS1000 external SSD for dataset storage.</p>
        </sec>
        <sec id="sec-5-2-3">
          <title>Test system 2:</title>
          <p></p>
        </sec>
        <sec id="sec-5-2-4">
          <title>Remote virtual server on Microsoft Hyper-V hypervisor. 58</title>
          <p>
            Autocorr
Counter
K-S
Compression
Entropy
Total




8 virtual cores of AMD EPYC 7513 CPU (32 cores, 64 threads, 2.6 GHz base clock, 3.65 GHz
boost clock, 59330 Passmark points in multi-core, 2479 Passmark points in single-core [
            <xref ref-type="bibr" rid="ref35">35</xref>
            ]).
Ubuntu 24.04 LTS operating system.
8 GB of virtual RAM.
          </p>
          <p>200 GB of virtual disk space (allocated on a solid-state drive).</p>
        </sec>
      </sec>
      <sec id="sec-5-3">
        <title>5.3. Testing results</title>
        <sec id="sec-5-3-1">
          <title>Performance test results are shown in Table 1.</title>
          <p>CPU utilization for autocorrelation, entropy and other statistical tests average is at 100% with
fluctuations between 90% and 140% for single core (average 12.5% per whole CPU with 8 cores), as
they utilize only one thread and one core for calculations (Figures 1 and 2).</p>
          <p>RAM usage for the Python version of the test suite is at 140-181 MiB for autocorrelation and
counter calculation phases and 143 MiB for the signature search test (Figure 3).</p>
          <p>RAM usage for Go version of the test suite with 1 MiB block size is 25-56 MiB (fluctuating) for
autocorrelation and counter calculation phases and 68-69 MiB for signature search test (Figure 4).</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>6. Results analysis</title>
      <p>As is clearly visible, performance test results are highly dependent on the programming language’s
internal optimization mechanisms, such as runtime code optimization, garbage collection, etc. The
Go version of the test suite performs 4.2 times better on average than the Python version.</p>
      <p>System 1, counterintuitively, demonstrates better results than System 2, despite having a laptop
CPU instead of the more powerful server type. This can be explained by the fact that server CPUs
are optimized to handle a large number of parallel tasks with lower core performance expectations.
Consumer CPUs are targeted for strong single-core workloads, such as games. This claim is further
confirmed by the lower single-core score for the System 2 (Section 4.2).</p>
      <p>A sudden drop of CPU utilization to 0 is due to the compression test execution: this test does
not run in the main thread, but is performed using exec() calls, and computing processes are
separate for each compression algorithm.</p>
      <p>RAM usage plots also show better optimization techniques (garbage collection, dereferencing),
applied during the build process of the Go version, as its RAM usage is 2 times lower on average.
The Python interpreter does not employ advanced memory usage optimization techniques, which
explains almost constant RAM usage for most of the run.</p>
    </sec>
    <sec id="sec-7">
      <title>Conclusions</title>
      <p>This comparative analysis clearly demonstrates the fact of prevalence of the Go programming
language compared to the Python programming language in data encryption analysis tasks. This
claim is supported by the performed double testing on computers with different usage scenarios.</p>
      <p>The Go version of the Data Test Suite is on average four times faster than its Python
counterpart and has better resource handling patterns, induced by the highly-optimized Go
compiler with advanced compiling techniques and code optimizations. The performance increase
and resource optimizations of the Go version are deemed significant.</p>
      <p>Also, a distinctive difference between the performance of consumer and server CPUs was
identified and explained. The main cause of a such performance difference is explained by different
work load scenarios for these processors.</p>
    </sec>
    <sec id="sec-8">
      <title>Acknowledgements</title>
      <p>This study was carried out with the financial support of the Committee of Science of the Ministry
of Science and Higher Education of the Republic of Kazakhstan under Contract №388/PTF24-26
dated 01.10.2024 under the scientific project IRN BR24993232 “Development of innovative
technologies for conducting digital forensic investigations using intelligent software-hardware
complexes”.</p>
    </sec>
    <sec id="sec-9">
      <title>Declaration on Generative AI</title>
      <p>While preparing this work, the authors used the AI programs Grammarly Pro to correct text
grammar and Strike Plagiarism to search for possible plagiarism. After using this tool, the authors
reviewed and edited the content as needed and took full responsibility for the publication’s content.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>P.</given-names>
            <surname>Dymora</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Paszkiewicz</surname>
          </string-name>
          ,
          <article-title>Performance Analysis of Selected Programming Languages in the Context of Supporting Decision-Making Processes for Industry 4.0, Appl</article-title>
          . Sci.
          <volume>10</volume>
          .23 (
          <year>2020</year>
          )
          <article-title>8521</article-title>
          . doi:
          <volume>10</volume>
          .3390/app10238521
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>A.</given-names>
            <surname>Jain</surname>
          </string-name>
          ,
          <article-title>Comparative Analysis of Java and Python in Machine Learning: Investigate and Compare the Suitability and Performance of Java and Python for Machine Learning Tasks</article-title>
          ,
          <source>Int. J. Res. Publ. Rev. 4</source>
          .
          <issue>12</issue>
          (
          <year>2023</year>
          )
          <fpage>1151</fpage>
          -
          <lpage>1167</lpage>
          . doi:
          <volume>10</volume>
          .55248/gengpi.4.1223.123305
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>L.</given-names>
            <surname>Olivari</surname>
          </string-name>
          , L. Olivari,
          <article-title>Influence of Programming Language on the Execution Time of Ant Colony Optimization Algorithm, Teh</article-title>
          .
          <source>Glas. 16.2</source>
          (
          <year>2022</year>
          )
          <fpage>231</fpage>
          -
          <lpage>239</lpage>
          . doi:
          <volume>10</volume>
          .31803/tg-20220407095736
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>Serhii</given-names>
            <surname>Yevseiev</surname>
          </string-name>
          , et al.
          <source>Development of Niederreiter Hybrid Crypto-Code Structure on flawed Codes</source>
          ,
          <string-name>
            <surname>Eastern-European</surname>
            <given-names>J</given-names>
          </string-name>
          .
          <source>Enterp. Technol. 1</source>
          .
          <issue>9</issue>
          (
          <issue>97</issue>
          ) (
          <year>2019</year>
          )
          <fpage>27</fpage>
          -
          <lpage>38</lpage>
          . doi:
          <volume>10</volume>
          .15587/
          <fpage>1729</fpage>
          -
          <lpage>4061</lpage>
          .
          <year>2019</year>
          .156620
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>P.</given-names>
            <surname>Vorobets</surname>
          </string-name>
          , et al.,
          <string-name>
            <surname>Implementing</surname>
          </string-name>
          Post-Quantum KEMs:
          <article-title>Practical Challenges and Solutions</article-title>
          ,
          <source>in: Cybersecurity Providing in Information and Telecommunication Systems II, 3826</source>
          ,
          <year>2024</year>
          ,
          <fpage>212</fpage>
          -
          <lpage>219</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>A.</given-names>
            <surname>Horpenyuk</surname>
          </string-name>
          , et al.,
          <article-title>Analysis of Problems and Prospects of Implementation of Post-Quantum Cryptographic Algorithms</article-title>
          , in: Classic, Quantum, and
          <string-name>
            <surname>Post-Quantum Cryptography</surname>
          </string-name>
          (CQPC-
          <year>2023</year>
          ),
          <volume>3504</volume>
          ,
          <year>2023</year>
          ,
          <fpage>39</fpage>
          -
          <lpage>49</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>T.</given-names>
            <surname>Fedynyshyn</surname>
          </string-name>
          , et al.,
          <source>Security Implications of Mobile Development Frameworks: Findings from Static Analysis of Android Apps, in: 17th Int. Conf. Trends in Radioelectronics, Telecommunications and Computer Engineering</source>
          ,
          <year>2024</year>
          ,
          <fpage>444</fpage>
          -
          <lpage>448</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>O.</given-names>
            <surname>Mykhaylova</surname>
          </string-name>
          , et al.,
          <article-title>Hardcoded Credentials in Android Apps: Service Exposure and Category-based Vulnerability Analysis</article-title>
          ,
          <source>in: Cybersecurity providing in information and telecommunication systems II, 3826</source>
          ,
          <year>2024</year>
          ,
          <fpage>206</fpage>
          -
          <lpage>211</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>V.</given-names>
            <surname>Maksymovych</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Harasymchuk</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Opirskyy</surname>
          </string-name>
          ,
          <source>The Designing and Research of Generators of Poisson Pulse Sequences on Base of Fibonacci Modified Additive Generator, in: Advances in Intelligent Systems and Computing</source>
          , Springer International Publishing, Cham,
          <year>2018</year>
          ,
          <fpage>43</fpage>
          -
          <lpage>53</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>319</fpage>
          -91008-
          <issue>6</issue>
          _
          <fpage>5</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>V.</given-names>
            <surname>Maksymovych</surname>
          </string-name>
          , et al. P.
          <article-title>Development of Additive Fibonacci Generators with Improved Characteristics for Cybersecurity Needs</article-title>
          .
          <source>Appl. Sci</source>
          .
          <volume>12</volume>
          (
          <year>2022</year>
          )
          <article-title>1519</article-title>
          . doi:
          <volume>10</volume>
          .3390/app12031519
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>I.</given-names>
            <surname>Opirskyy</surname>
          </string-name>
          , et al.,
          <source>Pseudorandom Sequence Generator based on the Computation of ln 2</source>
          , in: CQPC-2024: Classic, Quantum, and
          <string-name>
            <surname>Post-Quantum</surname>
            <given-names>Cryptography</given-names>
          </string-name>
          ,
          <volume>3829</volume>
          ,
          <year>2024</year>
          ,
          <fpage>79</fpage>
          -
          <lpage>86</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>O.</given-names>
             
            <surname>Harasymchuk</surname>
          </string-name>
          , et al.
          <article-title>Generator of pseudorandom bit sequence with increased cryptographic security</article-title>
          ,
          <source>Metall. Min. Ind.: Sci. Tech. J. 5</source>
          (
          <year>2014</year>
          )
          <fpage>25</fpage>
          -
          <lpage>29</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>V.</given-names>
            <surname>Maksymovych</surname>
          </string-name>
          , et al.,
          <article-title>A New Approach to the Development of Additive Fibonacci Generators based on Prime Numbers</article-title>
          , Electronics,
          <volume>10</volume>
          (
          <issue>23</issue>
          ) (
          <year>2021</year>
          )
          <fpage>2912</fpage>
          -
          <lpage>1</lpage>
          -
          <fpage>2912</fpage>
          -
          <lpage>10</lpage>
          . doi:
          <volume>10</volume>
          .3390/electronics10232912
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>R.</given-names>
            <surname>Chernenko</surname>
          </string-name>
          , et al.,
          <article-title>Encryption Method for Systems with Limited Computing Resources</article-title>
          ,
          <source>in: Cybersecurity Providing in Information and Telecommunication Systems</source>
          , vol.
          <volume>3288</volume>
          (
          <year>2022</year>
          )
          <fpage>142</fpage>
          -
          <lpage>148</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>M.</given-names>
             
            <surname>Iavich</surname>
          </string-name>
          , et al.,
          <article-title>Classical and Post-Quantum Encryption for GDPR</article-title>
          , in: Classic, Quantum, and
          <string-name>
            <surname>Post-Quantum</surname>
            <given-names>Cryptography</given-names>
          </string-name>
          , vol.
          <volume>3829</volume>
          (
          <year>2024</year>
          )
          <fpage>70</fpage>
          -
          <lpage>78</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>A.</given-names>
            <surname>Ilyenko</surname>
          </string-name>
          , et al.,
          <article-title>Practical Aspects of using Fully Homomorphic Encryption Systems to Protect Cloud Computing, in: Cybersecurity Providing in Information and Telecommunication Systems II</article-title>
          , vol.
          <volume>3550</volume>
          (
          <year>2023</year>
          )
          <fpage>226</fpage>
          -
          <lpage>233</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>Guido</surname>
            <given-names>van Rossum</given-names>
          </string-name>
          ,
          <string-name>
            <surname>CPython</surname>
          </string-name>
          , Software, v.
          <volume>3</volume>
          .
          <issue>13</issue>
          .3,
          <year>2025</year>
          . https://github.com/python/cpython
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>PyPy</given-names>
            <surname>Community</surname>
          </string-name>
          , PyPy, Software, v.
          <volume>7</volume>
          .3.
          <issue>19</issue>
          ,
          <year>2025</year>
          . https://github.com/pypy/pypy
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <article-title>Contributors to Wikimedia Projects, Ahead-of-</article-title>
          <string-name>
            <surname>Time</surname>
            <given-names>Compilation</given-names>
          </string-name>
          , Wikipedia,
          <year>2007</year>
          . https://en.wikipedia.org/wiki/Ahead-of-time_compilation
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20] Contributors to Wikimedia Projects,
          <string-name>
            <surname>Interpreter</surname>
          </string-name>
          (Computing), Wikipedia,
          <year>2002</year>
          . https://en.wikipedia.org/wiki/Interpreter_(computing)
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <surname>D.</surname>
          </string-name>
           Notario,
          <source>Does the JIT Take Advantage of My CPU?</source>
          ,
          <year>2005</year>
          . https://learn.microsoft.com/ en-us/archive/blogs/davidnotario/does
          <article-title>-the-jit-take-advantage-of-my-cpu</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>C. R.</given-names>
            <surname>Harris</surname>
          </string-name>
          , et al.,
          <article-title>Array Programming with NumPy</article-title>
          ,
          <source>Nature</source>
          <volume>585</volume>
          .7825 (
          <year>2020</year>
          )
          <fpage>357</fpage>
          -
          <lpage>362</lpage>
          . doi:
          <volume>10</volume>
          .1038/s41586-020-2649-2
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>P.</given-names>
            <surname>Virtanen</surname>
          </string-name>
          , et al.,
          <source>SciPy 1</source>
          .0: Fundamental Algorithms for Scientific Computing in Python,
          <source>Nat. 17.3</source>
          (
          <year>2020</year>
          )
          <fpage>261</fpage>
          -
          <lpage>272</lpage>
          . doi:
          <volume>10</volume>
          .1038/s41592-019-0686-2
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>M.</given-names>
            <surname>Waskom</surname>
          </string-name>
          , Seaborn: Statistical Data Visualization, J. Open Source Softw.
          <volume>6</volume>
          .
          <issue>60</issue>
          (
          <year>2021</year>
          )
          <article-title>3021</article-title>
          . doi:
          <volume>10</volume>
          .21105/joss.03021
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <given-names>J. D.</given-names>
            <surname>Hunter</surname>
          </string-name>
          ,
          <source>Matplotlib: A 2D Graphics Environment, Comput. Sci. &amp; Eng. 9</source>
          .
          <issue>3</issue>
          (
          <year>2007</year>
          )
          <fpage>90</fpage>
          -
          <lpage>95</lpage>
          . doi:
          <volume>10</volume>
          .1109/
          <string-name>
            <surname>mcse</surname>
          </string-name>
          .
          <year>2007</year>
          .55
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>A.</given-names>
            <surname>Gallant</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Semaan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Adapa</surname>
          </string-name>
          , Rure-Go:
          <article-title>Go Bindings to RUst's REgex engine</article-title>
          , Software, v.
          <source>v0.0.0-20231211185014-8a0f52724b91</source>
          ,
          <year>2023</year>
          . https://github.com/BurntSushi/rure-go
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <surname>Rust</surname>
            <given-names>Community</given-names>
          </string-name>
          , Regex, Software, v.
          <volume>1</volume>
          .
          <issue>11</issue>
          .1,
          <year>2024</year>
          . https://crates.io/crates/regex
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>M.</given-names>
             
            <surname>Flynn</surname>
          </string-name>
          , Stats-Golang Statistics Package, Software, v. 
          <volume>0</volume>
          .7.
          <issue>1</issue>
          ,
          <year>2023</year>
          . https://github.com/ montanaflynn/stats
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <surname>Vimeo</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Ruggles</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          <string-name>
            <surname>Donnay</surname>
          </string-name>
          , Go-Magic:
          <article-title>Go Library for Getting MIME Type using Libmagic, Software</article-title>
          , v.
          <volume>1</volume>
          .
          <issue>0</issue>
          .
          <issue>0</issue>
          ,
          <year>2018</year>
          . http://github.com/vimeo/go-magic
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <article-title>Probability and Random Processes for Electrical</article-title>
          and Computer Engineers, Cambridge University Press,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <given-names>GNU</given-names>
            <surname>Foundation</surname>
          </string-name>
          , GNU Parted, Software, v.
          <volume>3</volume>
          .
          <issue>6</issue>
          ,
          <year>2023</year>
          . https://git.savannah.gnu.org/cgit/ parted.git
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <article-title>Contributors to Wikimedia projects, Kolmogorov-Smirnov test</article-title>
          ,
          <source>Wikipedia</source>
          ,
          <year>2001</year>
          . https://en.wikipedia.org/wiki/Kolmogorov-Smirnov_test
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33]
          <string-name>
            <given-names>Internet</given-names>
            <surname>Assigned Numbers Authority</surname>
          </string-name>
          , Media Types,
          <year>2025</year>
          . https://www.iana.org/ assignments/media-types/media-types.xhtml
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          [34]
          <string-name>
            <given-names>PassMark</given-names>
            <surname>Software</surname>
          </string-name>
          ,
          <source>AMD Ryzen 5 5625U Benchmark</source>
          . https://www.cpubenchmark.net/ cpu.php?cpu=AMD+
          <article-title>Ryzen+5+5625U&amp;amp;id=4760</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          [35]
          <string-name>
            <given-names>PassMark</given-names>
            <surname>Software</surname>
          </string-name>
          ,
          <source>AMD EPYC 7513 Benchmark</source>
          . https://www.cpubenchmark.net/cpu.php? cpu=
          <source>AMD+EPYC+7513&amp;amp;id=4383</source>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>