외부 파일 (병 내부)을 안전하게 저장할 수있는 방법이 있습니까? Java 파일은 .class 파일로 컴파일되고 읽을 수는 없습니다.텍스트 파일을 안전하게 JAR에 저장
나는이 meganism을 사용하여 쿼리를 보관하는 SQL 파일을 저장할 계획이지만, jar 파일을 추출 할 때 읽을 수 있도록하고 싶지는 않습니다. 외부 파일은 사전이므로 우리가 구문 강조를 문자열에 넣는 대신 개발하는 동안 발생합니다.
외부 파일 (병 내부)을 안전하게 저장할 수있는 방법이 있습니까? Java 파일은 .class 파일로 컴파일되고 읽을 수는 없습니다.텍스트 파일을 안전하게 JAR에 저장
나는이 meganism을 사용하여 쿼리를 보관하는 SQL 파일을 저장할 계획이지만, jar 파일을 추출 할 때 읽을 수 있도록하고 싶지는 않습니다. 외부 파일은 사전이므로 우리가 구문 강조를 문자열에 넣는 대신 개발하는 동안 발생합니다.
jar 파일은 대부분 .zip 파일이기 때문에 원하는 파일을 넣을 수 있습니다. 내장 된 암호화가 없으므로 SQL 파일을 읽을 수 없도록 만들려고하면 암호화 한 다음 코드에서 암호화를 해제해야합니다. "외부 파일은 사전입니다. 왜냐하면 문자열을 입력하는 대신 개발하는 동안 구문 강조를 사용하기 때문입니다."
예, 사람들은 항상이 작업을 수행합니다. 항아리에 파일을 추가 한 다음
getResourceAsStream으로 액세스하면됩니다. Maven으로 빌드하면 src/main/resources에 그 파일들을 올려 놓기 만하면됩니다.
물론 Jar에 넣을 수 있습니다. 일단 거기에 도착하면 ClassLoader의 getResourceAsStream 메소드를 사용할 수 있습니다.
도전 과제는 다른 사람들이 추출하는 것을 방지하는 것입니다. 코드가이를 읽을 수 있다면 다른 사람도 읽을 수 있습니다. 여기에 귀하의 요구 사항은 무엇입니까?
항아리 안의 파일을 가져 오는 것이 문제가되지 않습니다 ... 항아리를 추출하는 사람들이 그 항아리를 읽을 수 없기를 바랍니다. – ferdyh
메모장에서 .class 파일을 열어 보았습니까? 모든 문자열 값을 똑바로 읽을 수 있습니다. 디버거가 필요하지 않습니다. –
@Ferdy "읽을 수 없음"은 불가능합니다. 그러나 당신은 그것을 힘들게 만들 수 있습니다. 문제는 다른 사람들에게 힘들 때도 당신에게 어려울 수 있다는 것입니다. –
jar가 보유하고있는 코드에서 해당 sql 파일을 사용하면 안전하게 만들 수 없습니다. 유일한 방법은 일부 키를 사용하여 암호화하는 것이기 때문에 SQL 파일을 읽는 코드는 해당 키와 Java 디버거를 사용하여 액세스 할 수있는 키를 알아야합니다. – khachik
FYI - 클래스 파일 코드를 읽을 수있는 디 컴파일러가 있습니다. JD-GUI를 참조하십시오. 클래스 파일이기 때문에 읽을 수 없게 만듭니다. – Sean