Brute force algorithm using CUDA

I am new to CUDA programming and I have written a code under c# which brute forces passwords using SHA256.
Basically what I want to create in CUDA is :

  1. User will input the SHA256 hashed version of the string.
  2. The program will generate a random string based from a set of characters [A-C] and Numbers [0-9], and the user will also get to dictate the length of the string to be generated (ex, length 8).
  3. The program will then hash the randomly generated string and compare it with the provided hashed string before until it finds the correct unhashed version.
  4. The program should also display the amount of hashes per second and how many strings have been tested.

Is there an existing or a library for this? Thanks!