Not only can you add cryptographic service implementations by different vendors to the framework, but, for example, the signature service implementation by one vendor will work seamlessly with the signature service implementation by another vendor as long as both vendors' implementations use the same signature algorithm. Given how implementations can vary from vendor to vendor, the flexibility built into the JCA framework lets you choose an implementation that best meets your application requirements. JCE 1.2 features are not covered in this article. JCA Cryptographic Services Cryptographic services include message digests, encryption keys, digital signatures, and algorithm parameters. A message digest is a unique and reliable hash of the message that lets the receiver know that the message received is the exact same message that was sent.
Every message digest is unique and in no way reveals anything about the message contents.
On the sending side, the digest is calculated and sent with the message. On the receiving side, the message hash is calculated again and compared with the hash received with the message. If the two hashes are the same, it is very unlikely the message was altered on its way to its destination. In JDK 1.2 the MessageDigest class subclasses from the MessageDigestSpi class for backwards compatibility with JDK 1.1. The key value is known only to the sender and receiver of the data.