Interesting stuff, especially about the encryption weaknesses.
Strictly from the level of a professional programmer (I have 30 years experience), any algorithm can be broken. The limiting factor is how useful and repeatable the technique is for the decryption to be done several times.
For example, PGP can be broken with brute force and is repeatable as long as the key doesn't change. That is the important part, the key has to remain static, which is most often the case simple because adding a changing key adds a layer of complexity that can be horrendous.
The Amazon Product API has a 1 second resolution for any given key, i.e, it changes every second. While it adds to the security dramatically, it causes a lot of packets to be resent repeatedly due to the latency of the internet and missing that 1 second window. Also slight shifts in time between two different clocks will have an added impact.
While a static key does away with the extra complexity, it means the algorithm only has to be broken once, that the process can be repeated in real time with accurate results every time.
There are many examples of brute force decryption techniques used everyday that are required to be used. In my programming career, I can not count the times I've been hired to break an encrypted file by the owner because they forgot the key or because they locked themselves out of their laptop (proof of ownership was, of course, required).
If it can be made, it can be broken... Relying on encryption alone is a bad approach to security. Security by obscurity will always fail.