IT

<IT> Block Cipher Encrypt.jsp

달남 2019. 12. 20. 09:15

<%@page
language="java" contentType="text/html; charset=UTF-8"
import="org.json.simple.JSONObject, java.security.*,
        ksign.jce.util.Base64,
        ksign.jce.util.JCEUtil,
        javak.crypto.*,
        javak.crypto.spec.IvParameterSpec,
        javak.crypto.spec.SecretKeySpec"
%>
<%
    String plainText = request.getParameter("plainText");
    String algorithm = request.getParameter("algorithm");
    String round = request.getParameter("round");

    String iv = "";
    String key = "";
    String output = "";

    try {
        JCEUtil.initProvider();

        KeyGenerator keyGenerator = KeyGenerator.getInstance(algorithm, "Ksign");
        if (algorithm.equalsIgnoreCase("SEED")) {
            keyGenerator.init(128);
        } else if(algorithm.equalsIgnoreCase("ARIA")) {
            keyGenerator.init(128);
        } else if(algorithm.equalsIgnoreCase("DES")) {
            keyGenerator.init(56);
        } else if(algorithm.equalsIgnoreCase("3DES")) {
            keyGenerator.init(168);
        } else if(algorithm.equalsIgnoreCase("DESede")) {
            keyGenerator.init(168);
        }

        SecretKey _key = keyGenerator.generateKey();

        SecureRandom secureRandom = new SecureRandom();
        byte[] byteArray = new byte[16];
        secureRandom.nextBytes(byteArray);

        IvParameterSpec _iv = new IvParameterSpec(byteArray);

        key = new String(Base64.encode(_key.getEncoded()));
        iv = new String(Base64.encode(_iv.getIV()));

        Cipher cipher = Cipher.getInstance(algorithm + "/" + "CBC" + "/" + "PKCS5Padding", "Ksign");
        cipher.init(Cipher.ENCRYPT_MODE, _key, _iv);

        byte[] encryptData = cipher.doFinal(plainText.getBytes("UTF-8"));
        output = new String(Base64.encode(encryptData));
    } catch (Exception e) {
        output = e.toString();
    }

    JSONObject jsonObj = new JSONObject();
    jsonObj.put("key", key);
    jsonObj.put("iv", iv);
    jsonObj.put("out", output);
    //out.print(jsonObj.toString()); //소스코드 점검결과 조치 시작 19.12.02
%>