Ethereum uses Keccak-256 to derive addresses from public keys.
After an Ethereum account’s public key is obtained, the protocol hashes it with Keccak-256. The final 20 bytes of that hash form the account address, conventionally written as a 40-character hexadecimal string with a “0x” prefix.
Ethereum’s Keccak-256 is closely related to SHA-3, but it is not exactly the finalized SHA-3 standard. The difference comes from padding rules adopted during standardization. This is a frequent source of confusion: software labelled SHA3-256 may not produce the same result as Ethereum’s Keccak-256.
An Ethereum address does not itself reveal whether it belongs to a user-controlled account or a smart contract. Both types use the same address format, and ownership or control depends on the corresponding private key or contract code.