** 코드

private String encryption(String text) {

    try{

        MessageDigest digest = MessageDigest.getInstance("SHA-1");

        digest.update(text.getBytes("UTF-8"));

        byte[] messageDigest = digest.digest();


        StringBuffer hexString = new StringBuffer();

        for(int i=0;i<messageDigest.length;i++){

            hexString.append(String.format("%02x", 0xFF & messageDigest[i]));

        }

        return hexString.toString();

    }catch (Exception e){

        e.printStackTrace();

    }

    return "error";

}



** 추가 설명

주황색으로 된 부분에 주의.

Integer.toHexString(0xFF & messageDigest[i]) 를 사용할 시 

숫자가 한 자리일 때는 한 자리로 표시하기 때문에 (8이 '08'이 아닌 '8'이 됨)

PHP에서 sha1 암호화 한 결과값과 다를 수 있음.



ex)

PHP 에서 암호문

   7fba808629a2d0be1d0f626417b301982b441ffd

String.format(...) 사용 시 추출된 암호문 (PHP에서 암호화 한 것과 동일)

   7fba808629a2d0be1d0f626417b301982b441ffd

Integer.toHexString(...) 사용 시 추출된 암호문

   7fba808629a2d0be1df626417b31982b441ffd



** 출처

http://nanstrong.tistory.com/206

https://stackoverflow.com/questions/13747489/php-sha1-not-equal-java-sha1

+ Recent posts