From 2e4fed65177f73d47aad7f043cb25b98125c2e0c Mon Sep 17 00:00:00 2001 From: Dung Ta Van Date: Sat, 11 Nov 2023 13:49:42 +0700 Subject: [PATCH] add some test classes --- .../EzyAsyCryptEncryptDecryptTest.java | 27 +++++++++++++ .../security/EzyKeysGeneratorTest.java | 10 +++++ .../ModulusExponentToX509KeySpec.java | 38 +++++++++++++++++++ .../testing/security/PEMToPublicKey.java | 34 +++++++++++++++++ 4 files changed, 109 insertions(+) create mode 100644 ezyfox-security/src/test/java/com/tvd12/ezyfox/testing/security/EzyAsyCryptEncryptDecryptTest.java create mode 100644 ezyfox-security/src/test/java/com/tvd12/ezyfox/testing/security/ModulusExponentToX509KeySpec.java create mode 100644 ezyfox-security/src/test/java/com/tvd12/ezyfox/testing/security/PEMToPublicKey.java diff --git a/ezyfox-security/src/test/java/com/tvd12/ezyfox/testing/security/EzyAsyCryptEncryptDecryptTest.java b/ezyfox-security/src/test/java/com/tvd12/ezyfox/testing/security/EzyAsyCryptEncryptDecryptTest.java new file mode 100644 index 00000000..04b31d2a --- /dev/null +++ b/ezyfox-security/src/test/java/com/tvd12/ezyfox/testing/security/EzyAsyCryptEncryptDecryptTest.java @@ -0,0 +1,27 @@ +package com.tvd12.ezyfox.testing.security; + +import com.tvd12.ezyfox.security.EzyAsyCrypt; +import com.tvd12.ezyfox.security.EzyBase64; +import com.tvd12.test.base.BaseTest; + +public class EzyAsyCryptEncryptDecryptTest extends BaseTest { + + public static void main(String[] args) throws Exception { + String publicKey = + "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwmI6UDOjfjs/aDdn7hm2CvFs/Wc1E4C4GAzy20/ggLKZT+rf1EBe7034osMaFHne/FVQ56UNbphIYZtll6aaB+Z/r+Sm0oyOmr7S0wMftwBNaCnJN7rR4AlXIEJwfv9LZGhmt0VFvXdYm/0uRpmUaX+oU8mCCD/yxZp1w/m1x4TeUFMSpBMtWq+KcodbqBmNu7nLxWrbDkygxK1970dPADurT5MSCxdFR2sdkDNRLSYtAmXq6rMIsyhL8U+N0510zizVTlzcgB5p6vfDmUYocKy5l3LAYrk2JwPZ+c0Ik1jYcL8fU8sCSCwoXgY0fnXmfTDCoJ+xwd1nz7foiPLDwwIDAQAB"; + String privateKey = + "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCD+eQdACBwhVvLN82bv0hKBz34bfcX226jMUpJ21SvFevK/yqXDg/F85sxpfAZG0cKKAdywx8byqakzVMycZilzNGMLX+nPGkZ4pfM4fKEJuNesp0bsUtWDYdtvXTFB/TtDqIjWvVr4GvwsPiKuky6FmePDv3p1sog3taEZ+BEh8Wk8AnfIgHEhk4afNcF1GGZNQVHxxEBU+7laV8djkp0+v28XHafN58DSjhFuNUUMOEsWRqDS932BhOFUT73ie/GRJ7XSXf79G5duKUkbsnBgktMeVLm4wbCc4tGxqoGTEgtPKYGrEw7ZnZqAYBmluKvAcMzbuGYhe2TYO9lkPmDAgMBAAECggEAArqI79yPzyPCuRnnQ2AaE4XAz0Eeybx8th0PxyUkxBX08RaDf+oHg3U88TLYGvzIZDpdpQ7Jtt5iwaeJH9LfcBYjAv3x1LhYB/P6ZX8Kb5cKPmv8+ZSZ1SakdS1km6pFcx1JVufLiTZzpN9T1DJz4akS7Q9HSq1pMnLJBqXLKj+Iv2aSsY3m2b0TJvdNnnqJcAVD6TZbONeh6WsEJGUH2Kn/3igttjZg7xGWgBkBL53bWT00Q7llseBdLyB3hyV70DTtSzWXjsiTsZdWkQxET/biCCWDTxtNJkbmcUsyTCK5QGVGfnEM5HeAjTMhM8bpONfpzTp3sXy5A2r34T0fyQKBgQDL0SB5Ijr2jiKkI2cl9PL3CxLHOi6FKLUiKoNcwMkQZJ7A0F6Kjk4Pb2fv5OyaW2117nxHIBJgMjn0N6TxctJ8lHytf96i62uJWDh6ssiXbFVw5uro0pbSicNYJDkg7zdreJBZexnZgOq319y/Mamruv32dFu5B5AakC1/0ala5QKBgQClxBGsTDAVSy+KN5za3FQczLnG7+IlmPp6KH3NksWPI9ll49vwhsmao9gpc/kkHye/TB3pUSa1Qi4qW4fnkcAl+wpZ+550QvQd241cb/r1Q8G7B13F+Jk9Lkmp72vLV4Cq/qJOfOvwFIdEAv60MC6Vp0ijJ7DuAaw8aKjk3TV0RwKBgGBIuv5+nTw8iUDhOKlFvkHWiVh0s+VUBb3ON6BpspJ79kNALGloMJg6GO/LRbrl1iAQOcWf8Q5gq+AjKVim1ajkvMF51sNAU9zeQFA2hWyDURm0/ORgF7/+NLo+4n4chCHRIuAit2N482lGIJJx86WdALyc23fdisYBtnzbnxXBAoGANfGDSs2UTCmmc9U7LyHKIYEh57JCpreMs1of7lkX/0fMRFMNTM2gJ7mv63V5Gx8kYSVVCotFDHFX8qLMrDgLDpEOQlAWtYDgTiMXcoBia5Q8JC/2fSk0POumPy3Rp193WK36hY4zfXJAvoo29s5DKqJAig+tjRZwRUxNwgSWk5sCgYAp04lG1BYijnh7jGzEXtjO//ItmV7us48atzfbwH/DiT85oNmcE4PdZpeNr3Whn/tpCmBCvX5GnQrEI9p63XWSmkOiCcd7UrukP7WHzJ8VWyGyUSbK1Zke+EoPpAoQ9RfHXpkQkyT2y4pUWTjleqTLggRPlsxFsIuOcl/F2SVghA=="; + EzyAsyCrypt asyCrypt = EzyAsyCrypt.builder() + .publicKey(EzyBase64.decode(publicKey)) + .privateKey(EzyBase64.decode(privateKey)) + .build(); + byte[] encryptedBytes = asyCrypt.encrypt("Hello"); + System.out.println(encryptedBytes.length); + String encryptedText = EzyBase64.encode2utf(encryptedBytes); + System.out.println(encryptedText); + String decryptedText = new String( + asyCrypt.decrypt(EzyBase64.decode(encryptedText)) + ); + System.out.println(decryptedText); + } +} diff --git a/ezyfox-security/src/test/java/com/tvd12/ezyfox/testing/security/EzyKeysGeneratorTest.java b/ezyfox-security/src/test/java/com/tvd12/ezyfox/testing/security/EzyKeysGeneratorTest.java index 07aa9010..b90ec18a 100644 --- a/ezyfox-security/src/test/java/com/tvd12/ezyfox/testing/security/EzyKeysGeneratorTest.java +++ b/ezyfox-security/src/test/java/com/tvd12/ezyfox/testing/security/EzyKeysGeneratorTest.java @@ -4,8 +4,18 @@ import com.tvd12.test.base.BaseTest; import org.testng.annotations.Test; +import java.security.KeyPair; + public class EzyKeysGeneratorTest extends BaseTest { + public static void main(String[] args) { + KeyPair keyPair = EzyKeysGenerator + .builder() + .build() + .generate(); + System.out.println(keyPair.getPublic()); + } + @Test(expectedExceptions = {IllegalArgumentException.class}) public void test() { EzyKeysGenerator.builder() diff --git a/ezyfox-security/src/test/java/com/tvd12/ezyfox/testing/security/ModulusExponentToX509KeySpec.java b/ezyfox-security/src/test/java/com/tvd12/ezyfox/testing/security/ModulusExponentToX509KeySpec.java new file mode 100644 index 00000000..05a0c14c --- /dev/null +++ b/ezyfox-security/src/test/java/com/tvd12/ezyfox/testing/security/ModulusExponentToX509KeySpec.java @@ -0,0 +1,38 @@ +package com.tvd12.ezyfox.testing.security; + +import com.tvd12.ezyfox.security.EzyBase64; + +import java.security.spec.RSAPublicKeySpec; +import java.security.interfaces.RSAPublicKey; +import java.security.KeyFactory; +import java.math.BigInteger; +import java.util.Base64; + +public class ModulusExponentToX509KeySpec { + + public static void main(String[] args) throws Exception { + // Replace these with your actual modulus and exponent values + String modulusBase64 = "pGxIROVFa/fHqhMyrX4L53BCb72XTIK2+Hw2htdqF5wigSbDuHPDFetmQCdGUcTE2pCO/a6c3VrBU3vt45bXN4wqpZDM60XCsPOFZ1L3PIKmFnmuRwFdz+QIaoEo8sgkicPSG3ZHiHBr7t7+aIEnSpHr4jGInVUHSHnLt8m9MUr743XtgZynarfugUKz8utnRyhnoW/4Q8w+XivijDWf3VWWFpjfc78NxWJw+I3h7bdAO61N4O2JYXQMFgh26nPTAxrdk7r7spHJCBi6QHKLnRm8EXHC2pH4xFvKdxJamDC0evL/5Samy7vjIN8jibFtsWe/tKe/blbVF7cas4r0Iw=="; + String exponentBase64 = "AQAB"; + + // Decode base64 strings to get byte arrays + byte[] modulusBytes = Base64.getDecoder().decode(modulusBase64); + byte[] exponentBytes = Base64.getDecoder().decode(exponentBase64); + + // Convert byte arrays to BigInteger + BigInteger modulus = new BigInteger(1, modulusBytes); + BigInteger exponent = new BigInteger(1, exponentBytes); + + // Create RSAPublicKeySpec + RSAPublicKeySpec rsaPublicKeySpec = new RSAPublicKeySpec(modulus, exponent); + + // Create an RSAPublicKey from RSAPublicKeySpec + KeyFactory keyFactory = KeyFactory.getInstance("RSA"); + RSAPublicKey publicKey = (RSAPublicKey) keyFactory.generatePublic(rsaPublicKeySpec); + publicKey.getEncoded(); + // Now you have an RSAPublicKey that can be used for various cryptographic operations + System.out.println("RSAPublicKey: " + publicKey); + System.out.println("RSAPublicKey: " + EzyBase64.encode2utf(publicKey.getEncoded())); + } +} + diff --git a/ezyfox-security/src/test/java/com/tvd12/ezyfox/testing/security/PEMToPublicKey.java b/ezyfox-security/src/test/java/com/tvd12/ezyfox/testing/security/PEMToPublicKey.java new file mode 100644 index 00000000..22dcdabc --- /dev/null +++ b/ezyfox-security/src/test/java/com/tvd12/ezyfox/testing/security/PEMToPublicKey.java @@ -0,0 +1,34 @@ +package com.tvd12.ezyfox.testing.security; + +import java.security.KeyFactory; +import java.security.PublicKey; +import java.security.spec.X509EncodedKeySpec; +import java.util.Arrays; +import java.util.Base64; + +public class PEMToPublicKey { + public static void main(String[] args) { + try { + // Replace this with your PEM-encoded public key + String base64PublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApGxIROVFa/fHqhMyrX4L53BCb72XTIK2+Hw2htdqF5wigSbDuHPDFetmQCdGUcTE2pCO/a6c3VrBU3vt45bXN4wqpZDM60XCsPOFZ1L3PIKmFnmuRwFdz+QIaoEo8sgkicPSG3ZHiHBr7t7+aIEnSpHr4jGInVUHSHnLt8m9MUr743XtgZynarfugUKz8utnRyhnoW/4Q8w+XivijDWf3VWWFpjfc78NxWJw+I3h7bdAO61N4O2JYXQMFgh26nPTAxrdk7r7spHJCBi6QHKLnRm8EXHC2pH4xFvKdxJamDC0evL/5Samy7vjIN8jibFtsWe/tKe/blbVF7cas4r0IwIDAQAB"; + + // Decode the base64 string into a byte array + byte[] keyBytes = Base64.getDecoder().decode(base64PublicKey); + System.out.println(keyBytes.length); + System.out.println(Arrays.toString(keyBytes)); + + // Create a KeyFactory and a public key specification + KeyFactory keyFactory = KeyFactory.getInstance("RSA"); // or your desired algorithm + X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes); + + // Generate the PublicKey object + PublicKey publicKey = keyFactory.generatePublic(keySpec); + + // Now you have the PublicKey object + System.out.println("Public Key: " + publicKey); + } catch (Exception e) { + e.printStackTrace(); + } + } +} +