import java.security.Key;

 

import javax.crypto.Cipher;

import javax.crypto.SecretKeyFactory;

import javax.crypto.spec.DESKeySpec;

 

import sun.misc.BASE64Decoder;

import sun.misc.BASE64Encoder;


/**

 * 1.DES, TripleDES 암호화, 복호화

 * 2.생성될 키는 암호화할때와 복호화시 같은 키를 사용해야한다.

 * 3.화면에 출력할 수 없는 문자 표시를 위해 BASE64 사용

 */

public class CryptoUtil {


    public CryptoUtil() {

    }

    

    /**

     * 16byte : DES

     * 24byte : TripleDES

     * 

     * 문자열이 해당 byte의 크기만 되면 어떤 내용이든 상관 없음.

     * @return String 키값 

     */

    private static String key() {

     

     //return "ab_booktv_abcd09";   //DES

     return "ab_booktv_abcd09";   //DES  

     //return "ab_booktv_abcd0912345678";  //TripleDES

    }

    

    /**

     * 24바이트인 경우 TripleDES 아니면 DES

     * @return Key

     * @throws Exception 

     */

    private static Key getKey() throws Exception {

     

     return (key().length() == 24) ? getKey2(key()) : getKey1(key());     

    }

    

    /**

     * Cipher의 instance 생성시 사용될 값

     * @return String DES, TripleDES 구분

     * @throws Exception 

     */

    private static String getInstance() throws Exception {

     

     return (key().length() == 24) ? "DESede/ECB/PKCS5Padding" : "DES/ECB/PKCS5Padding";

    }

    

    /**

     * 지정된 비밀키를 가지고 오는 메서드(DES) 

     * require Key Size : 16bytes

     * 

     * @param keyValue

     * @return Key

     * @throws Exception 

     */

    private static Key getKey1(String keyValue) throws Exception {

     

     SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");

     DESKeySpec desKeySpec = new DESKeySpec( keyValue.getBytes() );

     

     return keyFactory.generateSecret( desKeySpec );

    }

    

    /**

     * 지정된 비밀키를 가지고 오는 메서드(TripleDES) 

     * require Key Size : 24bytes

     * 

     * @param keyValue

     * @return Key

     * @throws Exception 

     */

    private static Key getKey2(String keyValue) throws Exception {

     

     SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");

     DESKeySpec desKeySpec = new DESKeySpec( keyValue.getBytes() );

     

     return keyFactory.generateSecret( desKeySpec );

    }

    

    /**

     * 문자열 대칭 암호화

     * return String 암호화된 문자열

     */

    public static String encrypt(String input) throws Exception {

     

     if(input == null || input.length() == 0) return "";

     

     Cipher cipher = Cipher.getInstance( getInstance() );

        cipher.init( Cipher.ENCRYPT_MODE, getKey() );

        

        byte [] inputBytes = input.getBytes("UTF8");

        byte [] outputBytes = cipher.doFinal( inputBytes );


        return new BASE64Encoder().encode( outputBytes );

    }

    

    /**

     * 문자열 대칭 복호화

     * return String 복호화된 문자열 

     */

    public static String decrypt(String input) throws Exception {

        

     if(input == null || input.length() == 0) return "";

     

     Cipher cipher = Cipher.getInstance( getInstance() );

        cipher.init( Cipher.DECRYPT_MODE, getKey() );

     

     byte [] inputBytes = new BASE64Decoder().decodeBuffer( input );

     byte [] outputBytes = cipher.doFinal( inputBytes );

        

        return new String( outputBytes, "UTF8" );

    }

 

}

신고
Posted by genius3k

MD5 암호화 소스

Java 2014.01.10 10:39

.import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;


public class Test {


public static void main(String[] args) throws NoSuchAlgorithmException {

byte[] data = Test.md5("test");

System.out.println(Test.toHexString(data));

}


public static byte[] md5(String input) throws NoSuchAlgorithmException {

MessageDigest messageDigest = MessageDigest.getInstance("MD5");

return messageDigest.digest(input.getBytes());

}

public static StringBuffer toHexString(byte[] byteData){

//convert the byte to hex format method 1

        StringBuffer sb = new StringBuffer();

        for (int i = 0; i < byteData.length; i++) {

         sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1));

        }

        return sb;

}


}

신고
Posted by genius3k


package test;

import java.io.InputStream;
import java.io.OutputStream;

import org.apache.commons.lang.StringUtils;

import com.sshtools.j2ssh.SshClient;
import com.sshtools.j2ssh.authentication.AuthenticationProtocolState;
import com.sshtools.j2ssh.authentication.PasswordAuthenticationClient;
import com.sshtools.j2ssh.session.SessionChannelClient;
import com.sshtools.j2ssh.transport.IgnoreHostKeyVerification;

public class Test {
 SessionChannelClient session;

 /**
  * @param args
  * @throws Exception
  */
 public static void main(String[] args) throws Exception {
  Test test = new Test();
  test.connectServer("호스트명", "아이디", "비밀번호",포트);
  test.exec("1\n");
  Thread.sleep(1000);
   }

 public void connectServer(String host, String username, String password,
   int port) {
  SshClient sshClient = null;
  PasswordAuthenticationClient authentication = null;

  try {
   sshClient = new SshClient();
   sshClient.setSocketTimeout(10000);
   sshClient.connect(host, port, new IgnoreHostKeyVerification());

   authentication = new PasswordAuthenticationClient();
   authentication.setUsername(username);
   authentication.setPassword(password);

   String message = "##### Server(host : " + host + ", username : "
     + username + ") connect is";
   int result = sshClient.authenticate(authentication);
   session = sshClient.openSessionChannel();
   if (result == AuthenticationProtocolState.COMPLETE) {
    System.out.println(message + " complete!!!");
    if (session.requestPseudoTerminal("vt100", 80, 24, 0, 0, "")) {
     session.startShell();
     read();
     read();
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 public void read(){
  try {
   InputStream in = session.getInputStream();
   byte[] buf = new byte[4096];
   int readCount = 0;
   int count = 1;
   while ((readCount = in.read(buf)) != -1) {
    count++;
    String data = new String(buf, 0, readCount);
    System.out.println(data);
    if(data.indexOf(":")>0){
     break;
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
  } finally{
  }
  
 }

 public void exec(String cmd) throws Exception {
  OutputStream out = session.getOutputStream();
  out.write(cmd.getBytes());
  read();
 }
}

신고
Posted by genius3k

파일리스트에 저장되어있는 파일리스트를 순차적으로 scp전송하는 Ant Task

Java 파일======================
package ant;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Properties;

import org.apache.tools.ant.Task;

import com.jcraft.jsch.Buffer;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

public class Scp extends Task {
 String distFileList;
 String host;
 String user;
 String desDir;
 int port;
 String password;

 public void execute() {
  JSch jsch = new JSch();
  try {
   log(host +" Start Upload Files ==================");
   ArrayList<String> fileList = getFileList(distFileList);
   Session session = jsch.getSession(user, host, port);
   session.setUserInfo(new HardcodedUserInfo(password));
   Properties config = new Properties();
   config.setProperty("StrictHostKeyChecking", "no");
   session.setConfig(config);
   session.connect();
   ChannelSftp channel = (ChannelSftp) session.openChannel("sftp");
   channel.connect();
   
   int uploadCount = 0;
   for (String file : fileList) {
    File fileObj = new File(file);
    String desPath =desDir+fileObj.getParentFile().getPath().replace("\\", "/");
    channel.cd(desPath);
    channel.put(new FileInputStream("WebContent"+fileObj.getPath()),fileObj.getName());
    log("Upload File "+ ++uploadCount+" : "+desPath+"/"+fileObj.getName());
   }
   channel.disconnect();
   session.disconnect();
   
   log(host +" Upload Complete ==================");
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
 
 public ArrayList<String> getFileList(String fileName) throws IOException{
  ArrayList<String> fileList = new ArrayList<String>();
  BufferedReader bf = new BufferedReader(new FileReader(fileName));
  String file="";
  while((file=bf.readLine())!=null){
   fileList.add(file);
  }
  return fileList;
 }

 public String getDesDir() {
  return desDir;
 }

 public void setDesDir(String desDir) {
  this.desDir = desDir;
 }

 public String getDistFileList() {
  return distFileList;
 }

 public void setDistFileList(String distFileList) {
  this.distFileList = distFileList;
 }

 public int getPort() {
  return port;
 }

 public void setPort(int port) {
  this.port = port;
 }

 public String getUser() {
  return user;
 }

 public void setUser(String user) {
  this.user = user;
 }

 public String getPassword() {
  return password;
 }

 public void setPassword(String password) {
  this.password = password;
 }

 public String getHost() {
  return host;
 }

 public void setHost(String host) {
  this.host = host;
 }
}

package ant;

import com.jcraft.jsch.UserInfo;

public class HardcodedUserInfo implements UserInfo {  
  
    private final String password;  

    public HardcodedUserInfo(String password) {  
        this.password = password;  
    }  

    public String getPassphrase() {  
        return null;  
    }  

    public String getPassword() {  
        return password;  
    }  

    public boolean promptPassword(String s) {  
        return true;  
    }  

    public boolean promptPassphrase(String s) {  
        return true;  
    }  

    public boolean promptYesNo(String s) {  
        return true;  
    }  

    public void showMessage(String s) {  
        System.out.println("message = " + s);  
    }  
}

Ant bulid.xml 파일
<path id="class_path">
<pathelement location="${bin.dir}" /> <-- 정의한 클래스가 컴파일되어 저장되는 경로를 path로 잡아준다
</path>
<target name="upload">
  <taskdef name="scp" classname="ant.Scp" classpathref="class_path"/>
        <scphost="아이피주소" user="서버 접속아이디" password="서버접속 비밀번호" port="포트"
         desDir="업로드될 서버의 루트패스" distFileList="파일리스트가 저장된 파일명"/>
 </target>

신고
Posted by genius3k

URL httpUrl = new URL(사이트 주소);
URLConnection conn = httpUrl.openConnection();
conn.setRequestProperty("Cookie","변수명=값;");       <----------끝이다 ㅡㅡ;
conn.setRequestProperty("content-type", "application/x-www-form-urlencoded; charset=utf-8");
conn.setDoOutput(true);
conn.setUseCaches(false);
out0 = new DataOutputStream(conn.getOutputStream());
if (params != null) {
         out0.writeBytes(params);
         out0.flush();
         out0.close();
}
is = conn.getInputStream();
in = new BufferedReader(new InputStreamReader(is,"UTF-8"));
String line = null;
while ((line = in.readLine()) != null) {
         sbXmlDoc.append(line + "\n");
}
is.close();
in.close();
신고
Posted by genius3k

public StringBuffer getApiXml(String apiUrl, String params) throws Exception {
        StringBuffer sbXmlDoc = new StringBuffer();
        StringBuffer xmlDoc = new StringBuffer();

        HttpURLConnection httpConn = null;
        @SuppressWarnings("unused")
        String url = null;
        try {
            url = apiUrl;
            System.out.println("[request apiUrl]   "+apiUrl+"?"+params);
            URL httpUrl = new URL(apiUrl);
            URLConnection conn = httpUrl.openConnection();

            conn.setDoOutput(true);
            conn.setUseCaches(false);
            conn.setRequestProperty("content-type", "text/xml; charset=utf-8");

            DataOutputStream out0 = new DataOutputStream(conn.getOutputStream());
            if (params != null) {
                out0.writeBytes(params);
                out0.flush();
                out0.close();
            }
            InputStream is = conn.getInputStream();
            BufferedReader in = new BufferedReader(new InputStreamReader(is));

            String line = null;

            while ((line = in.readLine()) != null) {
                sbXmlDoc.append(line + "\n");
            }
            xmlDoc = sbXmlDoc;

        } catch (Exception e) {
            logger.info(e);
            xmlDoc=errorXml(e);
        } finally {

            if (httpConn != null) {
                try {
                    httpConn.disconnect();
                } catch (Exception e2) {
                    e2.printStackTrace();
                    logger.info(e2);
                }
            }
        }

        return xmlDoc;
    }

신고
Posted by genius3k

 /usr/sbin/alternatives --install /usr/bin/java java /usr/java/jre1.6.0_16/bin/java 2
 /usr/sbin/alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/lib/jvm/jre-1.4.2-gcj/bin/java
   2           /usr/java/jre1.6.0_16/bin/java

Enter to keep the current selection[+], or type selection number: 2
[root@proton hyjeong]# java -version
java version "1.6.0_16"
Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
Java HotSpot(TM) 64-Bit Server VM (build 14.2-b01, mixed mode)

!

 

신고
Posted by genius3k

출처: http://groovy.codehaus.org/Eclipse+Plugin

* 이클립스 3.2 기준

 

[Groovy]

- 파이선, 루비와 비슷한 자바문법 기반으로 동작하는 스크립트 언어

 

Main Groovy Site : http://www.codehaus.org/

Main Grails Site : http://grails.org/

Grooyv Portal : http://aboutgroovy.com/

 

참고글1 : http://www.zdnet.co.kr/services/story/print/0,39035309,39132353,00.htm

참고글2 : http://www.zdnet.co.kr/services/story/print/0,39035309,39134013,00.htm

 

 

[설치]

1.  Help -> Software Updates -> Find and Install -> Search For New Features

2.  New Remote Site 선택

3.  Name 필드에 적당히 입력 (ex: Groovy)

4.  URL field 에 아래와 같이 입력후 OK  선택    

     http://dist.codehaus.org/groovy/distributions/update/

5.  몇가지 화면설정후 install all 선택

 
 
[Groovy 프로젝트 생성]
1. File -> New -> Project

2. Java Project 로 프로젝트 생성 (소스폴더 생성)

3. 생성된 프로젝트명을 마우스 우측 클릭후 나타나는 팝업메뉴에서 Add Groovy Nature 선택

4. 프로젝트명 우측클릭후 나타나나느 팝업메뉴에서 properties 선택

5. groovy Project Properties 에서 Groovy compiler output location 입력 (ex: bin-groovy)

신고
Posted by genius3k

그루비 설치 방법

Java 2009.11.10 14:05
http://groovy.codehaus.org/Download에서 윈도우용 인스톨
Download Windows-Installer: Binary Release (Module Versions)를 클릭하여 다운로드 받아 실행한다.

다음을 눌러 설치한다

시작 - > 실행 - > cmd 실행하여 groovysh를 입력하여 groovy 입력모드로 가면 설치가 완료된것이다.

설치완료 화면

신고

'Java' 카테고리의 다른 글

Linux에 Java가 두개 이상 설치되어있을때 설치된버전을 통해서 실행되게 하는법  (0) 2010.01.29
Groovy Eclipse Plugin 설치하기  (0) 2009.11.10
그루비 설치 방법  (0) 2009.11.10
Shallow Copy  (0) 2009.10.21
no-cache 설정  (0) 2009.10.21
MD5 암호화  (0) 2009.09.22
Posted by genius3k

Shallow Copy

Java 2009.10.21 19:06

Object의 cron함수를 사용하면 복사를 하게 되지만 그 객체 내부에서 생성하고 있는 포인터만이 복사되니때문에 얕은 복사가 이루어진다.

깊은 복사가 되게 하기 위해서는 cron함수를 재정이 하여 객체 내부에서 생성하고 있는 객체에 대해서는 다시 생성해줘야 한다.

얕은복사 예제

Person Class 소스

package kr.or.kosta.pattern.prototype.copy.shallow;

import kr.or.kosta.pattern.prototype.copy.Car;

public class Person implements Cloneable {

 private Car car;
 
 private String name;
 
 public Person(String name, String carName) {
  this.name = name;
  car = new Car(carName);
 }
 
 public String getName() {
  return name;
 }
 
 public void setName(String name) {
  this.name = name;
 }
 
 public Car getCar() {
  return car;
 }
 
 public Object clone() {
  try {
   return super.clone();
  }
  catch (CloneNotSupportedException e) { return null; }
 }
}

결과



깊은 복사 예제

Person Class 소스

package kr.or.kosta.pattern.prototype.copy.deep;

import kr.or.kosta.pattern.prototype.copy.Car;

public class Person implements Cloneable {

 private Car car;
 
 private String name;
 
 public Person(String name, String carName) {
  this.name = name;
  car = new Car(carName);
 }
 
 public String getName() {
  return name;
 }
 
 public void setName(String name) {
  this.name = name;
 }
 
 public Car getCar() {
  return car;
 }
 
 public Object clone() {
  Person person = new Person(name, car.getName());  
  return person;
 }

}

결과



실행 소스

Test Class 소스

package kr.or.kosta.pattern.prototype.copy.shallow;

public class Test {

 public static void main(String[] args) {
  Person person = new Person("송태국", "뉴 산타페");
  System.out.println("[원본(변경전)] 이름: " + person.getName() + " 자동차: " + person.getCar().getName());
  
  Person copyPerson = (Person) person.clone();
  System.out.println("[복사본(변경전)] 이름: " + copyPerson.getName() + " 자동차: " + copyPerson.getCar().getName());
  
  copyPerson.setName("김동열");
  copyPerson.getCar().setName("그랜져TG");
  
  System.out.println("[복사본(변경후)] 이름: " + copyPerson.getName() + " 자동차: " + copyPerson.getCar().getName());
  
  System.out.println("[원본(변경후)] 이름: " + person.getName() + " 자동차: " + person.getCar().getName());
 }
}

신고

'Java' 카테고리의 다른 글

Groovy Eclipse Plugin 설치하기  (0) 2009.11.10
그루비 설치 방법  (0) 2009.11.10
Shallow Copy  (0) 2009.10.21
no-cache 설정  (0) 2009.10.21
MD5 암호화  (0) 2009.09.22
날짜 관련 함수  (0) 2009.05.20
Posted by genius3k

티스토리 툴바