I really doubt that in 20 years something would not be reversed engineered or trivial by then. Moreover, patents are usually functional specifications, not algorithmic. In the rare cases where the description is vital, like perhaps crypto or coding patents, the published software already allows reverse engineering.
Isn't the actual intention of patents to publicize the invention after the 20 years has gone by?
No, that is the actual reason for a general (non-inventing) public to allow patents to exist, but that is not the point of patents.
The point of a patent is to grant a limited monopoly to a person who invests substantial resources in some innovation that was previously undiscovered; and yes, in exchange for full disclosure on what exactly the innovation is made of, they can be granted that exclusive right to collect license fees from those who needed to implement that innovation.
Reverse engineering can be a non-trivial effort. If the collective of all car manufacturers have failed to discover a novel way to make cars that (foo) and your invention is mainly a way to make cars (foo), there is no requirement to describe everything about and around the part that makes it (foo) in order to obtain the patent protection of (cars that _foo_). Those other car manufacturers then can either a) find a way to (foo) that doesn't use your (bar), b) pay you for your patented (foo/bar) tech, or c) go on selling cars that don't (foo) with a (bar). In twenty years, everyone who can make cars becomes free to use your (bar) to make their own cars that (foo).
If a (bar) that makes cars (foo) wasn't sufficiently described in the patent application then a patent should not have been granted. If the problem is that 20 years later, cars that work with a (bar) are no longer made by anyone, rendering the patent for (foo) useless, then that's a different problem and it can't be solved in the patent framework that we have now.
>In the rare cases where the description is vital, like perhaps crypto or coding patents,
This is a bit of a nitpicky thing, but patenting crypto isn't really a great way of protecting your secrets - hiding away the algorithm is basically security by obscurity. Crypto has historically been one of those things that's made stronger by more scrutiny.
Isn't the actual intention of patents to publicize the invention after the 20 years has gone by?