123 lines
2.9 KiB
Java
123 lines
2.9 KiB
Java
package com.urpsys.basebatch;
|
|
|
|
import java.io.InputStream;
|
|
import java.security.InvalidKeyException;
|
|
|
|
import javax.crypto.Cipher;
|
|
import javax.crypto.SecretKey;
|
|
import javax.crypto.spec.IvParameterSpec;
|
|
import javax.crypto.spec.SecretKeySpec;
|
|
|
|
import org.apache.commons.codec.binary.Base64;
|
|
import org.apache.commons.codec.binary.Hex;
|
|
|
|
/**
|
|
* Hello world!
|
|
*
|
|
*/
|
|
public class Aes256Test
|
|
{
|
|
private static SecretKey keySpec; // keySpec
|
|
private static IvParameterSpec ivSpec; // ivSpec
|
|
|
|
|
|
public static void main( String[] args )
|
|
{
|
|
InputStream fis = null;
|
|
String secretKey = null;
|
|
|
|
System.out.println( "Hello World!" );
|
|
|
|
secretKey = "52f48aa1c7435bc11bf909d9d7d1d5932f4bacd8184ec5c1eed6d03ee17fe126";
|
|
|
|
args = new String[2];
|
|
|
|
args[0] ="enc";
|
|
args[1] ="kicintf12!";
|
|
|
|
if(args.length !=2 )
|
|
{
|
|
System.out.println("Invalid args , args length 2 input ");
|
|
System.exit(0);
|
|
}
|
|
|
|
try
|
|
{
|
|
byte[] secretKeyBytes = Hex.decodeHex(secretKey);
|
|
|
|
if (secretKeyBytes.length != 32)
|
|
{
|
|
System.out.println("Invalid key (key length is not valid) ");
|
|
System.exit(0);
|
|
}
|
|
|
|
byte[] ivBytes = new byte[16];
|
|
|
|
System.arraycopy(secretKeyBytes, 0, ivBytes, 0, 16);
|
|
|
|
keySpec = new SecretKeySpec(secretKeyBytes, "AES");
|
|
ivSpec = new IvParameterSpec(ivBytes);
|
|
|
|
if(args[0].equals("enc"))
|
|
{
|
|
System.out.println( "암호로 변경" );
|
|
|
|
if (args[1] == null)
|
|
{
|
|
System.out.println("변경할 문자열이 없습니다.");
|
|
}
|
|
|
|
String encryptedStr = null;
|
|
|
|
try
|
|
{
|
|
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
|
|
cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec);
|
|
byte[] encrypted = cipher.doFinal(args[1].getBytes("UTF-8"));
|
|
encryptedStr = new String(Base64.encodeBase64(encrypted));
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ex.printStackTrace();
|
|
}
|
|
|
|
System.out.println( "["+ args[1] +"] 암호화로 변경 =============>"+ encryptedStr);
|
|
}
|
|
else if(args[0].equals("dec"))
|
|
{
|
|
System.out.println( "평문으로 변경" );
|
|
|
|
if (args[1] == null)
|
|
{
|
|
System.out.println("변경할 문자열이 없습니다.");
|
|
}
|
|
|
|
String decryptedStr = null;
|
|
|
|
try {
|
|
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
|
|
|
|
cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);
|
|
byte[] byteStr = Base64.decodeBase64(args[1].getBytes("UTF-8"));
|
|
decryptedStr = new String(cipher.doFinal(byteStr), "UTF-8");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ex.printStackTrace();
|
|
}
|
|
|
|
System.out.println( "["+ args[1] +"] 평문으로 변경 =============>"+ decryptedStr);
|
|
}
|
|
|
|
|
|
|
|
}
|
|
catch(Exception e)
|
|
{
|
|
e.printStackTrace();
|
|
}
|
|
|
|
|
|
}
|
|
}
|