
@Configuration
@EnableWebSecurity
public class SecurityConfig {
□ 암호화 부분 빈 등록
@Bean
public PasswordEncoder getPasswordEncoder() {
return new BCryptPasswordEncoder();
}
□ 스프링 시큐리트에는 로그인 기능등 많은 기능들이 있지만
□ 우리는 암호화만 사용할 것 이므로, 기본적인 다른 기능들은 모두 비활성화(disable) 한다.
@Bean
public SecurityFilterChain filteChain(HttpSecurity http) throws Exception {
http.httpBasic().disable();
return http.build();
}
@RestController
public class EncoderController {
Logger logger = LoggerFactory.getLogger(getClass());
□ 아까 등록 한 빈 사용
@Autowired PasswordEncoder encoder;
private String hash ="";
@GetMapping(value="/encode/{msg}")
public Map<String, String> encode(@PathVariable String msg){
logger.info("평문(plain text) - "+msg);
□ encoder.encode(msg)를 사용하는 이유는 메시지를 해싱하여 보안성을 높이고, 메시지를 일관된 형식으로 표현하기 위함
hash = encoder.encode(msg);
logger.info("암호문(encode text) - "+hash);
□ 같은 평문을 넣어도 암호문은 그때 그때 달라진다
□ 암호화 시 sault 라는 값을 넣어서 암호화 하기 때문이다.
□ 그래서 평문을 암호화 하여 기존 암호화 문구와 비교하는 방식으로 암호문을 풀어낼 수 없다.
Map<String, String> map = new HashMap<String, String>();
map.put("plain", msg);
map.put("encoded", hash);
return map;
}
□ encoder.matches(평문값,암호문값)를 사용하여 파악
@GetMapping(value="/decode/{msg}")
public Map<String, Boolean> decode(@PathVariable String msg){
logger.info("평문(plain) = "+msg);
□ encoder.matches(평문값,암호문값)를 사용하여 파악
boolean seccess = encoder.matches(msg, hash);
logger.info("일치 여부 확인 : "+seccess);
Map<String, Boolean> map = new HashMap<String, Boolean>();
map.put("match", seccess);
return null;
}
□ 결과값
[36mkr.co.gudi.controller.EncoderController [0;39m [2m:[0;39m 평문(plain) = pass1
EncoderController [0;39m [2m:[0;39m 일치 여부 확인 : falsa
EncoderController [0;39m [2m:[0;39m 평문(plain) = pass
EncoderController [0;39m [2m:[0;39m 일치 여부 확인 : true
파일업로드 / 텍스트 pdf로 변환&저장 / 출력해주는 기능

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="res/style.css" />
<link rel="stylesheet" href="richtexteditor/rte_theme_default.css" />
<script type="text/javascript" src="richtexteditor/rte.js"></script>
<script type="text/javascript" src='richtexteditor/plugins/all_plugins.js'></script>
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
□ link rel 태그에서 필요한 파일 확인 후 res 파일 / richtexteditor 파일 추가

□ src="data:image/png;base64 ▼
※ 드래그해서 이미지 첨부 방식 ▼
□ data:image 방식 : 이미지를 ba64 인코딩하여 문자열화 하는 방식