- update jwt
- add security
This commit is contained in:
45
security/src/main/java/kr/pe/elex/examples/AESKeys.java
Normal file
45
security/src/main/java/kr/pe/elex/examples/AESKeys.java
Normal file
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Copyright (c) 2024. Elex. All Rights Reesrved.
|
||||
* https://www.elex-project.com/
|
||||
*/
|
||||
|
||||
package kr.pe.elex.examples;
|
||||
|
||||
import javax.crypto.KeyGenerator;
|
||||
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.KeyFactory;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.security.SecureRandom;
|
||||
import java.security.spec.InvalidKeySpecException;
|
||||
import java.util.Base64;
|
||||
|
||||
public class AESKeys {
|
||||
public static SecretKey generateSecretKey() throws NoSuchAlgorithmException {
|
||||
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
|
||||
keyGenerator.init(128, new SecureRandom());
|
||||
return keyGenerator.generateKey();
|
||||
}
|
||||
|
||||
public static SecretKey generateSecretKey(char[] password, byte[] salt, int iteration) throws NoSuchAlgorithmException, InvalidKeySpecException {
|
||||
PBEKeySpec keySpec = new PBEKeySpec(password, salt, iteration);
|
||||
return SecretKeyFactory.getInstance("PBEWithHmacSHA256AndAES_128")
|
||||
.generateSecret(keySpec);
|
||||
}
|
||||
|
||||
public static String encodeSecretKey(final SecretKey secretKey){
|
||||
return Base64.getEncoder().encodeToString(secretKey.getEncoded());
|
||||
}
|
||||
public static SecretKey decodeSecretKey(final String secretKey) throws NoSuchAlgorithmException, InvalidKeySpecException {
|
||||
SecretKey keySpec = new SecretKeySpec(Base64.getDecoder().decode(secretKey), "AES");
|
||||
return keySpec;
|
||||
}
|
||||
|
||||
public static IvParameterSpec generateIV(byte[] iv){
|
||||
IvParameterSpec parameterSpec = new IvParameterSpec(iv);
|
||||
return parameterSpec;
|
||||
}
|
||||
}
|
||||
44
security/src/main/java/kr/pe/elex/examples/RSAKeys.java
Normal file
44
security/src/main/java/kr/pe/elex/examples/RSAKeys.java
Normal file
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
* Examples for Java
|
||||
*
|
||||
* Copyright (c) 2021. Elex. All Rights Reserved.
|
||||
* https://www.elex-project.com/
|
||||
*/
|
||||
|
||||
package kr.pe.elex.examples;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.security.*;
|
||||
import java.security.spec.InvalidKeySpecException;
|
||||
import java.security.spec.X509EncodedKeySpec;
|
||||
import java.util.Base64;
|
||||
|
||||
@Slf4j
|
||||
public class RSAKeys {
|
||||
public static KeyPair generateKeyPair() throws NoSuchAlgorithmException {
|
||||
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
|
||||
keyPairGen.initialize(2048, new SecureRandom());
|
||||
return keyPairGen.generateKeyPair();
|
||||
}
|
||||
|
||||
public static String encodePrivateKey(final PrivateKey privateKey) {
|
||||
return Base64.getEncoder().encodeToString(privateKey.getEncoded());
|
||||
}
|
||||
|
||||
public static String encodePublicKey(final PublicKey publicKey) {
|
||||
return Base64.getEncoder().encodeToString(publicKey.getEncoded());
|
||||
}
|
||||
|
||||
public static PublicKey decodePublicKey(final String publicKey) throws NoSuchAlgorithmException, InvalidKeySpecException {
|
||||
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(Base64.getDecoder().decode(publicKey));
|
||||
return KeyFactory.getInstance("RSA").generatePublic(keySpec);
|
||||
}
|
||||
|
||||
public static PrivateKey decodePrivateKey(final String privateKey) throws NoSuchAlgorithmException, InvalidKeySpecException {
|
||||
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(Base64.getDecoder().decode(privateKey));
|
||||
return KeyFactory.getInstance("RSA").generatePrivate(keySpec);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
/*
|
||||
* Examples for Java
|
||||
*
|
||||
* Copyright (c) 2021. Elex. All Rights Reserved.
|
||||
* https://www.elex-project.com/
|
||||
*/
|
||||
|
||||
package kr.pe.elex.examples;
|
||||
40
security/src/test/java/kr/pe/elex/examples/AESKeysTest.java
Normal file
40
security/src/test/java/kr/pe/elex/examples/AESKeysTest.java
Normal file
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright (c) 2024. Elex. All Rights Reesrved.
|
||||
* https://www.elex-project.com/
|
||||
*/
|
||||
|
||||
package kr.pe.elex.examples;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import javax.crypto.SecretKey;
|
||||
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.security.spec.InvalidKeySpecException;
|
||||
import java.util.Random;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class AESKeysTest {
|
||||
|
||||
@Test
|
||||
void test() throws NoSuchAlgorithmException, InvalidKeySpecException {
|
||||
SecretKey secretKey = AESKeys.generateSecretKey();
|
||||
|
||||
String base64SecretKey = AESKeys.encodeSecretKey(secretKey);
|
||||
|
||||
SecretKey secretKey1 = AESKeys.decodeSecretKey(base64SecretKey);
|
||||
|
||||
assertEquals(secretKey, secretKey1);
|
||||
}
|
||||
@Test
|
||||
void test1() throws NoSuchAlgorithmException, InvalidKeySpecException {
|
||||
byte[] salt = new byte[8];
|
||||
new Random().nextBytes(salt);
|
||||
SecretKey secretKey = AESKeys.generateSecretKey("Hello".toCharArray(), salt, 10);
|
||||
|
||||
SecretKey secretKey1 = AESKeys.generateSecretKey("Hello".toCharArray(), salt, 10);
|
||||
|
||||
assertEquals(secretKey, secretKey1);
|
||||
}
|
||||
}
|
||||
21
security/src/test/java/kr/pe/elex/examples/SampleTest.java
Normal file
21
security/src/test/java/kr/pe/elex/examples/SampleTest.java
Normal file
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
* Examples for Java
|
||||
*
|
||||
* Copyright (c) 2021. Elex. All Rights Reserved.
|
||||
* https://www.elex-project.com/
|
||||
*/
|
||||
|
||||
package kr.pe.elex.examples;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.security.spec.InvalidKeySpecException;
|
||||
|
||||
class SampleTest {
|
||||
|
||||
@Test
|
||||
void test() throws NoSuchAlgorithmException, InvalidKeySpecException {
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user