pooya87-I am responding to your comment only because someone has quoted you (I am otherwise ignoring you). Your comment has very little substance to it, so please learn more about mathematics before trying to pretend that you are smarter than me. The only thing that you are doing by talking that way is displaying your abhorrent attitude and complete and total lack of social awareness. Please get help. Or don't. It is not my problem.
I have no idea why you have such an aggressive and vulgar behavior just because someone disagreed with couple of your posts (even if you think it is a mistake). Unlike you I never claimed to be right, smart or an expert; nor did I ever feel the need to advertise my academic degree in every post I make!
0. Bitcoin could have just as easily used AES for its mining algorithm.
A lot of things could have been but they are not. Like Bitcoin that is
not using AES!
There is no fundamental reason that Bitcoin needed to use a cryptographic hash function rather than a block cipher for mining.
The hash function in Bitcoin is used for a lot more than just mining and it needed to be efficient. Something like AES doesn't even make sense to be used in many of those contexts.
1. SHA-256 is constructed using an encryption function. This is called the Davies-Meyer construction.~these cryptographic hash functions are built from invertible components.
SHA-2 algorithm uses the
compression function of Davies-Mayer not a cipher.
None of it warrants using the term "encryption" for hash algorithms like SHA-2 though.
(this is what happened to Iota's hash function CURL).
Case of IOTA is what happens when one tries to re-invent the wheel and creates their own cryptography function instead of using existing ones that are reviewed by many experts and are battle hardened already.
Besides if you want to talk about vulnerabilities in an algorithm used by an altcoin, there is a different board for it and you should be specific since in Bitcoin we only use SHA-2 and it doesn't have such vulnerabilities.
3. When computing the hash of something, do you always delete the file that you are hashing? If you do not, then you are running the procedure x->(x,H(x)) which is injective while the procedure x->H(x) is not injective.
Keeping the message doesn't change the fact that hash algorithms do not map messages to distinct digests.
The hash algorithms do not guarantee distinction either hence they are not injective. The only thing they guarantee is that finding a collision is difficult, otherwise according to
Pigeonhole Principle collision is guaranteed. Even without the Pigeonhole Principle, the underlying algorithm doesn't guarantee "distinct mapping" to be referred to as injective.