대칭키와 공개키 모두 양방향 암호화 방식이라는 공통점을 가지고 있습니다.
대칭키는 암호화와 복호화 과정 모두를 하나의 키로 진행하는 방식입니다. 따라서 한개의 커넥션 당 새로운 키가 필요하며, 키를 전송하는 과정에서 탈취될 경우 보안상의 위험이 있습니다.
공개키의 경우 암호화는 공개된 키를 이용하여 진행하고 복호화 과정은 수신자의 private 키값을 이용하여 진행하기 때문에 중간에 데이터가 탈취 되더라도 암호화 되어 있으며 수신자만이 복호화 과정을 수행할 수 있습니다. 예시로는 SSH 통신에 사용되는 RSA가 있습니다.
객체지향 프로그래밍의 설계 원칙은 SOLID로 널리 알려져 있습니다.
단일 책임 원칙(Single Responsibility Principle, SRP)은 하나의 클래스가 하나의 책임만 가져야 한다는 것을 의미합니다.
개방 폐쇄 원칙(Open Closed Principle, OCP)은 확장에 열려있고 변경에 닫혀있어야 함을 의미합니다. 새로운 변경사항이 발생 했을 때, 유연하게 코드를 추가 또는 수정 할 수 있으며 객체를 직접 수정하지 않고도 변경사항을 적용할 수 있도록 설계해야 한다는 의미입니다.
리스코프 치환 원칙(Liskov Subsitution Principle, LSP)은 객체는 하위 타입의 인스턴스로 바꿀 수 있어야한다는 것을 의미합니다.
인터페이스 분리 원칙(Interface Segragation Principle, ISP)은 범용 인터페이스 하나보다 특정 클라이언트를 위한 여러개의 인터페이스를 만드는 것이 더 좋다는 것을 의미합니다.
의존 관계 역전 원칙(Dependency Inversion Principle, DIP)은 구체화가 아니라 추상화에 의존해야한다는 것을 의미합니다. 실제 구현체가 아니라 역할을 의미하는 인터페이스에 의존해야 함을 의미합니다.]