Open access peer-reviewed chapter

Securing Java Source Files Using the Cipher Cryptographic Algorithm

Written By

Asma’a Al-Hakimi, Muhammad Ibrahim Ravi Bin Gobi and Misbah ul Iman

Reviewed: 22 February 2024 Published: 19 June 2024

DOI: 10.5772/intechopen.114348

From the Edited Volume

Biometrics and Cryptography

Edited by Sudhakar Radhakrishnan and Carlos M. Travieso-González

Chapter metrics overview

10 Chapter Downloads

View Full Metrics

Abstract

Reverse engineering poses a substantial threat to software and hardware systems, allowing unauthorized access to proprietary information, algorithms, and trade secrets. This chapter introduces a new cryptographic algorithm designed to thwart reverse engineering efforts. The research methodology involved conducting experiments to assess the technique’s efficacy, yielding promising results. It emphasizes the importance of integrating cryptographic methods as a preventive measure against reverse engineering. Through encryption, decryption, and obfuscation, developers can bolster their systems’ security and mitigate reverse engineering risks. The experiments validate the algorithm’s potential in safeguarding sensitive information and intellectual property. Reverse engineering involves analyzing and reconstructing a system’s design, code, or logic to gain unauthorized access or replicate its functionality, potentially leading to intellectual property theft, security breaches, and financial losses. The proposed technique significantly hampers reverse engineering attempts, making it challenging for attackers to understand the system’s logic or extract meaningful information.

Keywords

  • cryptography
  • cipher algorithm
  • reverse engineering
  • software security
  • symmetric encryption

1. Introduction

Reverse engineering is the process of analyzing a product, system, or technology to understand its design, functionality, and operation. It involves disassembling, examining, and studying the components, algorithms, and code of the subject to gain insights into how it works. In recent years, reverse engineering has become increasingly important and has faced emerging challenges, new perspectives, and innovative applications [1].

Let us explore some of these aspects.

  • Intellectual Property Protection: Reverse engineering can be used to gain unauthorized access to proprietary information, leading to concerns about intellectual property theft. Protecting trade secrets and maintaining the legal boundaries of reverse engineering is a significant challenge [2].

  • Digital Rights Management (DRM): Reverse engineering is often used to circumvent DRM mechanisms employed by software, games, or digital media. Developers face the challenge of creating robust DRM solutions that can resist reverse engineering attempts.

  • Obfuscation and Anti-Reverse Engineering Techniques: To protect software and prevent reverse engineering, developers employ various obfuscation techniques. These techniques make the code more complex and harder to understand, posing challenges to reverse engineers [3, 4].

  • Security Analysis and Vulnerability Discovery: Reverse engineering is crucial in identifying security vulnerabilities in software, firmware, or hardware. By analyzing these systems, experts can uncover potential weaknesses and provide insights to improve security.

  • Legacy Systems and Interoperability: Reverse engineering plays a vital role in understanding legacy systems that lack proper documentation or have become obsolete. Reverse engineering enables integration with modern technologies and facilitates interoperability [5].

  • Malware Analysis: Reverse engineering is crucial in analyzing and understanding malware, such as viruses, worms, and Trojans. Security professionals can reverse engineer malicious code to uncover their behavior, techniques, and potential countermeasures [6].

  • Product and Process Improvement: Reverse engineering helps in gaining insights into competitors’ products, which can be used to enhance one’s own products or develop innovative solutions. By reverse engineering products, companies can identify shortcomings, understand manufacturing processes, and find areas for improvement.

  • Patent Infringement Investigations: Reverse engineering can be used to investigate potential patent infringement cases. By examining the design and functionality of a product, experts can determine if it violates existing patents, aiding legal proceedings [7].

  • 3D Printing and Manufacturing: Reverse engineering is widely used in 3D scanning and modeling to replicate or modify physical objects. By scanning and analyzing existing objects, manufacturers can create accurate digital models for reproduction or redesign [8].

  • Software Maintenance and Documentation: Reverse engineering can be employed to understand and document legacy software systems. It helps software developers comprehend codebases that lack proper documentation, aiding in maintenance, bug fixing, and system upgrades [9].

Advertisement

2. Exploration of existing cryptography techniques

Cryptography is a fundamental aspect of modern computer security and plays a crucial role in protecting sensitive information, ensuring data integrity, and enabling secure communication over insecure channels [10].

Cryptography is the practice and study of techniques used to secure information and communication by converting it into an unintelligible form, thereby protecting it from unauthorized access or malicious activities. It is an essential aspect of modern information security, providing confidentiality, integrity, authentication, and non-repudiation [11].

The primary objective of cryptography is to ensure that sensitive data remains confidential during storage, transmission, and processing. This is achieved using cryptographic algorithms, which manipulate the plaintext (original message) into ciphertext (encrypted message) using encryption keys. The encrypted data can only be deciphered back to its original form by authorized individuals who possess the corresponding decryption keys [12].

There are two fundamental categories of cryptography: symmetric key cryptography and public key cryptography. In symmetric key cryptography, a single key is used for both encryption and decryption. This key must be securely shared between the sender and the intended recipient. On the other hand, public key cryptography employs a pair of mathematically related keys: a public key for encryption and a private key for decryption. The public key can be freely distributed, while the private key must be kept secret [13].

Cryptography techniques are used in various applications, such as secure communication protocols (e.g., SSL/TLS), data encryption at rest and in transit, digital signatures, secure authentication systems, and secure storage of sensitive information. It plays a crucial role in protecting personal data, financial transactions, confidential business information, and government secrets.

The strength of cryptographic systems relies on the complexity of the algorithms and the length of the encryption keys used. Cryptanalysis is the science of analyzing cryptographic systems to identify vulnerabilities or weaknesses that could be exploited by attackers. Consequently, ongoing research and development in cryptography are essential to stay ahead of potential threats and ensure the robustness of security mechanisms [14].

In recent years, emerging technologies such as blockchain, quantum computing, and homomorphic encryption have introduced new challenges and opportunities in the field of cryptography. These advancements continue to drive the evolution of cryptographic techniques to address the changing landscape of information security and privacy [15].

The following section presents cryptography techniques:

2.1 Symmetric encryption

Symmetric encryption algorithms use a single shared key to both encrypt and decrypt data. Well-known symmetric encryption algorithms include the Advanced Encryption Standard (AES), which is widely used and considered secure. AES operates on fixed-size blocks (128 bits) and supports key sizes of 128, 192, or 256 bits [16].

2.2 Asymmetric encryption

Asymmetric encryption (also known as public key encryption) employs a pair of mathematically related keys: a public key for encryption and a private key for decryption. The encryption key is made public, allowing anyone to encrypt messages, while the decryption key remains private. Popular asymmetric encryption algorithms include Rivest-Shamir-Adleman (RSA) (encryption technique) and Elliptic Curve Cryptography (ECC) [17].

2.3 Hash functions

Hash functions take an input (message) and produce a fixed-size output (hash value). A key feature of hash functions is that they are one-way, meaning it is computationally infeasible to derive the original message from the hash value. Commonly used hash functions include the Secure Hash Algorithm (SHA) family, such as SHA-256, SHA-384, and SHA-512 [18].

2.4 Digital signatures

Digital signatures are used to verify the authenticity and integrity of digital documents or messages. They involve the use of asymmetric encryption to create a unique signature for a document that can be verified by anyone with access to the signer’s public key. The Digital Signature Algorithm (DSA) and the Elliptic Curve Digital Signature Algorithm (ECDSA) are widely used for digital signatures [19].

2.5 Key exchange protocols

Key exchange protocols establish a shared secret key between two parties communicating over an insecure channel. One widely used key exchange protocol is the Diffie-Hellman key exchange, which allows two parties to generate a shared secret without explicitly transmitting it over the network [20].

2.6 Post-quantum cryptography

With the rise of quantum computing, there has been increasing interest in post-quantum cryptography. These cryptographic algorithms are designed to be resistant to attacks by quantum computers. Examples include lattice-based cryptography, code-based cryptography, and multivariate cryptography [21].

Cryptography is a dynamic field, and new techniques and algorithms are constantly being developed to address emerging threats and technological advancements. Researchers and practitioners are continually working to improve cryptographic techniques to ensure the security of digital communications and protect sensitive information [22].

Advertisement

3. The mechanism of cryptography

The mechanism of cryptography to protect code can be represented conceptually through a series of steps. Here is a graphical representation using text:

  1. Original Code: Represents the source code that needs to be protected.

  2. Encryption: The original code is input into an encryption algorithm along with a secret encryption key. The encryption algorithm transforms the original code into ciphertext.

  3. Ciphertext: The encrypted form of the original code. It appears as random and unreadable data.

  4. Decryption Key: The secret decryption key is needed to reverse the encryption process and retrieve the original code.

  5. Decryption: The ciphertext, along with the decryption key, is input into a decryption algorithm. The decryption algorithm reverses the encryption process and retrieves the original code.

  6. Authorized Access: The original code is now accessible and readable by authorized individuals who possess the decryption key.

While this textual representation does not provide a visual graph, it outlines the sequential steps involved in the mechanism of cryptography to protect code. The encryption step converts the original code into ciphertext, making it unreadable without the decryption key. The decryption step, performed by authorized individuals with the decryption key, retrieves the original code for access and use. Figure 1 illustrates the encryption process.

Figure 1.

Cryptographic algorithm process.

Advertisement

4. Distinguishing symmetric encryption from asymmetric encryption

4.1 Symmetric encryption

Symmetric encryption, also known as secret-key encryption, uses a single shared key to both encrypt and decrypt data. The same key is used by both the sender and the receiver, which means that both parties must have access to the key in advance. The strength and security of symmetric encryption lie in the secrecy of the shared key [23].

4.1.1 Case 1

One of the most widely used symmetric encryption algorithms is the Advanced Encryption Standard (AES). AES operates on fixed-size blocks of data and supports key sizes of 128, 192, or 256 bits. For example, if Eva wants to send an encrypted message to YG using AES, they both need to agree on a secret key beforehand. EVA encrypts the message using the shared key and sends the encrypted ciphertext to YG. YG then uses the same shared key to decrypt the ciphertext and retrieve the original message.

4.1.2 Case 2

4.2 Asymmetric encryption

Asymmetric encryption, also known as public key encryption, employs a pair of mathematically related keys: a public key and a private key. The public key is made freely available, while the private key must be kept secret. These keys are mathematically linked, but it is computationally infeasible to derive the private key from the public key. Table 1 presents the comparison of Symmetric and Asymmetric in terms of key security.

SymmetricAsymmetric
Key ManagementSymmetric encryption requires secure key distribution [24].Asymmetric encryption eliminates this need. Asymmetric encryption simplifies key management by using public and private key pairs.
Computational ComplexitySymmetric encryption algorithms are generally faster and more efficient computationally, making them suitable for encrypting large amounts of data.Asymmetric encryption algorithms are slower and computationally more expensive.
SecurityBoth symmetric and asymmetric encryption provide security, but the level of security differs. Symmetric encryption relies on the secrecy of the shared key [25].While asymmetric encryption relies on the computational difficulty of deriving the private key from the public key.

Table 1.

Comparison between symmetric and asymmetric.

4.2.1 Case 1

The RSA algorithm is a widely used asymmetric encryption algorithm. In RSA, each user has a pair of keys: a public key and a private key. For example, if EVA wants to send an encrypted message to YG, she can use YG’s public key to encrypt the message. Only YG, with the corresponding private key, can decrypt the message.

4.2.2 Case 2

Advertisement

5. Cryptographic algorithm to prevent reverse engineering for Java source file

5.1 Original code

This section discusses the method of implementing the cryptographic algorithm to prevent reverse engineering of Java applications. The algorithm shall be deployed in the source file of the Java application. In this section, the first discussion is a presentation of implementing the cryptographic algorithm, and the second discussion is a presentation of methodology testing of the algorithm’s effectiveness in stopping reverse engineering.

5.1.1 Implementing cryptographic algorithm

To prevent reverse engineering, usually, protection is applied to the class file while the source file is left without protection. In this chapter, the protection will be in the source file. The cryptographic algorithms that will be applied for the protection are AES and Cipher. The following steps are to discuss the flow of protecting the code.

Generate the AES secret key. It is optional to create it mathematically or using KeyGenerator; for the purpose of this research, it will be created mathematically to ensure more security.

Apply the Cipher algorithm. To apply the Cipher algorithm for encryption, Java Cryptography Architecture (JCA) and Java Cryptography Extension (JCE) libraries. These libraries provide very important information to escalate the security of Java applications.

Create SecretKey as an object; the secretkey class presents a secretkey for an encryption algorithm.

Initialize the cipher object; the cipher class will be used for encryption and decryption.

After applying the cipher and secretkey for the encryption, perform encryption operation, after initializing the cipher object and the secretkey.

The cipher and the Java Cryptography Architecture will absorb the code in the source file to be encrypted, then while compiling the source to create the binary file, an extra layer of encryption is created, which will add more security to the application. In the case of decryption, the code will be transformed to different language that is not readable by human. However, the application is running perfectly and providing the required output.

5.1.2 Testing methodology

In this section, empirical evaluation consists of an experiment. The measurements of the experiment are the ability to execute the code to provide the same output as the original code and the ability to read variables, classes, and logic flow of the code. The environment used to conduct the experiment is NetBeans. The attributes of the experiment are lines of code (LOC) before and after reversing, the number of libraries created after reversing and comparing against the original code, the number of discovered methods, and the comparison against the original code.

The tools used for the reversing against the cryptographic algorithm are JD and CAVAJ reversing tools to determine the ability of the cryptographic to protect the source file from reversing. Figure 2 illustrates the structure of the experiment.

Figure 2.

Experiment design.

To start the process of the experiment, the original code of Java must be provided, and the output of the running program must be able to be compared after applying the cryptography algorithm. The following steps present the process of deploying the algorithm to the original code.

  1. Step 1: Get the Java original code in the source file. The following code is Java source file.

    The above code is to get input from the user and provide feedback based on the input required. The reason for using a communicative program is to ensure that after applying the algorithm, the program still has the ability to perform and provide proper and understandable communication to the user and to make sure that the algorithm did not change or harm the structure of the original code. Figure 3 illustrates the output of the original code. Figure 4 illustrates the location of the file created after running the application.

    Based on the above running code and the output, this will be the benchmark to be used for experimenting on the code after deploying the algorithm to make sure that the program is sufficient and usable and provide proper output that is understandable by the user.

  2. Step 2: Deploying cryptographic algorithms to protect source code. Figure 4 illustrates the class file of cryptographic algorithm.

    Based on the above code, Table 2 presents the description of each element.

    After deploying the cryptographic algorithm into the code, the source code has been compiled to create the binary file. With the extra security layer that has been added to the class file after compiling, the code form in the class file has changed and become more encrypted, unlike the usual code. Figure 5 illustrates the byte code presentation after applying the cryptographic algorithm.

  3. Step 3: Execute and evaluate the cryptographic algorithm within the provided codebase to generate a safeguarded source file. Figure 6 depicts the successful execution of the code for text file generation. The encrypted code is showcased in Figure 6 after the application of the cryptography algorithm.

    The source file has been compiled successfully and was written in the file. While reversing and revealing the source file, the original code has changed to a different one that is not readable by human; however, the application is running and providing sufficient output as required by the user; the source file is presented in Figure 7.

  4. Step 4: Two reversing tools have been used for the experiment to test the effectiveness and efficiency of the proposed algorithm. The purpose of using JD and CAVAJ is to test with each tool the ability to reveal and read the encrypted code, test if the decrypted code is running, and provide an output that is the same as the original and encrypted code. The first tool used was CAVAJ. This tool generated an error notification as it was not able to read the encrypted class file, as presented in Figure 8.

Figure 3.

Output of original code.

Figure 4.

Original file location.

ElementDescription
CipherThis object is initialized with AES, ECB, PKCS5Padding transformation. AES is used for encryption and decryption as well. This method accepts the source code and encryption key as an argument and then encrypts the source code bytes encoded in Base64.
From this object will be calling ‘init’ method associated with ‘Cupher.ENCRYPT_MODE’, the ‘SecretKeySpec’, and the plaintext bytes to be encrypted.
SecretkeyspecThis object is created to present the secret key used for the encryption and decryption process. The secret key is specified as byte array with AES algorithm.
doFinalThis method will be called on the ‘Cipher’ to perform the encryption. The plaintext bytes are passed as an argument to this method. The encrypted bytes are then returned as the results of the encryption operation.
saveEncryptedCodeToFileThis method is used to save the encrypted code to a file. It takes the encrypted code that is first decoded from Base64 to a byte array. Then, the byte array is written to the specified file path using the ‘File.write’.
File.writeThis method is meant to receive and save the byte array generated from the decoded code.

Table 2.

Encryption code description.

Figure 5.

Class file of cryptographic algorithm

Figure 6.

Successfully created text file.

Figure 7.

Code after running the cryptography algorithm.

Figure 8.

Reversing encrypted source file with CAVAJ.

The encrypted code was tested to generate output similar to the output generated from the original code; after testing, it was obvious the algorithm did not harm the code and kept it protected and provided the same output as the original code with the same amount of the time as the original code. Figure 9 illustrates the output of the encrypted code.

Figure 9.

Running source file after encryption.

Based on the testing with CAVAJ, the results were successful; the algorithm was able to defend and hide the codes from the reversing tool, the JD reversing tool was used to conduct the same test against the encrypted code, the class file was added to the environment of JD to determine the ability to reveal the code the result of the test is illustrated in Figure 10.

Figure 10.

Reversing encrypted source file with JD.

Advertisement

6. Discussion and findings

Based on the experiment, the effectiveness of employing a cipher cryptographic algorithm to secure Java source files was evaluated. The experiment involved utilizing the CAVAJ and JD decompilers to ascertain whether encrypted code could be deciphered, thereby compromising its security.

The results of the experiment indicate that the encrypted code generated through the cipher cryptographic algorithm remained impervious to decryption attempts by the decomplication tools. Despite using these tools to inspect the encrypted code, no readable output was obtained; instead, error messages were encountered, signifying the robustness of the encryption. This outcome underscores the efficacy of utilizing cipher cryptographic algorithms to safeguard Java source files from unauthorized access and reverse engineering.

Furthermore, the functionality of the encrypted code was assessed to ensure that its execution remained intact post-encryption. The experiment confirmed that the encrypted code was executed with the same level of functionality as the original unencrypted code, thereby validating the suitability of the chosen cryptographic approach for preserving both security and functionality. Table 3 presents the numerical findings of the experiment comparing encrypted and original code.

CAJAV reversing tool
Original codeReverse encrypted code
LOC422478
Number of libraries146
Number of methods53
CAJAV reversing tool
LOC422148
Number of libraries144
Number of methods53

Table 3.

Similarity calculation before and after reversing.

These findings have significant implications for software developers and organizations seeking to enhance the security of their Java applications. By integrating cipher cryptographic algorithms into their development processes, developers can mitigate the risk of intellectual property theft and unauthorized access to sensitive code. Additionally, the ability of encrypted code to maintain its functionality ensures that security measures do not compromise the performance or usability of the software. The ability of the reversing tool to read the encrypted code is presented in Table 4.

Reversing toolCAJAVJAD
Parameters
NoYesNoYes
Output correctness
Syntax
Reversed code error
Flow
Identifiers
Methods and classes
Decrypt string test

Table 4.

Reversing tools correctness tests.

The experiment demonstrates the effectiveness of employing cipher cryptographic algorithms as a viable strategy for securing Java source files. Moving forward, further research could explore the performance of different cryptographic algorithms and their impact on both security and code execution to provide comprehensive insights for software developers and security practitioners.

Advertisement

7. Conclusion

The Cryptographic Algorithm to Prevent Reverse Engineering for Java Source Files has shown promising results in protecting sensitive code from unauthorized access. Through the conducted experiment, it was observed that the proposed cryptography technique successfully encrypted the Java source file, thereby mitigating the risk of reverse engineering. The need to protect Java source files arises from the desire to safeguard intellectual property, proprietary algorithms, and confidential information embedded within the code. Reverse engineering poses a significant threat as it allows unauthorized individuals to analyze, modify, or replicate the source code, potentially compromising its integrity, security, and commercial value.

By employing cryptographic algorithms, the code can be transformed into an encrypted format that is computationally infeasible to decipher without the corresponding decryption key. While the experiment demonstrated the efficacy of the employed cryptography algorithm, it is important to acknowledge that encryption alone may not provide absolute protection. Additional security measures, such as access controls, secure development practices, and code obfuscation, should be considered in conjunction with encryption to create a more robust defense against reverse engineering. Furthermore, the proposed cryptography algorithm can be enhanced in the future by incorporating advanced encryption techniques, employing stronger key management practices, and adapting to emerging cryptographic standards.

Ongoing research and development in the field of cryptography can help address potential vulnerabilities, improve encryption algorithms, and enhance the overall security of Java source files. In summary, the Cryptographic Algorithm to Prevent Reverse Engineering demonstrates a promising approach to protect Java source files. By combining encryption with other security measures, developers can enhance the security posture of their code and mitigate the risk of unauthorized access and reverse engineering. Continued advancements in cryptography will contribute to the evolution of stronger and more effective protection mechanisms for Java source files and other valuable intellectual property.

Advertisement

8. Future work

Based on the positive outcomes of the cryptography algorithm proposed, there is an opportunity to develop a hybrid encryption approach to secure both the source code and class files. The algorithm has the potential to be further improved and transformed into a tool that allows developers to selectively encrypt specific sections of the code within designated methods, thereby augmenting the overall protection. Cipher algorithms can be enhanced further to explore and implement more advanced cryptographic algorithms to further enhance the security of Java source files. Evaluate the performance and effectiveness of algorithms such as AES, RSA, or others in the context of Java source file protection. Furthermore, to optimize the performance of the cryptographic algorithm to minimize its impact on the overall system performance. Consider techniques such as parallel processing, algorithmic improvements, or hardware acceleration to achieve efficient encryption and decryption.

References

  1. 1. Luoma-aho M. Java Script Web Cryptography API. Metropolia; 2015
  2. 2. Kessler GC. Introduction on to cryptography Webinar InformaBon. 2012 [Online]. Available from: https://commons.erau.edu/db-security-studiespartofthecommunicationtechnologyandnewmediacommons%0Ascholarly
  3. 3. Al-Hakimi A, Md Sultan AB. Hybrid obfuscation of encryption. Coding Theory Essentials [Working Title]. IntechOpen; 2023. DOI: 10.5772/intechopen.109662
  4. 4. Al-Sanjary OI, Ibrahim OA, Sathasivem K. A new approach to optimum steganographic algorithm for secure image. In: 2020 IEEE Int. Conf. Autom. Control Intell. Syst. I2CACIS 2020 – Proc. IEEEExplore; 2020. pp. 97-102. DOI: 10.1109/I2CACIS49202.2020.9140186
  5. 5. Prema G, Natarajan S. Steganography using genetic algorithm along with visual cryptography for wireless network application. In: 2013 Int. Conf. Inf. Commun. Embed. Syst. ICICES. IEEEExplore; 2013. pp. 727-730. DOI: 10.1109/ICICES.2013.6508373
  6. 6. Rao TVN. Application of elliptical curve cryptography in empowering cloud data security. International Journal of Recent and Innovation Trends in Computer Communication. 2017;5(August):117-121. [Online]. Available from: http://www.ijritcc.org
  7. 7. Bulat R, Ogiela MR. Personalized cryptography algorithms – A comparison between classic and cognitive methods. In: Proc. – 52nd Annu. IEEE/IFIP Int. Conf. Dependable Syst. Networks - Suppl. Vol. DSN-S 2022. IEEEExplore; 2022. pp. 43-44. DOI: 10.1109/DSN-S54099.2022.00026
  8. 8. Sravya G, Kumar MOVP, Sudarsana Reddy Y, Jamal K, Mannem K. The ideal block ciphers-correlation of AES and PRESENT in cryptography. In: Proc. 3rd Int. Conf. Intell. Sustain. Syst. ICISS 2020. IEEEExplore; 2020. pp. 1107-1113. DOI: 10.1109/ICISS49785.2020.9315883
  9. 9. Matching T, Test R. Cryptography. TEST. 2001;1937(1992):162-173
  10. 10. Jorstad N, Landgrave T. Cryptographic algorithm metrics. 20th National Information Systems Security. Institute for Defense Analyses Science and Technology Division; 1997. [Online]. Available from: http://csrc.nist.gov/nissc/1997/proceedings/128.pdf
  11. 11. Kubba ZMJ, Hoomod HK. A hybrid modified lightweight algorithm combined of two cryptography algorithms PRESENT and Salsa20 using chaotic system. In: 1st Int. Sci. Conf. Comput. Appl. Sci. CAS 2019. 2019. pp. 199-203. DOI: 10.1109/CAS47993.2019.9075488
  12. 12. Gowda SN. Innovative enhancement of the Caesar cipher algorithm for cryptography. In: Proc. – 2016 Int. Conf. Adv. Comput. Commun. Autom. (Fall), ICACCA 2016. 2016. pp. 1-4. DOI: 10.1109/ICACCAF.2016.7749010
  13. 13. Hunacek M. Cryptography: An introduction. In: Introductin to Number Theory. 2023. pp. 55-63. DOI: 10.1201/9781003318712-4
  14. 14. Patnaik LR. Cryptography and network for Bachelor of Technology Computer Science and Engineering. Veer Surendra Sai University of Technology; 2011. pp. 273-303
  15. 15. Gupta A, Walia NK. Cryptography algorithms: A review. International Journal of Engineering and Developmental Research. 2014;2(2):1667-1672. [Online]. Available from: http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=FEF3E8340DC536679E3C83BF43F1616C?doi=10.1.1.674.7141&rep=rep1&type=pdf
  16. 16. Sagar V, Kumar K. A symmetric key cryptography using genetic algorithm and error back propagation neural network. In: 2015 2nd International Conference on Computing for Sustainable Global Development (INDIACom), New Delhi, India. IEEEExplore; 2015. pp. 1386-1391
  17. 17. Triandi B, Ekadiansyah E, Puspasari R, Iwan LT, Rahmad F. Improve security algorithm cryptography Vigenere Cipher using chaos functions. In: 2018 6th Int. Conf. Cyber IT Serv. Manag. CITSM 2018, no. Citsm. 2019. pp. 1-5. DOI: 10.1109/CITSM.2018.8674376
  18. 18. Ogiela L, Ogiela MR, Ogiela U. Cognitive information systems in secure information management and personalized cryptography. In: 2014 Joint 7th International Conference on Soft Computing and Intelligent Systems (SCIS) and 15th International Symposium on Advanced Intelligent Systems (ISIS), Kitakyushu, Japan. IEEEExplore; 2014. pp. 1152-1157. DOI: 10.1109/SCIS-ISIS.2014.7044798
  19. 19. Submitted to Cs530: Advanced Algorithm Design and Analysis. 2015
  20. 20. Suzaki T, Minematsu K, Morioka S, Kobayashi E. TWINE: A lightweight, versatile block cipher. In: ECRYPT Workshop on Lightweight Cryptography. nec.com; 2011
  21. 21. Das SB, Mishra SK, Sahu AK. Cryptography algorithm. In: A New Modif. Version Stand. RSA Cryptogr. Algorithm. Vol. 767. 2020. pp. 281-287
  22. 22. Rahmani MKI. Cryptographic algorithms and protocols. In: A Step Towar. Soc. 5.0 Res. Innov. Dev. Cloud-Based Comput. Technol., 2021. 2021. pp. 11-20. DOI: 10.1201/9781003138037-2
  23. 23. Rachmawati D, Budiman MA, Wardhono MI. Hybrid cryptosystem for image security by using Hill Cipher 4x4 and ElGamal Elliptic curve algorithm. In: 2018 IEEE Int. Conf. Commun. Networks Satell. Comnetsat 2018 – Proc. 2018. pp. 49-54. DOI: 10.1109/COMNETSAT.2018.8684121
  24. 24. Jangid RK, Mohmmad N, Didel A, Taterh S. Hybrid approach of image encryption using DNA cryptography and TF Hill Cipher Algorithm. In: Int. Conf. Commun. Signal Process. ICCSP 2014 – Proc. 2014. pp. 934-938. DOI: 10.1109/ICCSP.2014.6949981
  25. 25. Semwal P, Sharma MK. Comparative study of different cryptographic algorithms for data security in cloud computing. In: Proc. – 2017 3rd Int. Conf. Adv. Comput. Commun. Autom. (Fall), ICACCA 2017. IEEEExplore; 2018. pp. 1-7. DOI: 10.1109/ICACCAF.2017.8344738

Written By

Asma’a Al-Hakimi, Muhammad Ibrahim Ravi Bin Gobi and Misbah ul Iman

Reviewed: 22 February 2024 Published: 19 June 2024