DBMS에 저장된 데이터를 보호하기 위해 수행.
java.security패키지에서 관련된 클래스를 제공.
SHA(Secure Hash Algorithm)와 양방향 암호화(복호화가 가능한)가 제공.
민감한 개인 정보를 처리할 때 사용.
일반문자열(PlainText)을 암호화 문자열(Cipher Text)로 변환하는 것.
SHA
일방향 Hash : 복호화가 가능하지 않은 암호화(암호화 키X)
MD2, MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512의 알고리즘을 지원.
일반문자열에서 변환되는 Hash값의 길이가 다르다.
복호화
암호화된 문자열을 키를 사용하여 원래의 문자열로 변환할 수 있는 암호화.
양방향 암호화(DES, 3DES, AES등 ) - 키 존재(대칭키, 비대칭키)
DES(Data Encrytion Standard) : 1970년 개발, 잘 만들어진 암호화 알고리즘, 대칭키
사용법)
MessageDigest md = MessageDigest.getInstance(“algorithm “);//algorithm => SHA나 MD5 등.
//Plain Text를 Cipher Text로 변환
md.update( 일반문자열.getBytes() ); // 암호화 : encryption
//사람이 알아 볼 수 없는 charset이 된다.
Base64 encoder를 사용하여 사람이 알아 볼 수 있는 문자열로 생성
Base64 b=new Base64();
new String( b.encode( md.digest() );
String msg="1234";//Plain Text
try {
//1. MessageDigest 생성
MessageDigest md = MessageDigest.getInstance("MD5");
//2. 암호화 알고리즘에 의한 암호화 수행
md.update(msg.getBytes());
byte[] temp = md.digest();
System.out.println(new String(temp));//사람이 알아볼 수 없다. => encoding
Base64 base = new Base64();
String cipherText = new String(base.encode(temp));//사람이 알아볼 수 있는 8859_1로 생성
System.out.println(cipherText);
//복호화가 가능한 암호화
String name="김동섭";
String key="CY9rzUYh03PK3k6DJie09g==";
DataEncrypt de = new DataEncrypt(key);
String encryptText = de.encryption(name);
System.out.println("암호화 문자열 : "+ encryptText);
//복호화
DataDecrypt dd = new DataDecrypt(key);
String decryptText = dd.decryption(encryptText);
System.out.println("복호화 문자열 : " + decryptText);
}catch(NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (GeneralSecurityException e) {
e.printStackTrace();
}
저장되는 정보의 중요도에 따라 암호화작업을 수행 => 정보보호 수행(비용 발생)
아무도 확인하지 못하도록 만들 때 => 일방향 Hash로 저장
: 비밀번호, 주민번호, cvc
관리자의 등급에 따라 확인이 가능해야 할 때 => 복호화가 가능함 암호화(양방향)
: id, phone, 이름, 이메일
일반문자열
생일, flag값, 주소
2.한 화면에 보여줄 게시물의 수
int pageScale=10;
총 페이지수
int totalPage=0;
int remain=totalCount%pageScale;
if( remain != 0){
totalPage=totalCount/pageScale+1;
}else{
totalPage=totalCount/pageScale;
}
[1][2] [3]
4.시작번호
String tempPage=request.getParameter(“currentPage”);
int currentPage=1;
If( tempPage != null){
currentPage=Integer.parseInt( tempPage );
}
int startNum=currentPage * pageScale - pageScale+1;
5.끝번호
int endNum=startNum+pageScale-1;
pstmt.setInt(1,startNum);
pstmt.setInt(2,endNum);
String tempPage = request.getParameter("currentPage");
int currentPage=1;
if(tempPage != null){
currentPage = Integer.parseInt(tempPage);
}
int startNum=currentPage;