2016-07-31 2 views
0

나는 새 사용자의 ID와 패스를 저장 내 작은 게임에서 다음과 같은 세 가지 라인이있다 :Java : 간단한 텍스트 파일 암호화?

불행하게도
Properties prop = new Properties(); 
prop.setProperty(id, pass); 
prop.store(new FileOutputStream(new File("path/to/project/src/properties.data")), ""); 

난 단지 속성 파일 확장자를 변경하여 모든 사용자를 TXT하는 것으로 나타났습니다 암호는 누구나 볼 수 있고 읽을 수있게되며, 이는 내가 정말로 좋아하지 않는 것입니다. 어떤 방법 으로든 파일을 암호화하는 쉬운 방법을 알려주십시오.

나는 이것에 대해 이미 조사했지만 답변이 내 요구에 맞지 않는다. 나는 게임 파일이 가장 큰 해커에 의해 공격받을 것이라고 기대하지 않는다. 따라서 AES 나 다른 큰 대중 도서관을 너무 많이 사용하게 될 것이다. 나는 말할 것이다. 어떻게 생각해?

+9

** 비밀번호의 경우 ** 해싱 ** 암호화를 사용해야합니다. 이 목적으로 bCrypt와 같은 것을 사용할 수 있습니다. –

+0

http://www.mindrot.org/projects/jBCrypt/ 찾았습니다. 나에게 시원하게 보인다 –

+2

암호화 대신 해싱을 제안 할만한 정보가 충분하지 않습니다. 저장된 암호를 사용하여 원격 서버에 로그인합니까? 그렇다면 해시가 작동하지 않습니다. – erickson

답변

3

먼저 확장자가 .txt 또는 .data이거나 그 밖의 것이 무엇이든 상관없이 누구나 사용자의 암호 파일을 읽을 수 있습니다. 확장 기능은 파일을 열 프로그램을 결정하는 Windows 트릭이지만 내용에는 아무런 영향을 미치지 않습니다.

암호 파일을 암호화하려면 암호 및/또는 암호가 필요하므로 저장 위치와 방법을 알아야합니다. 방금 문제를 연기합니다.

파일에 플레이어의 이름과 비밀번호가있는 경우 Spider의 조언 인 @Boris로 이동하십시오. (암호화 된) 비밀번호를 저장하는 대신 암호 해시를 저장하십시오. 누군가 로그인 할 때 입력 된 암호의 해시를 계산하고 저장 한 해시와 비교하십시오. 동일하면 사용자가 올바른 암호를 입력했습니다. 이를 수행하는 방법은 this question and the accepted answer을 참조하십시오.

1

다음은 비밀번호를 안전하게 저장하는 훌륭한 방법입니다. 예제는 C#을하지 자바에 있지만 여전히 도움이 토론이다 : 나는 또한 강하게는보다 일반적인 개요 마이클 하워드와 데이비드 르블랑에 의해 도서 "소프트웨어 보안의 24 가지 대죄"를 추천 https://blog.mking.io/password-security-best-practices-with-examples-in-csharp/

일반적인 보안 버그 및이를 방지하는 방법에 대해 설명합니다.

0

나는 비슷한 문제에 직면했고 파일에 AES 암호화 문자열을 쓰려고했다. (내 경우 사용자가 관리자로부터 암호화 된 키를 가져 와서 속성 파일에 넣으라는 요청을 받았기 때문에 암호를 암호화하는 방법을 제공했다. 그들도) 내가 그것을 읽고있는 방법으로 해독합니다.