Encapsulation means to protect data in an object by making data members protected or private in a class. The user can change the state of an object but the user can not directly modify the object. This ensures that the object will be in a stable condition. In encapsulation both information structure and implementation details are hidden from the outside world.
Information hiding means hiding the object details (data and behaviour) from the users. Data hiding is an extreme version of encapsulation where you not only don’t want the user to access the data members, but you also don’t even want them to be able to see what they are. Information hiding is achieved by using encapsulation.