2013-05-01 2 views
1

SHA1 해시를 사용하여 데이터베이스에 암호를 입력하고 싶습니다. sha1 기능을 선택하여 phpmyadmin에서 수동으로 수행하지만 Java를 사용하여 어떻게 수행합니까?자바에서 SHA1 암호 해시

아이디어가 있으십니까? 고맙습니다!

+1

검색을 통해 좋은 리드를 찾아 냈습니까? * 많은 * 중복이 있습니다. (또한 "암호화"! = "해싱", 더 나은 검색 용어가 될 것입니다.) – user2246674

+0

* 이해 *이 회신으로 시작 : http://stackoverflow.com/a/401684/2246674 – user2246674

+0

SHA1은 해시 펑크 튼 죄송합니다 – Somar

답변

1

use java을 수행해야하는 경우 : 데이터베이스가 SHA 지원이있는 경우

import java.io.ByteArrayInputStream; 
import java.security.MessageDigest; 

public class SHACheckSumExample 
{ 
    public static void main(String[] args)throws Exception 
    { 
     MessageDigest md = MessageDigest.getInstance("SHA-1"); 
     ByteArrayInputStream fis = new ByteArrayInputStream(args[1].getBytes()); 

     byte[] dataBytes = new byte[1024]; 

     int nread = 0; 
     while ((nread = fis.read(dataBytes)) != -1) { 
      md.update(dataBytes, 0, nread); 
     }; 
     byte[] mdbytes = md.digest(); 

     //convert the byte to hex format method 1 
     StringBuffer sb = new StringBuffer(); 
     for (int i = 0; i < mdbytes.length; i++) { 
      sb.append(Integer.toString((mdbytes[i] & 0xff) + 0x100, 16).substring(1)); 
     } 

     System.out.println("Hex format : " + sb.toString()); 

     //convert the byte to hex format method 2 
     StringBuffer hexString = new StringBuffer(); 
     for (int i=0;i<mdbytes.length;i++) { 
      hexString.append(Integer.toHexString(0xFF & mdbytes[i])); 
     } 

     System.out.println("Hex format : " + hexString.toString()); 
    } 
} 

내가, 성능상의 이유로, 보는 건의 할 것입니다. 나는 을 알고 있지만 다른 시스템에 대해서는 확실하지 않습니다.

+1

SHA for password는 "성능상의 이유로"사용하면 안됩니다. 실제로 해시를 암호로 사용하지 않는 것이 좋습니다. 이것은 'MessageDigest'를 통해 SHA-1의 예를 보여 주지만 (여분의 것들이 잔뜩 있음) 데이터베이스에서 비밀번호를 해싱하는 방법의 예는 매우 좋지 않습니다. 소금 없음 - 레인보우 테이블 공격, SHA-1 - 무차별 공격. – user2246674

+0

jBCrypt를 시도하고 완벽하게 작동하지만 SHA1과 해싱하지 않는 암호로 로깅 할 수 없습니다. 내 XML 파일 "spring-security.xml"에있는이 줄로 인해 ** ** – Somar

+0

나는 그것을 간단하게 종료합니다! \t \t ** MessageDigestPasswordEncoder encoder = 새 MessageDigestPasswordEncoder ("SHA"); \t \t 문자열 해시 = encoder.encodePassword (사용자 .getPassword(), ""); ** – Somar