데이터 날리기
결과
// 해쉬암호 : 최근에는 대부분 SHA256을 사용한다.
// 해쉬는 복호화가 되지않는다.
// 암호화와 복호화가 되는 기술은 base64
// 해쉬와 해쉬를 비교하여 검증
// 해쉬는 고정길이라서 같은 값이 나올 수 있다 (충돌)
// 뚫릴 수 있다
// 레인보우 테이블
// 소금치기
UsersJoinProcAction
SHA256
테스트코드
더보기
package com.cos.blog.test;
import java.security.MessageDigest;
import org.junit.Test;
//해쉬암호 : 최근에는 대부분 SHA256을 사용한다.
//해쉬는 복호화가 되지않는다.
//암호화와 복호화가 되는 기술은 base64
//해쉬와 해쉬를 비교하여 검증
//해쉬는 고정길이라서 같은 값이 나올 수 있다 (충돌)
//뚫릴 수 있다
//레인보우 테이블
//소금치기
public class SHA256Test {
private final static String salt = "코스";
@Test
public void encSha256() {
String plain = "1234";
String result = "";
byte[] bytePlain = plain.getBytes(); // 들어온 문자들을 바이트 단위로 쪼갠다.
for (byte b : bytePlain) {
System.out.println(b);
}
byte[] bytesalt = salt.getBytes();
for (byte b : bytesalt) {
System.out.println(b);
}
byte[] bytePlainAndSalt = new byte[bytePlain.length + bytesalt.length];
for (int i = 0; i < bytePlainAndSalt.length; i++) { // 비밀번호와 솔트 넣기
if(i < bytePlain.length) { // 바이트 플레인 길이만큼 채워넣고
bytePlainAndSalt[i] = bytePlain[i];
} else { // 플레인 길이를 오버하면 그 뒤에 솔트를 채워넣는다.
// i - bytePlain.length은 예를들어 i가 6이면 6-6이 되어서 0번째 배열 내용을 소환한다.
bytePlainAndSalt[i] = bytesalt[i - bytePlain.length];
}
}
System.arraycopy(bytePlain, 0, bytePlainAndSalt, 0, bytePlain.length);
// 매개변수 ; 첫번째 넣을배열, 두번째 넣을배열 시작위치, 세번째 받을배열, 네번째 받을배열 시작위치, 다섯번째 넣을길이
System.arraycopy(bytesalt, 0, bytePlainAndSalt, bytePlain.length, bytesalt.length);
for (byte b : bytePlainAndSalt) {
System.out.print(b + " ");
}
try {
MessageDigest md = MessageDigest.getInstance("SHA-256"); // SHA-256암호화 객체 생성
md.update(bytePlainAndSalt); // md 객체 안에 세팅
byte[] bytedata = md.digest(); // md 객체에서 데이터 받아오기
// StringBuffer 동기화 기능이 있어서 여러 객체가 접근하지 못한다. 임계구역
StringBuffer sb = new StringBuffer();
for (int i = 0; i < bytedata.length; i++) {
sb.append(Integer.toHexString((bytedata[i] & 0xFF) + 256).substring(1));
}
System.out.println(sb.toString());
} catch (Exception e) {
}
}
}
결과
'Web > Jsp' 카테고리의 다른 글
상세보기시 조회수 증가 (0) | 2020.06.09 |
---|---|
한 페이지에 게시물 3개씩 뿌리기 (0) | 2020.06.09 |
유튜브 업로드 오류 잡기 (0) | 2020.06.09 |
Jsoup HTML파싱 // 미리보기 (0) | 2020.06.09 |
200608 블로그만들기 7 // 상세보기 / 페이지수정 / 회원정보수정 / a태그와 자바스크립트 (0) | 2020.06.08 |