Android Studio Freelance
Full project source codes, information security, cryptography, freelance, consulting

Open Source Code

GNU GPL >>>>    Java Projects >>>>    Admin Guide >>>>
   Java Code Freelance
   Data encryption is not very common in custom commercial applications. Delivery services, small service companies, creative teams and many others do not protect the data of their commercial activities in any way. A small amount of information, saving on software, never had server crashes, etc.
   Nevertheless, information is becoming more and more expensive and interesting, and it is impossible to save on its protection. Loss of information can lead to legal claims.
   In this case, even if the company uses software from well-known manufacturers, you can read in the news about the theft of millions of customer records.
   Software developers can add encryption functions to smartphone applications using protocols with asymmetric keys. This will make the data completely unbreakable, even if copied.
   And programmers know how to do it. But if you encrypt all customer data - last name, first name, address, phone number, age, purchase data, then either your database will work very slowly, or you will not be able to search for customer data according to the specified parameters.
   Of course, in the delivery service, the data must be encrypted immediately. As soon as the employee has entered information on the smartphone (address, phone, mail, card details) must be encrypted. And in such a vmde they are placed in a local database and sent to the company's server. And they must be stored on the server in encrypted form.
   The RSA encryption algorithm with a long key provides the highest level of protection. Almost military level protection. If desired, programmers can make it unbreakable at all.
   The problem with software created by large companies is that if a vulnerability is found in it, then the data of millions of users is at risk of loss. But developers of custom applications can add special program code "on top" of the standard software, which will be unknown to hackers. Not standard code, not typical.
   There are many competent programmers. But not everyone knows how to work with data encryption in android, how to store, convert and broadcast keys, how to make ciphertext inaccessible for decoding, how to protect corporate web server scripts from analysis, etc.
   A freelancer most often offers his services himself - on specialized online resources, through newspaper ads or using word of mouth, that is, personal connections. Freelancing is especially common in such areas of activity as journalism (and other forms of activity related to writing texts), law, computer programming, architecture, design in all its manifestations (advertising, web design, interior design, etc.), translation, photography and video filming, various kinds of expert and consulting activities, but freelancing is also very common in the construction industry. It is more profitable for contractors to hire workers for the season than to maintain a workforce.
   Programming for a company is an interesting opportunity to work for a programmer. But one of the areas of freelancing is consulting. Consulting with the provision of ready-made source codes for programs or modules or classes.
   Imagine the following process. You have made a decision to encrypt commercial information. Your Android programmer receives the full source code (Java Class) with comments and guidance. The programmer can analyze the whole code, every line before use. There can't be any threats.
   It can be an encryption module for an Android smartphone, for a web server, for a database, for a messenger, even for web pages.
   Data protection in this case is so good that in encrypted form they can be sent through instant messengers, cloud storage, torrents, file sharing services, web servers, e-mail, or sent as a QR-code.
   One person (for example, a director) or a group of specialists (each knows his part of the code for decoding) can have complete information for decryption. The encryption and decryption keys themselves are generated by standard certified Android crypto providers.
   Cryptography is not just evolving. It is intensively added to our lives. Not so long ago, all sites had the HTTP prefix. And now corporate sites have the HTTPS prefix and support RSA encryption.
   And this is just the beginning. If you store commercial or other sensitive information in a cloud service and use built-in encryption, then many outsiders can read your information and they can make decisions about this data without your participation.
   Android Project Freelance >>
   Web Server
   Your web server can be hacked. Because all web servers are typical software, in which errors can be repeated. Even if you rent a web server.
   Someone can access and copy your database. But it may be encrypted. Then it will become necessary to download PHP scripts and analyze their work in order to find the encryption keys. And here it may turn out that links in PHP scripts are seriously encrypted and it is extremely difficult to analyze their work.
   Isn't it easier to quit this occupation and look for another company where nothing is coded like that ???
   Adding procedures for working with data encryption to existing projects is not difficult. You can encrypt both text and binary data, such as photos. At the same time, encrypted data can be sent by mail, through a client-server connection, messengers.
   The programmer is provided with a set of classes for encrypting and decoding information and for working with keys. Full texts of classes with comments. You can evaluate the security of Java code yourself.
   Several mechanisms are provided for exchanging encryption keys with the server and other clients (smartphones). The keys for encrypting information in the RSA protocol are public (not secret). They can be published for everyone. The key for decoding information is private. There are proven technologies for its safe use. Your programmers will not know the real key. The decoding key must be known by a special manager of your company. For example, director.
   It is more correct if the key for decoding is divided into several parts (2-3) and one specialist knows only part of the key. Then, to enter it into a new connected device, they sequentially introduce elements known to them.
    public class MainActivity extends AppCompatActivity {
     // RSA and Write encoded text to file and Read from file oflameron.txt
     // rsaload.Load(FILENAME, str2)
     final static String LOG_TAG = "myLogs";
     public static String str=" "; //File contents oflameron.txt
     public static String str2=" "; //File contents oflameron.txt
     public static String str3=" "; //File contents key.txt - public key
     public static String str4=" "; //File contents pkey.txt - private key
     public static String FILENAME = "oflameron.txt";//File for writing encoded data
     public static String Content = "EditText Content";//String variable for text copy
     public static Key publicKey = null; //RSA
     public static Key privateKey = null; //RSA
     public static Key publicKey2 = null; //RSA
     public static Key privateKey2 = null; //RSA
     public static Key kpprivateKey = null; //RSA restored Private Key
     public static Key kppublicKey = null; //RSA restored Public Key
     public static byte[] privateKeyBytes = null; //RSA
     public static byte[] publicKeyBytes = null; //RSA
     public static byte[] encodedBytes = null; //RSA
     public static byte[] decodedBytes = null; //RSA
     // Original text (RSA)
     public static String testText = "Open Source Java Project Valery Shmelev OFLAMERON";
     public static Context Maincontext;
     @RequiresApi(api = Build.VERSION_CODES.R)
     protected void onCreate(Bundle savedInstanceState) {
     Maincontext = getApplicationContext(); //To work with context
     TextView originalTextView = (TextView) findViewById(;
     originalTextView.setText("[ORIGINAL]:\n" + testText + "\n");
     // ============================================================
     // Generate key pair for 1024-bit RSA encryption and decryption
     // ============================================================
     RSACode rsagente = new RSACode(); // Class instance RSACode
     Key[] KeyPMass = new Key[2]; //An array of two keys to return values from a method
     KeyPMass = rsagente.RSAKeyGen(); //GENERATE Key Pair
     publicKey = KeyPMass[0];
     privateKey = KeyPMass[1];
     // ============================================================
     // ============================================================
     // Encode the original text with RSA private key
     // ============================================================
     RSACode rsacde = new RSACode(); // Class instance RSACode
     encodedBytes = rsacde.RSATextEncode(publicKey, privateKey, testText); //Encode text via class
     TextView encodedTextView = (TextView)findViewById(;
     encodedTextView.setText("[ENCODED]:\n" + Base64.encodeToString(encodedBytes, Base64.DEFAULT) + "\n");
     // Coded Text -> str -> Save to file
     str = Base64.encodeToString(encodedBytes, Base64.DEFAULT); //Convert Byte Array to String
     rsacde.Save("oflameron.txt",str, Maincontext); //Write Coded Text to file oflameron.txt from str
     encodedBytes = null; // This line is optional. For debugging only
     // Load Coded Text from file -> str2
     RSALib rsalib = new RSALib(); // Class instance RSALib
     str2 = rsalib.Load(FILENAME, str2, Maincontext);
     encodedBytes = Base64.decode(str2, Base64.DEFAULT); //Convert String to Byte Array
     // The most important part of encryption/decoding is saving
     // and restoring the public and private keys. Otherwise, after
     // restarting the application, you will not be able to decrypt
     // the encoded text, because new keys will be generated.
     // Save Keys -> to file
     publicKeyBytes = publicKey.getEncoded();
     privateKeyBytes = privateKey.getEncoded();
     str = Base64.encodeToString(publicKeyBytes, Base64.DEFAULT); //Convert Byte Array (Public Key) to String
     rsalib.Save("",str, Maincontext); //Write Public Key to file key.txt from str
     str = Base64.encodeToString(privateKeyBytes, Base64.DEFAULT); //Convert Byte Array (Private Key) to String
     rsalib.Save("pkey.pri",str, Maincontext); //Write Private Key to file pkey.txt from str
     publicKey = null; // This line is optional. For debugging only
     privateKey = null; // This line is optional. For debugging only
     RSACode rsaload = new RSACode(); // Class instance RSACode
     str3 = rsaload.Load("", str3, Maincontext); //Here we read and decode Public Key (RSACode class)
     str4 = rsaload.Load("pkey.pri", str4, Maincontext); //Here we read and decode Private Key (RSACode class)
     // Referring to the special class
     // To restore saved keys from files
     RSACode rsacd = new RSACode(); // Class instance RSACode
     Key[] KeyMass = new Key[2]; //An array of two keys to return values from a method
     KeyMass = rsacd.RSAKeyReGenerate(str3, str4);
     publicKey = KeyMass[0];
     privateKey = KeyMass[1];
     // If you run the application, you will see that the original text is correctly decoded.
     // Those. we run the application and immediately encode the text and immediately decode it. Everything is working.
     // ============================================================
     // Decoding the ciphertext
     // ============================================================
     // Let's call a method from the class
     RSACode rsadecode = new RSACode(); // Class instance RSACode
     decodedBytes = rsadecode.RSATextDecode(KeyMass[0], KeyMass[1], encodedBytes); //Text decoding (publicKey = KeyMass[0], privateKey = KeyMass[1])
     TextView decodedTextView = (TextView)findViewById(;
     decodedTextView.setText("[DECODED]:\n" + new String(decodedBytes) + "\n"); //Show decoded text
     } //OnCreate
   This is an early version of Java code. Now it is easier to use. It is not difficult for a programmer of any level to work with such codes.
   This is the part of the code that the programmer will work with all the time. The other part of the code is a special class that describes methods that remain constant all the time. It is also available to you in open source.
   RSA and AES encryption >>
   Android Java and PHP RSA Encrypton and RSA Keys Obfuscation
   Obfuscation of an encryption key or data is a very interesting topic for creative programmers. And here non-standard custom solutions are especially useful.
   Java repositories >>



Android Java Open Source Projects. Java developer freelance. German Language C++ and Python Programmer
Android Open Source

eXTReMe Tracker