Wednesday 6 December 2023

Cryptography API

Java offers a comprehensive set of cryptographic functionalities through its `java.security` package. This package provides various classes and interfaces for encryption, decryption, key generation, digital signatures, and more.

Here are some key classes and concepts within Java's Cryptography API:

1. **Message Digests (Hashing):** Classes like `MessageDigest` help generate hash values for data using algorithms like MD5, SHA-1, SHA-256, etc.

2. **Encryption/Decryption:** The `Cipher` class allows encryption and decryption using various algorithms like AES, DES, RSA, etc.

3. **Key Management:** Java provides classes such as `KeyGenerator` for generating symmetric keys, `KeyPairGenerator` for key pairs (for asymmetric encryption), and `KeyStore` for managing keys and certificates.

4. **Digital Signatures:** The `Signature` class helps create and verify digital signatures.

Here's a simple example demonstrating encryption and decryption using Java's Cryptography API:

```java
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.security.Key;

public class CryptoExample {
    public static void main(String[] args) throws Exception {
        String originalMessage = "Hello, this is a secret message!";
        
        // Generate a secret key
        KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
        keyGenerator.init(128); // Key size
        SecretKey secretKey = keyGenerator.generateKey();

        // Encryption
        Cipher cipher = Cipher.getInstance("AES");
        cipher.init(Cipher.ENCRYPT_MODE, secretKey);
        byte[] encryptedMessage = cipher.doFinal(originalMessage.getBytes());

        // Decryption
        cipher.init(Cipher.DECRYPT_MODE, secretKey);
        byte[] decryptedMessage = cipher.doFinal(encryptedMessage);

        System.out.println("Original: " + originalMessage);
        System.out.println("Encrypted: " + new String(encryptedMessage));
        System.out.println("Decrypted: " + new String(decryptedMessage));
    }
}
```

Remember, cryptography can be complex and sensitive; always handle keys and sensitive data carefully. Java's Cryptography API offers robust tools, but it's crucial to use them correctly and securely, following best practices to protect sensitive information.

Tuesday 10 October 2023

String in Java

 In Java, a `String` is an object that represents a sequence of characters. It belongs to the `java.lang` package, and it's widely used for handling textual data. Here are some essential methods associated with the `String` class:


1. **Creating Strings:**

   - `String myString = "Hello, World!";` - Creates a string literal.

   - `String anotherString = new String("Java");` - Creates a string using the `new` keyword.


2. **Length:**

   - `int length = myString.length();` - Returns the length of the string.


3. **Concatenation:**

   - `String combined = myString + " " + anotherString;` - Concatenates strings.


4. **Substring:**

   - `String sub = myString.substring(7);` - Extracts a substring from the original string.


5. **Concatenation with Other Data Types:**

   - `int number = 42;`

   - `String result = "The answer is " + number;` - You can concatenate strings with other data types.


6. **Comparison:**

   - `boolean isEqual = myString.equals(anotherString);` - Compares two strings for equality.

   - `int compareResult = myString.compareTo(anotherString);` - Compares two strings lexicographically.


7. **Searching:**

   - `int index = myString.indexOf("World");` - Finds the index of a substring.


8. **Conversion:**

   - `int num = Integer.parseInt("123");` - Converts a string to an integer.


9. **Modification:**

   - `String upperCase = myString.toUpperCase();` - Converts the string to uppercase.


10. **Trimming:**

    - `String trimmed = myString.trim();` - Removes leading and trailing whitespaces.


These are just a few examples, and there are many more methods available in the `String` class for various operations. Strings in Java are immutable, meaning once a string is created, it cannot be changed. If you perform operations that seem to modify a string, they actually create a new string.

Monday 22 May 2023

Email Validation in JTextField

I can provide you with an example code snippet in Java for email validation using a `JTextField`. Here's an example:


import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.util.regex.*;


public class EmailValidationExample {

    private JFrame frame;

    private JTextField emailTextField;

    private JButton validateButton;


    public EmailValidationExample() {

        frame = new JFrame("Email Validation");

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        

        emailTextField = new JTextField(20);

        validateButton = new JButton("Validate");

        validateButton.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                String email = emailTextField.getText();

                boolean isValid = validateEmail(email);

                if (isValid) {

                    JOptionPane.showMessageDialog(frame, "Email is valid!");

                } else {

                    JOptionPane.showMessageDialog(frame, "Invalid email!", "Error", JOptionPane.ERROR_MESSAGE);

                }

            }

        });


        JPanel panel = new JPanel();

        panel.add(emailTextField);

        panel.add(validateButton);


        frame.getContentPane().add(panel);

        frame.pack();

        frame.setVisible(true);

    }


    private boolean validateEmail(String email) {

        String regex = "^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$";

        Pattern pattern = Pattern.compile(regex);

        Matcher matcher = pattern.matcher(email);

        return matcher.matches();

    }


    public static void main(String[] args) {

        SwingUtilities.invokeLater(new Runnable() {

            public void run() {

                new EmailValidationExample();

            }

        });

    }

}



In this example, we create a simple Swing GUI with a `JTextField` for entering the email and a `JButton` to validate it. When the "Validate" button is clicked, the email entered in the text field is passed to the `validateEmail` method.


The `validateEmail` method uses a regular expression pattern to check if the email is valid. The regular expression pattern `^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$` ensures that the email follows a specific format.


If the email is valid, a message dialog is displayed with the message "Email is valid!". Otherwise, an error message dialog is displayed with the message "Invalid email!".


You can run this code to see the email validation in action.

Wednesday 3 May 2023

Event in C#

 In C#, event handling is the process of responding to an occurrence of a particular event. Events can be raised by user actions, such as clicking a button or pressing a key, or they can be raised by the system or other components of an application.

Here are the steps involved in handling events in C#:

  1. Define the delegate: A delegate is a type that represents a method that can be called when an event occurs. In C#, delegates are used to define event handlers. You can define your own delegate or use one of the pre-defined delegates provided by the .NET framework.

  2. Define the event: An event is a mechanism for raising a notification that something has happened. In C#, you can define your own events by creating an instance of the delegate that will handle the event.

  3. Subscribe to the event: To handle an event, you must subscribe to it. This is done by creating an instance of the delegate that will handle the event, and then adding this instance to the event's invocation list.

  4. Define the event handler method: The event handler method is the method that will be called when the event is raised. It should have the same signature as the delegate that was defined for the event.

  5. Raise the event: To raise an event, you simply invoke the delegate that represents the event. This will cause all the methods in the event's invocation list to be called.

Here's an example of event handling in C#:

csharp
// Define the delegate public delegate void EventHandler(object sender, EventArgs e); // Define the event public event EventHandler MyEvent; // Subscribe to the event MyEvent += new EventHandler(MyEventHandler); // Define the event handler method private void MyEventHandler(object sender, EventArgs e) { // Handle the event here } // Raise the event MyEvent?.Invoke(this, EventArgs.Empty);

In this example, we first define the delegate that will handle the event. We then define the event itself by creating an instance of the delegate. We subscribe to the event by adding an instance of the event handler method to the event's invocation list. Finally, we raise the event by invoking the delegate that represents it

Tuesday 25 April 2023

Basic Addition Program in Java AWT

import java.awt.*;
import java.awt.event.*;
 
//Basic Addition Program in Java AWT
class MyApp extends Frame implements ActionListener {
 
	Label l1, l2, l3;
	TextField txt1;
	TextField txt2;
	Button b;
 
	public MyApp() {
		super("Tutor Joes");
		setSize(1000, 600);// w,h
		setLayout(null);
		setVisible(true);
 
		l1 = new Label("Enter The Value 1 : ");
		l1.setBounds(10, 50, 100, 30);
 
		txt1 = new TextField();
		txt1.setBounds(150, 50, 250, 30);
 
		l2 = new Label("Enter The Value 2 : ");
		l2.setBounds(10, 100, 100, 30);
 
		txt2 = new TextField();
		txt2.setBounds(150, 100, 250, 30);
 
		b = new Button("Click Me");
		b.setBounds(150, 150, 100, 30);
		b.addActionListener(this);
 
		l3 = new Label("--");
		l3.setBounds(10, 200, 300, 30);
 
		add(l1);
		add(txt1);
		add(l2);
		add(txt2);
		add(b);
		add(l3);
 
		// Close Button Code
		this.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent we) {
				System.exit(0);
			}
		});
	}
 
	@Override
	public void actionPerformed(ActionEvent e) {
		String s1 = txt1.getText();
		String s2 = txt2.getText();
		if(s1.isEmpty() || s2.isEmpty()) {
       	 l3.setText("Please Enter The data");    
       }else {
	        int a = Integer.parseInt(s1);    
	        int b = Integer.parseInt(s2);    
	        int c = a+b;
	        String result = String.valueOf(c);    
	        l3.setText("Total :"+result);    
	        }
 
	}
 
}
 
public class app {
	public static void main(String[] args) {
		MyApp frm = new MyApp();
	}
 
}

Tuesday 7 March 2023

Introduction to This Blog

Java  programming is one of the most popular programming languages in the world. It is an object-oriented programming language that is widely used for developing web applications, mobile applications, and desktop applications. Java was first introduced in 1995 by Sun Microsystems and has since become one of the most widely used programming languages in the world.

As an assistant professor in Vivek College Bijnor, I have had the opportunity to teach Java programming to students from various backgrounds.

I would like to extend a special thank you to the Management of Vivek College for supporting me in writing this blog. Their support has been invaluable, and I am grateful for the opportunity to share my knowledge and experiences with a wider audience.

In this blog, I will discuss some of the basics of Java programming that are important for beginners to understand.

  1. Variables and Data Types
    Variables are used to store values in Java programming. A variable is a memory location that holds a value. In Java, there are different types of data that can be stored in variables. Some of the data types include int, double, float, char, boolean, and string.

  2. Operators
    Operators are used in Java programming to perform various operations such as arithmetic, logical, and relational operations. Some of the commonly used operators in Java programming include +, -, *, /, %, &&, ||, ==, !=, <, >, <=, and >=.

  3. Control Statements
    Control statements are used in Java programming to control the flow of execution of the program. Some of the commonly used control statements in Java programming include if-else, switch, while, do-while, and for loops.

  4. Classes and Objects
    Java is an object-oriented programming language, which means that it uses classes and objects to model real-world objects. A class is a blueprint for creating objects, while an object is an instance of a class. In Java programming, classes are used to define the properties and methods of objects.

  5. Inheritance
    Inheritance is a feature of object-oriented programming that allows one class to inherit properties and methods from another class. In Java programming, inheritance is used to create a new class that is a modified version of an existing class.

  6. Interfaces
    Interfaces are used in Java programming to define a set of methods that a class must implement. An interface is similar to a class, but it only defines the methods that a class must implement, without providing any implementation for the methods.

  7. Exceptions
    Exceptions are used in Java programming to handle runtime errors. An exception is an event that occurs during the execution of a program that disrupts the normal flow of the program. In Java programming, exceptions are handled using try-catch blocks.

In conclusion, Java programming is a powerful and widely used programming language. As an assistant professor in Vivek College Bijnor, I have had the opportunity to teach Java programming to students from various backgrounds. In this blog, I have discussed some of the basics of Java programming that are important for beginners to understand. By mastering these concepts, students can go on to develop complex and powerful applications using Java programming.

Thanks & Regards:
Mohit Kumar Tyagi
Assistant Professor & Software Developer( BCA Dept.)

More About Inner Class in Java

Here's some additional information about inner classes in Java:

  1. Access modifiers: Inner classes can have the same access modifiers as any other member of the enclosing class. For example, you can make an inner class private, protected, or public.

  2. Inheritance: Inner classes can extend a class or implement an interface, just like any other class.

  3. Anonymous inner classes: As mentioned earlier, anonymous inner classes are typically used for creating a single object of an interface or an abstract class. Here's an example:

csharp
interface Greeting { public void greet(); } public class OuterClass { public void sayHello() { Greeting greeting = new Greeting() { public void greet() { System.out.println("Hello!"); } }; greeting.greet(); } }

In this example, an anonymous inner class is used to implement the Greeting interface. An object of this class is then assigned to the greeting variable and used to call the greet() method.

  1. Inner classes and static members: A non-static inner class can access both static and non-static members of the enclosing class. However, a static inner class can only access static members of the enclosing class.

  2. Local inner classes and closures: Local inner classes are often used for implementing closures in Java. A closure is a function that remembers the values of all the variables that were in scope when the function was created. Here's an example:

csharp
public class OuterClass { public void createClosure() { int x = 10; class LocalInnerClass { public void printX() { System.out.println(x); } } LocalInnerClass closure = new LocalInnerClass(); closure.printX(); // prints 10 } }

In this example, a local inner class is used to create a closure that remembers the value of the x variable. The printX() method can access the x variable even though it is defined outside of the class.


  1. . Here's an example:
kotlin
public class OuterClass<T> { private T value; public class InnerClass<S> { private S data; public InnerClass(S data) { this.data = data; } public T getValue() { return value; } public S getData() { return data; } } public void setValue(T value) { this.value = value; } }

In this example, both OuterClass and InnerClass are generic classes. InnerClass has its own type parameter S, in addition to the type parameter T of the enclosing class.

  1. Anonymous inner classes and lambdas: In Java 8 and later versions, anonymous inner classes can be replaced with lambda expressions. Here's an example:
csharp
interface Greeting { public void greet(); } public class OuterClass { public void sayHello() { Greeting greeting = () -> System.out.println("Hello!"); greeting.greet(); } }

In this example, the anonymous inner class that implements the Greeting interface is replaced with a lambda expression.

  1. Shadowing: If an inner class defines a member with the same name as a member of the enclosing class, the inner class member shadows the enclosing class member. Here's an example:
csharp
public class OuterClass { private int x = 10; public class InnerClass { private int x = 20; public void printX() { System.out.println(x); // prints 20 System.out.println(OuterClass.this.x); // prints 10 } } }

In this example, the InnerClass defines a member variable x that shadows the x variable of the enclosing class. To access the x variable of the enclosing class, you can use the syntax OuterClass.this.x.

Cryptography API

Java offers a comprehensive set of cryptographic functionalities through its `java.security` package. This package provides various classes ...