** 코드
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
'개발 > JAVA' 카테고리의 다른 글
AsyncTask 사용 시 주의할 점 (AsyncTask가 너무 느릴 때, 순차적으로만 실행될 때 ) (0) | 2019.02.20 |
---|