mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-12-19 07:00:35 +08:00
86 lines
2.4 KiB
Java
86 lines
2.4 KiB
Java
package com.thealgorithms.ciphers;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
|
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
class XORCipherTest {
|
|
|
|
@Test
|
|
void xorEncryptDecryptTest() {
|
|
String plaintext = "My t&xt th@t will be ençrypted...";
|
|
String key = "My ç&cret key!";
|
|
|
|
String cipherText = XORCipher.encrypt(plaintext, key);
|
|
String decryptedText = XORCipher.decrypt(cipherText, key);
|
|
|
|
assertEquals("My t&xt th@t will be ençrypted...", decryptedText);
|
|
}
|
|
|
|
@Test
|
|
void testEmptyPlaintext() {
|
|
String plaintext = "";
|
|
String key = "anykey";
|
|
|
|
String cipherText = XORCipher.encrypt(plaintext, key);
|
|
String decryptedText = XORCipher.decrypt(cipherText, key);
|
|
|
|
assertEquals("", cipherText);
|
|
assertEquals("", decryptedText);
|
|
}
|
|
|
|
@Test
|
|
void testEmptyKey() {
|
|
String plaintext = "Hello World!";
|
|
String key = "";
|
|
|
|
assertThrows(IllegalArgumentException.class, () -> XORCipher.encrypt(plaintext, key));
|
|
assertThrows(IllegalArgumentException.class, () -> XORCipher.decrypt(plaintext, key));
|
|
}
|
|
|
|
@Test
|
|
void testShortKey() {
|
|
String plaintext = "Short message";
|
|
String key = "k";
|
|
|
|
String cipherText = XORCipher.encrypt(plaintext, key);
|
|
String decryptedText = XORCipher.decrypt(cipherText, key);
|
|
|
|
assertEquals(plaintext, decryptedText);
|
|
}
|
|
|
|
@Test
|
|
void testNonASCIICharacters() {
|
|
String plaintext = "こんにちは世界"; // "Hello World" in Japanese (Konichiwa Sekai)
|
|
String key = "key";
|
|
|
|
String cipherText = XORCipher.encrypt(plaintext, key);
|
|
String decryptedText = XORCipher.decrypt(cipherText, key);
|
|
|
|
assertEquals(plaintext, decryptedText);
|
|
}
|
|
|
|
@Test
|
|
void testSameKeyAndPlaintext() {
|
|
String plaintext = "samekey";
|
|
String key = "samekey";
|
|
|
|
String cipherText = XORCipher.encrypt(plaintext, key);
|
|
String decryptedText = XORCipher.decrypt(cipherText, key);
|
|
|
|
assertEquals(plaintext, decryptedText);
|
|
}
|
|
|
|
@Test
|
|
void testLongPlaintextShortKey() {
|
|
String plaintext = "This is a long plaintext message.";
|
|
String key = "key";
|
|
|
|
String cipherText = XORCipher.encrypt(plaintext, key);
|
|
String decryptedText = XORCipher.decrypt(cipherText, key);
|
|
|
|
assertEquals(plaintext, decryptedText);
|
|
}
|
|
}
|