|
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.
Cryptography
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.
Freelance
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.
Prospects
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 ???
Programming
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.
Example
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)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Maincontext = getApplicationContext(); //To work with context
TextView originalTextView = (TextView) findViewById(R.id.TXTV);
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 RSACode.java class
TextView encodedTextView = (TextView)findViewById(R.id.textViewEncoded);
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("key.pub",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("key.pub", 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 RSACode.java
// 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.java
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(R.id.textViewDecoded);
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
Freelance
Obfuscation of an encryption key or data is a very interesting topic for creative programmers. And here non-standard custom solutions are especially useful.
Android Developer
I develop JAVA modules, classes, libraries in Android STUDIO to add new functionality to applications or increase competitiveness. Or complete ready-made applications: Photo Web Cam - photo recorder with FTP client, AudioREG - audio recorder with FTP client, Big Int PRNG - pseudo-random number generator 1024 bit dimension, Big Prime INT NUMBERS - for selecting special pairs of prime numbers of large dimension
Big Prime NUMBER >>
Android Developer >>
Flashcards >>
Many of these applications or methods can be downloaded as Open Source codes and freely used in your projects. From time to time I update projects and add new useful and interesting features. Whoever downloads and uses these ready-made projects first will get an advantage.
Android Developer >>
Android Java Projects >>
Java repositories >>
|
|