Is it a good idea to store some sensitive data on the blockchain contracts? For instance, i want to make a contract that stores vouchers (that cost real $$) and once the user pays to the contract for the voucher, the voucher is sent to the user. Let's imagine that the vouchers are just random numbers. Are the vouchers secure on the contract in this case? I'm asking this because i've seen some controversial claims about sensitive data posted on blockchain. First one being the public image that everything is public on the blockchain, hence how the blocks are being validated. The second being that data is secure and strongly hashed which makes me wonder if this type of contract can work out. Thanks in advance, I'm new to blockchains and very interested in learning about this technology.
Data in the blockchain is public and everyone can see it.
It is "secure" in the sense that it is computationally very difficult to modify the data later, without making it obvious that you have done so. It is also unlikely to be deleted, since a large number of computers store the entire blockchain.
The hashing provides a certificate that a large amount of computation was done using this particular data. Someone who wants to claim that they have the authentic data would have to do even more computation. But the hashing does not encrypt the data in any way; the data itself remains perfectly readable (in fact, this is essential to being able to verify it).
So such data is "secure" against tampering or loss, but not against being read.