CIDs are not plain hashes of the data, we first chunk and layout the data in a unixfs merkle tree.
This enable parallel incremental verification, streaming and seeking.
- merkleization - Where does ipfs store the pathing data that resolves the content? - Ethereum Stack Exchange
- Discord ( ipfs )
If you really want to use your sha256 hashes as-is there is a PoC of doing incremental verification here:
Note that sha256 is not a merkletree so the performance ceiling is worst (hopefully not that bad) and there would be no support for seeking, fetching random file offsets or streaming the file (all merkletree can do), actually this would stream the file but backward.
This would need a some work but could be done.