728x90
반응형

MD5 (Message-Digest algorithm 5) 

MD5는 메세지 축약 알고리즘으로써, 파일 무결성 검사용도로 많이 쓰이고 있다. 

128bit 의 해쉬를 제공하며, 암호와와 복호화를 통하여 보안용도로도 많이 쓰인다. 

하지만 암호화 결함이 발견되어 보안 용도로 사용할때에는 SHA와 같은 다른 알고리즘을 사용하는것이 권장되고 있다고 한다. 

 

SHA (Sechre Hash Standard) 

SHA(Secure Hash Algorithm, 안전한 해시 알고리즘) 함수들은 서로 관련된 암호학적 해시 함수들의 모음이다. 

여러 종류가 존재하며 그중 SHA-1은 SHA 함수들 중 가장 많이 쓰이며, TLS, SSL, PGP, SSH, IPSec 등 많은 보안 프로토콜과 프로그램에서 사용되고 있다. SHA-1은 이전에 널리 사용되던 MD5를 대신해서 쓰이기도 한다. 혹자는 좀 더 중요한 기술에는 SHA-256이나 그 이상의 알고리즘을 사용할 것을 권장한다.



암호화 Algorithm은 크게 3가지로 나뉜다. 

1. Hashing : 복호화 불가능. 단방향. 속도가 빠름 
2. Symmetric : 복호화 가능 (private key 사용) 
3. Asymmetric : 복호화 가능 (private, public key 사용) 

1. Hashing Algorithm 

종류 : MD5, SHA1, SHA256, SHA384, SHA512 등 Hash 를 계산할 때 쓰이는 종류이다. 
숫자가 클 수록 Hash 값이 복잡해지므로, 더 안전한 암호화 방법이 된다. 
예전에는 MD5, SHA1 등 16byte 크기의 Hash 값을 사용했지만, 요즘은 SHA512 등 Hash 값 크기가 큰 알고리즘을 추천한다. 

비밀번호등 일치 여부만을 확인하기 위해서 (복호화 불필요) 사용한다. 
전에도 밝혔지만 아주 큰 Data의 Identity 를 나타내는 값으로 쓸 수 있다. 

2. Symmetric Algorithm 

종류 : DES, TripleDES, Rijndael, RC2 
대칭형 암호화를 수행하고, 비밀번호 (private key)를 추가할 수 있다. 
비밀번호를 사용하면 복호화가 가능하므로, 내부통신 또는 같은 도메인에서 사용한다. 
Rijndael이나 RC2를 추천한다. 

3. Asymmetric Algorithm 

종류 : DSA, RSA (요즘은 RSA가 대세) 
공인인증서에서 사용하는 Algorithm으로, private key 뿐 아니라 public key도 있어야 한다. 외부 통신 등에 사용한다.

728x90
반응형
728x90
반응형
HttpSession session = request.getSession();

보통 위 같은 방식으로 session을 많이 얻어옵니다.
하지만 DWR를 사용할 경우 어떤 방식으로 session값을 얻어올가요?
결국 request 인스턴스만 가질수 있으면 session은 쉽게 얻을 수 있지 말입니다.

DWR 샘플들을 살펴보던중 WebContext 라는 클래스를 알게 되었습니다.
사실 DWR를 이용하여 JS에서 Java 메소드를 콜할시 결국 request를 보내게 됩니다.
이 request를 얻을려면 별도로 webContext라는 인스턴스를 얻어야만 하는데 
WebContextFactory.get() 로 쉽게 얻을 수가 있습니다.

WebContext wctx = WebContextFactory.get();
HttpServletRequest request = wctx.getHttpServletRequest();
HttpSession session = request.getSession();


728x90
반응형
728x90
반응형
디버깅이란 프로그램을 개발하고 나서 외부 릴리즈하기 전 미처 발견하지 못했거나 또는
 
프로그램이 외부에 릴리즈 된 이후 발견된 버그를 수정하는 과정을 통하여
 
프로그램의 완성도를 높이는 일련의 작업입니다.
 
USB 디버깅이란 스마트 디바이스와 PC를 연결하여 스마트 디바이스상에서 어플리케이션을 구동시켜
 
버그를 찾고, 버그가 발견되었을 때에는 PC에서 바로 수정하는 것 입니다.
 
예를 들어 모바일과 비교하였을 때, PC는 모바일 어플리케이션이 구동하기 불리한 환경이며,
 
PC와 비교하였을 때, 모바일은 어플리케이션을 개발하고 수정하기에 불리한 환경입니다.
 
그렇기 때문에 USB 디버깅 기능을 이용하여 PC와 스마트폰의 장점들 만을 결합하여
 
버그를 찾고 수정하는 것이며,이를 통하여 모바일 어플리케이션의 버그를 좀 더 효율적으로
 
수정 할 수 있는 것 입니다.


728x90
반응형
728x90
반응형

replaceFirst() / replaceAll() 메소드(함수)로 문자열을 치환할 때, 대소문자 구분없이 바꾸려면

정규식의 앞 부분에 (?i) 라는 옵션을 넣어주면 됩니다. 물음표+소문자i(아이)입니다.


String s  = "Abc abC ABC abc"; // 원본 문자열
    String s2;


s2 = s.replaceFirst("(?i)abc", "ZZZ");
    System.out.println("치환(1): " + s2);

>> ZZZ abC ABC abc

    s2 = s.replaceAll("(?i)abc", "ZZZ");
    System.out.println("치환(2): " + s2);


>> ZZZ ZZZ ZZZ ZZZ

728x90
반응형

'Web Programming > java-jsp' 카테고리의 다른 글

DWR 사용시 Session 값 얻기  (0) 2015.04.07
USB 디버깅 ?  (0) 2015.04.06
myBatis 에서 #{value} 와 ${value} 차이  (0) 2015.04.06
Mybatis #와 $의 차이점  (0) 2015.04.06
<![CDATA[<]]>  (0) 2014.07.08
728x90
반응형

1.#{value} 
변수 이고 실제 쿼리에서 '(호따움표)가 붙습니다. 
PreparedStatement 에서 ? 에 들어갈 값입니다. 

ex) 
select * from board where id=#{id} 
이렇게 되어 있다면 
myBatis 내부적으론 
<code> 
String sql = "select * from board where id = ?" 
PreparedStatement ps = .... 


ps.setString(1,id) 
</code> 


2.${value} 
상수 이고 '(호따움표)가 붙지 않습니다. (sql 인젝션 위험이 있음) 
sql 문장을 만듭니다. 
동적 테이블,컬럼에도 사용됩니다. 
${myColumn} = #{value}이런식도 가능합니다. 

select * from board where id='${id}' 
이렇게 되어 있다면 
myBatis 내부적으론 

<code> 
String sql = "select * from board where id = 'aaa'"//sql자체를 만듬 
PreparedStatement .. 


</code> 

728x90
반응형

'Web Programming > java-jsp' 카테고리의 다른 글

USB 디버깅 ?  (0) 2015.04.06
java 대소문자 구분없이 문자열 바꾸기 - (?i)  (0) 2015.04.06
Mybatis #와 $의 차이점  (0) 2015.04.06
<![CDATA[<]]>  (0) 2014.07.08
display:block 테이블깨짐현상  (2) 2014.06.30

+ Recent posts