2015년 12월 3일 목요일

blogspot 에 코드 이쁘게(?) 삽입하기

출처 : https://github.com/google/code-prettify

1. 블로그 설정 > 템플릿 > HTML 편집 클릭

2. <head></head> 태그 사이에 아래 js 링크 삽입
<script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js?lang=css&amp;skin=sunburst"></script>

3. 템틀릿 저장

4. 글쓰기 > html 편집으로 전환

5. 코드 시작과 끝에 <pre class="prettyprint"> 과 </pre> 삽입

6. 게시 후 확인


ps. 기본 설정은 line numbering 이 5줄 마다 표시가 된다.
매 줄 마다 line numbering 을 하려면 아래 css 를

레이아웃 > 템플릿 디자이너 > 고급 > css 추가 에 추가한다.

li.L0, li.L1, li.L2, li.L3,
li.L5, li.L6, li.L7, li.L8
{ list-style-type: decimal !important }

andorid <-> php AES256 en/decode

출처 : http://www.imcore.net/encrypt-decrypt-aes256-c-objective-ios-iphone-ipad-php-java-android-perl-javascript-python/

android AES256Util class

public class AES256Util {
    public static byte[] ivBytes = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };

    public static String AES_Encode(String str, String key) throws java.io.UnsupportedEncodingException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException {

        byte[] textBytes = str.getBytes("UTF-8");
        AlgorithmParameterSpec ivSpec = new IvParameterSpec(ivBytes);
        SecretKeySpec newKey = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
        Cipher cipher = null;
        cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        cipher.init(Cipher.ENCRYPT_MODE, newKey, ivSpec);

        return Base64.encodeToString(cipher.doFinal(textBytes), 0);
    }

    public static String AES_Decode(String str, String key) throws java.io.UnsupportedEncodingException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException, IllegalBlockSizeException, BadPaddingException {

        byte[] textBytes =Base64.decode(str,0);
        //byte[] textBytes = str.getBytes("UTF-8");
        AlgorithmParameterSpec ivSpec = new IvParameterSpec(ivBytes);
        SecretKeySpec newKey = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        cipher.init(Cipher.DECRYPT_MODE, newKey, ivSpec);
        return new String(cipher.doFinal(textBytes), "UTF-8");
    }
}

php function
$AES256KEY = "12345678123456781234567812345678";

function AES_Encode($plain_text) {
    global $AES256KEY;
    return base64_encode(openssl_encrypt($plain_text, "AES-256-CBC", $AES256KEY, true, str_repeat(chr(0), 16)));

}

function AES_Decode($base64_text) {
    global $AES256KEY;
    return openssl_decrypt(base64_decode($base64_text), "AES-256-CBC", $AES256KEY, true, str_repeat(chr(0), 16));
}

webview 로 데이터 전달
try {
    encoeText = Uri.encode(AES256Util.AES_Encode(palinText, aes256key));
} catch (Exception e) {}

String postdata = "enText="+encodeText;
webView.postUrl(URL, postdata.getBytes());

webview 로 전달된 데이터가 복호화가 안된다면 전달하는 값에 +가 포함되어 그럴수도 있더라... 그래서 Uri.encode() 로 전달했다.

JAVA GetLocalpAddress class

public class GetLocalIpAddress {
    public static String GetLocalIpAddress() {
        try {
            for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {
                NetworkInterface intf = en.nextElement();                
                for (Enumeration enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
                    InetAddress inetAddress = enumIpAddr.nextElement();                    
                    if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) {
                        return inetAddress.getHostAddress();                    
                    }
                }
            }
        } catch (SocketException ex) {
            ex.printStackTrace();        
        }
        return null;    
    }
}