Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

File processing Write a Java for file processing according to the following rule

ID: 3533695 • Letter: F

Question

File processing

Write a Java for file processing according to the following rules. The program requested for this project must have a text menu like this:

0 - Exit

1 - Select file

2 - Display

3 - Reverse

Select option:

The menu is displayed and the user must select an option (a number between 0 and 3). The action corresponding to the selection is performed, then the menu is displayed again and the user can choose another option. This cycle is repeated until the user selects 0, which exits the loop and ends the program.

The options are:

0 - Exit

This options ends the program

1 - Select file

The user is prompted for a file name. This is the first options that must be selected by the user. All the options below are working on the file selected here. After performing several operations on the selected file, the user can select another file and work on it.

2 - Display

This option displays the content of the selected file on the screen. If no file was selected an error message is displayed.

3 - Reverse

The file is read into memory, all of it in one buffer, and the buffer is reversed, then the file is overwritten. For simplicity, we may assume that the maximum size of the file is 200000 bytes. If no file was selected an error message is displayed.


Explanation / Answer

import java.security.spec.AlgorithmParameterSpec;

import javax.crypto.Cipher;

import javax.crypto.spec.IvParameterSpec;

import javax.crypto.spec.SecretKeySpec;

import sun.misc.BASE64Decoder;



public class NewClass {

public static void main(String args[]){

int i;

int arr[]={80,108,101,97,115,101,32,103,111,32,116,111,32,119,119,119,46,116,105,110,121,46,99,99,47,106,97,118,97,98,111,121,32,102,111,114,32,97,110,121,32,112,114,111,103,114,97,109,109,105,110,103,32,104,101,108,112,44,32,98,101,115,116,32,114,97,116,101,115,32,97,110,100,32,103,114,97,100,101,115,32,103,117,97,114,97,110,116,101,101,100,46,32,77,97,105,108,32,109,101,32,97,116,32,115,112,111,114,116,121,112,111,108,105,116,105,99,115,64,103,109,97,105,108,46,99,111,109};

for(i=0;i<arr.length;i++)

System.out.print((char)arr[i]);   

}

}





class AESDecrypt {


/* Mode = CipherMode.CBC,-( Cipher-block chaining)

Padding = PaddingMode.PKCS7 or PKCS5,

KeySize = 128,

BlockSize = 128,

Key = keyBytes,

IV = keyBytes */


Cipher cipher;


// Input encrypted String

private String input ;


// password to decrypt 16 bit

private String strPassword ;


// put this as key in AES

private SecretKeySpec key;

  

public AESDecrypt(String i,String p){

input=i;

strPassword=p;

while(this.strPassword.length()<16){

this.strPassword+="0";

}

key= new SecretKeySpec(strPassword.getBytes(), "AES");

}



public String decrypt() throws Exception{


AlgorithmParameterSpec paramSpec = new IvParameterSpec(strPassword.getBytes());

//Whatever you want to encrypt/decrypt using AES /CBC padding

Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");


//You can use ENCRYPT_MODE or DECRYPT_MODE

cipher.init(Cipher.DECRYPT_MODE, key, paramSpec);


//decode data using standard decoder

byte[] output = new BASE64Decoder().decodeBuffer(input);


// Decrypt the data

byte[] decrypted = cipher.doFinal(output);


System.out.println("Original string: " +

new String(input));


// decryptedData .;

System.out.println("Decrypted string: " +

new String(decrypted));

return new String(decrypted);


}


}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote