2011-11-25 3 views
3

몇 가지 암호화 및 암호 해독 방법이 있는데 두 가지 다른 클래스에서 사용할 수 있기를 원합니다.몇 가지 메소드를 두 개의 다른 클래스에서만 볼 수있게하려면 어떻게해야합니까?

물론 공개적으로 공개하고 싶지는 않습니다. 그렇다면 누구나 누구에게 전화를 걸 수 있습니까? 이 메소드를 두 개의 특정 클래스 및 다른 곳에서 볼 수있게하려면 어떻게해야합니까?

편집 : 다른 클래스가 이미 다른 클래스를 확장 중이므로 클래스를 확장 할 수없는 경우 어떻게해야합니까?

+1

공개 또는 비공개로 설정하면 보안 수준이 낮아진다는 것을 의미하는지 확실하지 않습니다. 어떤 진정한 의미에서는 확실히 아닙니다. Java 클래스 가시성 옵션은 '언어 기반 보안'솔루션이 아닙니다. – Gian

+0

하지만 내가하고있는 일은 DB에 저장하기 위해 사용자의 암호를 암호화하는 것입니다. 이것은 함수를 통해 이루어진다. 이 함수가 보이면 라이브러리를 사용하는 사람이 DB 테이블을보고 해독 함수를 호출 할 수 있습니다. 그러나이 메서드가 private 인 경우 코드 내에서만 호출 할 수 있으므로 외부에서 사용할 수 없습니다. 이것은 내 생각의 일종이었습니다 ...이 점에있어서 올바른 해결책은 무엇입니까? – Larry

+2

아니요, 정확한 해결책이 아닙니다. 메서드 가시성은 네임 스페이스를 편리하게합니다. 코드는 실제 머신의 메모리에있는 실행중인 가상 머신에 있습니다. 데이터베이스는 여전히 직접 액세스 할 수 있습니다. 누구든지 데이터베이스 테이블에있는 내용을 읽고 그에 따라 행동 할 수 있다고 가정해야합니다. 이것은 대부분 암호화 된 암호를 저장하는 것 또는 암호의 단방향 암호 해시를 더 잘 포함합니다. 어디에서나 '암호 해독'기능 (예 : Java 바이트 코드)이 존재하는 경우 적절하게 동기를 부여받은 공격자가 실행할 수 있다고 가정합니다. – Gian

답변

2

보호 된 메소드를 만들어 동일한 패키지에 두 클래스를 만들어야합니다. 다른 패키지에 다른 클래스를 생성합니다. protected 메소드는 동일한 패키지에있는 하위 클래스에 적용 가능합니다. 또한 생성 된 2 개의 클래스에서 메소드 클래스를 확장합니다.

+0

보호 된 메소드는 다른 패키지의 하위 클래스에서도 액세스 할 수있다. 동일한 패키지가 필요 없다. –

+0

NO 수정자는 해당 패키지에 대해서만 액세스하므로 수정 자없이 메소드를 작성하는 것이 좋습니다. –

+0

고맙습니다. 수업을 연장 할 수 없다면 어떻게 될까요? 이미 다른 수업을 연장하고 있습니까? – Larry

2

클래스가 동일한 패키지의 일부인 경우 패키지를 비공개 (즉 수정 자 없음)로 만들 수 있습니다. "Package Private"또는 "Default Access"메소드는 선언 된 패키지에서만 사용할 수 있으며 클래스의 API에 포함되지 않습니다. 메소드의 선언에 수정자를 두지 않음으로써 메소드 패키지를 private으로 선언합니다.

Modifier | Class | Package | Subclass | World 

public  | Y | Y | Y  | Y 

protected | Y | Y | Y  | N 

no modifier | Y | Y | N  | N 

private  | Y | N | N  | N 
관련 문제