자료실
제목[JSP] 서명(signature) 생성 샘플코드
발급된 키가 00112233445566778899aabbccddeeff 이고 현재 URL 정보를 담은 QR코드를 자동 생성하는 jsp 예제 입니다.
1) jsp 소스에 아래 img 태그 추가
<img src="http://mqr.kr/qr/?t=
<%=request.getRequestURL()%>&r=0&j=1&w=150&m=20&lb=2a4a06<=ed1e2e&rt=155ca2&sign=<%=sign("00112233445566778899aabbccddeeff",
"t="+request.getRequestURL()+"&r=0&j=1&w=150&m=20&lb=2a4a06<=ed1e2e&rt=155ca2")%> "/>
2)Java 소스
import java.io.*;
import java.security.NoSuchAlgorithmException;
import java.nio.charset.Charset;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.security.InvalidKeyException;
public static String sign(String keyHex, String message) throws NoSuchAlgorithmException, InvalidKeyException {
final byte[] keyBytes = new byte[16];
for (int i = 0; i < 16; i++)
keyBytes[i] = (byte)Integer.parseInt(keyHex.substring(i * 2, i* 2 + 2), 16);
final Charset ascii = Charset.forName("US-ASCII");
final Mac mac = Mac.getInstance("HmacSHA256");
final SecretKeySpec key = new SecretKeySpec(keyBytes, "HmacSHA256");
mac.init(key);
final byte[] sign = mac.doFinal(ascii.encode(message).array());
String result = "";
for (final byte b : sign) {
String hex = Integer.toHexString(0xFF & b);
if (hex.length() == 1)
result += "0";
result += hex;
}
return result;
}