본문 바로가기

전체

MySQL과 Java AES 128 암호/복호 동기화하기 (대칭키, 양방향) Java에서 AES 128 로 암호화한걸 MySQL 쿼리로 조회해야한다던지 DB 기존 데이터를 암호화 마이그레이션을 진행하기 위해 MySQL과 Java의 암/복호화가 필요합니다. 삽질끝에 ... MySQL은 AES 128bit만 적용이 가능합니다. 그리고 암호화모드는 ECB만 가능하며 CBC는 적용할 수 없습니다. (추가로 알아보니.!!! MySQL 5.5까지만 디폴드.. 5.6부터는 암호화 방식이 변경 가능합니다!) - MySQL 5.6부터는 block_encryption_mode 변수 값을 통해 암호화 방식을 변경할 수 있습니다. https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_block_encryption_mod..
Trim 함수를 써서 공백을 모두 제거하기 MySQL의 Trim 함수를 쓰면 문자의 양옆의 공백을 제거해줍니다. 그런데... Column의 타입이 varchar이면 trim이 제대로 적용되지 않는 현상이 있었습니다(탭, 여러 스페이스 등..) 구글링해보니..! 타입 변환을 통해 trim처리를 하면 제대로 제거되는 것을 확인했습니다. 샘플 TRIM(Char(9) FROM 컬럼명) - 이 방식을 쓰게되면 해당 컬럼을 char로 바꾼 뒤 trim을 하기 때문에 공백 문자들이 모두 제거됩니다. SELECT * FROM Foo WHERE Bar IS NOT NULL AND TRIM(Char(9) FROM Bar) '' LIMIT 10; - 뭐 이런식으로 쓸 수 있겠네요. (null도 아니고 공백도 아닌 녀석들만 조회) - 샘플 치고는 나쁜 쿼리네요.. 모..
base64 인코딩/디코딩 MySQL 5.6 이상 버전부터 있는 것 같은데.. Base64로 encode, decode를 지원하는 함수가 있었음 TO_BASE64() : encodeFROM_BASE64() : decode 참고 : http://stackoverflow.com/questions/358500/base64-encode-in-mysql
grep이나 vi에서 문자 찾을 때 시작, 끝 문자로 찾기 샘플 ^시작하는문자.*끝나는문자$ ex) .*html$ : 마지막이 html로 끝나는 내용 찾기 grep, vi / 로 빠르게 찾을 수 있음 참고 : http://unix.stackexchange.com/questions/192272/search-in-vim-for-string-starting-and-ending-with-a-pattern
Nginx의 port와 톰캣 port 연동하기 Nginx를 구축하고 내부에 Tomcat을 구축했다면 서로 port 번호가 다르게 되어 있습니다. 이 경우 Nginx가 Request를 받고 Tomcat에게 전달해야되는데 그 설정은 /nginx/conf/nginx.conf에 들어있습니다. nginx의 port는 8080, tomcat port는 9001이라면? 설정 샘플 http { ... ... server { listen 8080; ... ... location / { proxy_pass http://localhost:9001; } ... } } - nginx의 port는 8080으로 하고, proxy로 날릴 정보는 9001로 설정하면 8080 request를 nginx가 받은 후 9001로 톰캣에게 다시 전달하게 됩니다.
AES 암호화/복호화 구글링으로 관련된 정보를 찾아보니 많이 나왔다. 이 중 나에게 필요한 것만 다시 추출하여 만들어보았다. import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64; /** * @author 윤성탁 */ public class EncryptionUtils { private static final String AES_CBC_PKCS5 = "AES/CBC/PKCS5Padding"; private static final String AES = "AES"; public static String e..
RestTemplate Encoding RestTemplate을 이용해 getForObject를 하다보면 http call이 잘된다. 하지만.. http://foo.com?bar=car&fooUrl=http://paramater?go=go&key=key fooUrl을 그대로 전송하면 문제가 발생할 수 있으니 인코딩이 필요하다. 그런데 URL 쿼리스트링에 Encoding을 하게되면 문제가 발생한다. getForObject에 Url을 String 타입으로 주게되면 내부적으로 또 Encoding을 하는 듯하다. 그렇다면...? 방법은 URI 객체 사용이다. // Spring 내장 Utils 사용 String encodeFooUrl = UriUtils.encode("http://paramater?go=go&key=key", "UTF-8") URI u..
브라우저에서 PUT, DELETE method 요청하기 Restful한 URL을 만들고 API를 작성하기위해 method를 다양하게 사용하려고 노력하고 있을텐데요 Html의 form은 get과 post만 지원하기 때문에 put, delete를 사용하기에 한계가 있습니다. Spring에서 꼼수(?)를 제공하는데요. 직접 Spring이 제공하는 form을 써서 넘기셔도 되고 jQuery의 ajax를 쓴다면 input hidden을 이용할 수 있습니다. 필터 설정(java) @Bean public FilterRegistrationBean httpMethodFilter() { FilterRegistrationBean filter = new FilterRegistrationBean(); filter.setFilter(new HiddenHttpMethodFilter()..
[SpringBoot] Address already in use: JVM_Bind 간혹 Window환경에서 SpringBoot를 이용해 개발하다보면 서버 시작이 안될때가 있다. Address already in use: JVM_Bind - 에러로그 전체를 찍지 못했는데, 자세히 살펴보면 port번호도 함께 적혀있을 것이다. 이 경우 윈도우 cmd 창을 열어서 명령어를 수행한다. netstat -o -a 현재 사용 중인 port 정보를 알 수 있다. 목록에서 문제가 발생한 port를 찾고 가장 왼쪽의 PID를 기억하자 명령어를 이용해서 PID를 죽여도 되고 작업관리자 > 프로세스 > PID 정렬을 통해 찾아 종료시키면 된다. 다시 수행하면 정상 동작이 된다.
crontab second 지연 (초단위 지연) Crontab은 연동 주기가 "분"이 최소 단위다. 초 단위 컨트롤은 어떻게 하지? sleep 명령어를 이용하면 된다. */1 * * * * sleep 10; /sample/foo.sh - 매 1분에 수행 -> 10초 중단 -> 10 ~ 11초때 foo.sh 수행 흠.. 초 단위 주기는 어떻게할지 모르겠음 참조 : http://cyantai.tistory.com/11