LOL.
"No you miss my point. See Sony was wrong."
"I got your point but it doesn't change the fact that Sony was wrong!!!"
No, the point isnt on what/who was wrong, but the type of error in itself.
The whole point of cryptography is (to make a long, long story short) to be able to transform your data in something not readable to unauthorized guys (and more, but just to summarize).
An encryption algorithm is composed by the algorithm itself, and then you have to generate its 'keys'. This is especially critical for any asymmetric encryption scheme, for various reasons.
Now, in order to generate your keys, you are always required to give some random number, in one shape or another.
Fact is, the standard dictates such numbers to be 'random', but it does NOT tell you how to make a random number, because it is impossible.
Reason is, if you knew a way to uniquely generate a fully arbitrary random number out of a seed, THAT would be your perfect encryption algorithm, as you would just make it as long as you need, 1-time XOR your message with it and game over. No crytoanalys, no cryptoattack, nothing. Game over.
most - if not all- common cryptos (and hashes) are avaialble in well coded libraries, and well implemented.
However, as the standard dictates you to have random numbers, YOU are to provide them with your pick on a random number generators.
It is not unusual that asymmetric ciphers are broken this way. As example, many years ago, a relatively well used protector was using RSA taking the random seed using the c library rand and the time function. By getting out the time of the protected executable's build, attackers were able to kill RSAs keys, getting back the random seed used to generate the keys.
Yet, the author DID NOT use a custom rsa, but a standard implementation of it!