본문 바로가기

Java & SpringFramework

Jasypt PBE 암호화/복호화 (PBEWITHSHA256AND256BITAES-CBC-BC) 암호화방식 = PBEWITHSHA256AND256BITAES-CBC-BC 암호화 StandardPBEStringEncryptor pbeEnc = new StandardPBEStringEncryptor();pbeEnc.setProvider(new BouncyCastleProvider());pbeEnc.setAlgorithm("PBEWITHSHA256AND256BITAES-CBC-BC");pbeEnc.setPassword("1234567");return pbeEnc.encrypt(message); 복호화 StandardPBEStringEncryptor pbeEnc = new StandardPBEStringEncryptor();pbeEnc.setProvider(new BouncyCastleProvider()).. 더보기
Seed128 파일 암호화/복호화 SEED 암호화 할 때 0x00 갯수를 맞춰줘야한다. FileStream으로 파일을 읽어왔을 때 바이트 사이즈에 맞춰 뒤에 0x00이 붙어 들어온다. (스트림에서 읽어올 byte 사이즈가 16배수면 OK.) 제일 마지막 읽어들인 것을 저장하고서 뒤에 0x00을 붙인 갯수를 저장한다. (1byte = 256까지표현가능) 복호화 할 때 파일사이즈를 스트림을 읽어올 byte 사이즈로 나눠 0x00 갯수를 저장한 바이트 전까지 읽어온다. 하나씩 읽어와 파일의 끝이 나올 때 까지 0x00 갯수를 센다. 마지막 읽어온 스트림에서 0x00의 갯수만큼 제외하고 write한다. SeedFile Class package seed; import java.io.File;import java.io.FileInputStream;.. 더보기
Seed 암호화/복호화 Seed 클래스에 추가 /** * XOR 메서드 */protected static void exclusiveOR(byte[] value1, byte[] value2) {for (int i = 0; i < Seed.SeedBlockSize; i++) {value1[i] = Integer.valueOf(value1[i] ^ value2[i]).byteValue();}} //키 값protected static byte[] key = new byte[Seed.NoRounds]; /** * 암호화에 사용할 키 지정 (byte[16]) */public void setKey(byte[] key) {Seed.key = key;} Seed암호화 받는 곳 http://seed.kisa.or.kr/iwt/ko/bbs/Ego.. 더보기
SHA-512 암호화 코드 public static String encryptSHA512(String data) {String afterData = StringUtils.EMPTY;try {MessageDigest sha = MessageDigest.getInstance("SHA-512");sha.update(data.getBytes());StringBuffer sb = new StringBuffer();for (byte b : sha.digest()) {sb.append(Integer.toHexString(0xff & b));}afterData = sb.toString();} catch (Exception e) {e.printStackTrace();}return afterData;} 더보기
JMX 세션수, 세션아이디리스트 가져오기? try {JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9999/jmxrmi");JMXConnector jmxc = JMXConnectorFactory.connect(url);MBeanServerConnection mbsc = jmxc.getMBeanServerConnection();ObjectName mbeanName = new ObjectName("Catalina:host=localhost,path=/,type=Manager"); Object value = mbsc.getAttribute(mbeanName, "activeSessions");System.out.println("activeSessions = ".. 더보기
트랜잭션(@Transactional) 무시 @Transactional 는 propagation = Propagation.REQUIRED 과 같음 @Transactional(propagation = Propagation.REQUIRED)All or nothing(부모 트랜잭션 내에서 실행, 부모 트랜잭션이 없으면 새로운 트랜잭션 생성) @Transactional(propagation = Propagation.REQUIRES_NEW)부모 트랜잭션을 무시하고 무조건 새로운 트랜잭션이 생성 참조 : http://openframework.or.kr/framework_reference/spring/ver2.x/html/transaction.html 더보기
POST형식 BASE64인코딩해서 파일다운로드 하기 Server헤더에 content-length 값을 파일 사이즈가 아닌 base64인코딩 후 사이즈를 넣어줘야함base64인코딩 할 경우 파일사이즈*(4/3) = content-length값임.그냥 content-length값 설정 안하면됨. String fileNm = (String) model.get("fileNm");File file = new File((String) model.get("filePath"));long fileSz = file.length();res.setStatus(HttpServletResponse.SC_OK);response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");res.setHe.. 더보기
LAST_INSERT_ID . . . SELECT LAST_INSERT_ID() mybatis의 insert쿼리 안에 넣어주면 auto_increament로 설정된 컬럼의 값을 가져올 수 있다. 더보기
[SpringFramework] Spring+Mybatis 프로젝트 구성 pom.xml4.0.0com.granyanhNeedHelpwar1.0.0-BUILD-SNAPSHOT1.74.0.6.RELEASE1.8.11.7.7org.springframeworkspring-context${org.springframework-version}commons-loggingcommons-loggingorg.springframeworkspring-webmvc${org.springframework-version} org.aspectjaspectjrt${org.aspectj-version} org.slf4jslf4j-api${org.slf4j-version}org.slf4jjcl-over-slf4j${org.slf4j-version}runtimeorg.slf4jslf4j-log4j12${org.sl.. 더보기