2013-05-12 1 views
0

사용자 이름과 암호를 저장하려면 암호를 저장 한 다음 저장하십시오. 사용자가 다시 로그인하면 사용자 이름을 표시해야합니다. 사용자 이름을 해독하는 것이 얼마나 힘든지/기분인지 모르겠다. 다음은 암호화에 사용한 알고리즘입니다.Java에서 저장된 암호화 된 사용자 이름 암호 해독

public static String getEncryptedValue(String str) { 
    String password = str; 
    String algorithm = "SHA"; 
    byte[] plainText = password.getBytes(); 
    try { 
     md = MessageDigest.getInstance(algorithm); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    md.reset(); 
    md.update(plainText); 
    byte[] encodedPassword = md.digest(); 

    StringBuilder sb = new StringBuilder(); 
    for (int i = 0; i < encodedPassword.length; i++) { 
     if ((encodedPassword[i] & 0xff) < 0x10) { 
      sb.append("0"); 
     } 

     sb.append(Long.toString(encodedPassword[i] & 0xff, 16)); 
    } 

    return sb.toString(); 
} 

사용자 이름과 이메일을 암호화하는 것이 좋습니다.

답변

1

실제로 데이터를 암호화하지 않습니다. SHA 다이제스트를 해시 문자열에 사용하고 있습니다. 이 작업은 되돌릴 수 없습니다. 원본 데이터는 되돌릴 수 없습니다.

해싱 암호는 모든 응용 프로그램에서 사용되는 아주 좋은 방법입니다. 실제로 암호를 다시 가져올 필요는 없습니다. 사용자가 입력 한 암호를 저장된 암호와 대조하여 확인하면됩니다. 이렇게하려면 입력 된 문자열에 해시를 적용하고 저장된 해시와 비교하십시오.

사용자 이름과 이메일을 해시하는 것은 유용한 방법이 아닙니다. 그걸 다시 얻을 수 없으므로! 그러나 은 사용자 이름과 이메일을 암호화하고 필요할 때 해독 할 수 있습니다. 이렇게하려면 유효한 암호화/암호 해독 알고리즘을 사용할 수 있습니다.

+0

그래서 사용자의 개인 정보 보호에 영향을 미치지 않겠습니까? –

+0

@DigvijayYadav 예, 사용자 이름을 해싱하지 않으면 사용자 이름이 사용자 데이터베이스에 계속 표시됩니다. 그러나 많은 응용 프로그램에서 사용자 이름이 어떤 경우에도 표시 될 수 있으므로 사용자 데이터베이스에 숨겨도 보안/개인 정보가 크게 추가되지는 않습니다. 해쉬가 사용자 이름에 해시 될 수 있어야합니다. 해시를 상수이거나 해시 할 사용자 이름을 기반으로하는 해시를 사용할 수는 있지만 사용자 정보 만 검색 할 수 있다는 제한이 있습니다 (이미 올바른 해시를 생성 할 수 있도록) 사용자 이름을 이미 알고 있습니다. –