Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import javax.crypto.Cipher;
- import javax.crypto.SecretKey;
- import javax.crypto.SecretKeyFactory;
- import javax.crypto.spec.IvParameterSpec;
- import javax.crypto.spec.PBEKeySpec;
- import javax.crypto.spec.SecretKeySpec;
- import java.security.SecureRandom;
- import java.util.Base64;
- public class CryptoAES {
- public static SecretKey generateKey(String password, byte[] salt) throws Exception {
- SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
- PBEKeySpec spec = new PBEKeySpec(password.toCharArray(), salt, 65536, 256);
- SecretKey tmp = factory.generateSecret(spec);
- return new SecretKeySpec(tmp.getEncoded(), "AES");
- }
- public static String encrypt(String plaintext, SecretKey key, IvParameterSpec iv) throws Exception {
- Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
- cipher.init(Cipher.ENCRYPT_MODE, key, iv);
- byte[] encrypted = cipher.doFinal(plaintext.getBytes());
- return Base64.getEncoder().encodeToString(encrypted);
- }
- public static String decrypt(String ciphertext, SecretKey key, IvParameterSpec iv) throws Exception {
- Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
- cipher.init(Cipher.DECRYPT_MODE, key, iv);
- byte[] decrypted = cipher.doFinal(Base64.getDecoder().decode(ciphertext));
- return new String(decrypted);
- }
- public static void main(String[] args) {
- try {
- String password = "securepassword123";
- byte[] salt = new byte[16];
- SecureRandom random = new SecureRandom();
- random.nextBytes(salt);
- System.out.println("Salt (трябва да се сподели): " + Base64.getEncoder().encodeToString(salt));
- byte[] ivBytes = new byte[16];
- random.nextBytes(ivBytes);
- IvParameterSpec iv = new IvParameterSpec(ivBytes);
- System.out.println("IV (трябва да се изпрати с криптираното съобщение): " + Base64.getEncoder().encodeToString(ivBytes));
- SecretKey senderKey = generateKey(password, salt);
- String message = "Това е тайно съобщение!";
- String encryptedMessage = encrypt(message, senderKey, iv);
- System.out.println("Криптирано съобщение: " + encryptedMessage);
- SecretKey receiverKey = generateKey(password, salt);
- String decryptedMessage = decrypt(encryptedMessage, receiverKey, iv);
- System.out.println("Декриптирано съобщение: " + decryptedMessage);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
Add Comment
Please, Sign In to add comment