Well it is how I would organize it but since they are separate classes I will write my method for each in their own class. Did you want to test out the program when I get SHA256 finished or as it is?
Cryptographic algorithms are a really good example of where you should learn to use the Strategy pattern or dependency injection that Yacoby brought up.
It's important to be able to "tell" the program which algorithm to use at runtime and to be able to update the program to add algorithms easily. If you get into the mode of stuffing several algorithms into one class, or putting anything into the class that isn't immediately necessary for the algorithm itself, you will end up doing a lot more work each time you have to update the program.
If a crypto algorithm class is more complicated than:
Constructor
init() // where init() may take arguments like a key or salt
append() // which feeds an array, file, stream, whatever of data into the algorithm
result() // which reads out the result
Destructor
it's too complicated. (Note that by my definition, System.Security.Cryptography.HashAlgorithm is not only too complicated, it is a travesty.)
You then use the Strategy pattern (which is really constructor-based dependency injection) or dependency injection driven by the control that selects the algorithm to instantiate a crypto algorithm of the desired class and feed it to the class that handles input and presentation.