{"id":19056179,"url":"https://github.com/webdollar/argon2-gpu","last_synced_at":"2025-04-24T04:34:21.310Z","repository":{"id":92686256,"uuid":"143547959","full_name":"WebDollar/argon2-gpu","owner":"WebDollar","description":"GPU is unfriendly for WebDollar - argon2-gpu for WebDollar","archived":false,"fork":false,"pushed_at":"2018-08-17T13:10:38.000Z","size":295,"stargazers_count":13,"open_issues_count":0,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-18T13:09:37.114Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WebDollar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-08-04T17:13:38.000Z","updated_at":"2024-01-21T03:59:51.000Z","dependencies_parsed_at":null,"dependency_job_id":"dcf0b821-f734-4da6-b5d0-51019d3558d3","html_url":"https://github.com/WebDollar/argon2-gpu","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WebDollar%2Fargon2-gpu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WebDollar%2Fargon2-gpu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WebDollar%2Fargon2-gpu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WebDollar%2Fargon2-gpu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WebDollar","download_url":"https://codeload.github.com/WebDollar/argon2-gpu/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250566092,"owners_count":21451225,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-08T23:48:28.599Z","updated_at":"2025-04-24T04:34:21.296Z","avatar_url":"https://github.com/WebDollar.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tutorial for Node-WebDollar to mine with GPU (unfriendly)\n\n## Install cmake new version\n\n```\n    cmake\n    https://askubuntu.com/questions/829310/how-to-upgrade-cmake-in-ubuntu\n```\n\n## Install opencl headers\n\n```\napt-get install opencl-headers\nsudo apt-get install ocl-icd-libopencl1\n\nsudo ln -s /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 /usr/lib/libOpenCL.so\n\n```\n\n\n\n\n## CUDA Installation:\n\n1.\n    https://gist.github.com/zhanwenchen/e520767a409325d9961072f666815bb8\n\n2. There is a mistake in the tutorial\n\n    sudo nano /etc/environment\n    Be sure you have at the end of the file **:/usr/local/cuda/bin** (it is important to have `:` at the beginning something exists before)\n\n\n## Final compile\n\n0. `git submodule update --init`\n\n1. `make`\n2. copy the `argon2-gpu-test` and `data` folder to Node-WebDollar **/dist_bundle/GPU/**\n\n\n### Tutorial how to use for manual tests\n\nns_per_hash=$(./argon2-gpu-bench \\\n                                    -t $type -v $version \\\n                                    $precompute_flag \\\n                                    -m $mode -d $device -k $kernel \\\n                                    -b $batch_size -s $samples \\\n                                    -T $t_cost -M $m_cost -L $lanes \\\n                                    -o ns-per-hash --output-mode mean)\n                                ret=$?\n\n\n./argon2-gpu-bench -t d -v 1.3 -m cuda -d 0 -k by-segment -b 50 -s 5 -T 2 -M 256 -L 2 -o ns-per-hash --output-mode mean\n\n\n./argon2 Satoshi_is_Finney -d -t 2 -m 8 -p 2 -e -l 32\n\n\n./argon2-gpu-test -m opencl -d 0\n\n\n\n\n# argon2-gpu [![build status](https://gitlab.com/omos/argon2-gpu/badges/master/build.svg)](https://gitlab.com/omos/argon2-gpu/commits/master)\n\nA proof-of-concept GPU password cracker for Argon2 hashes.\n\n[Argon2](https://github.com/P-H-C/phc-winner-argon2) is a password hashing function created by Alex Biryukov, Daniel Dinu, and Dmitry Khovratovich. It was designed to be resistant against brute-force attacks using specialized hardware, such as GPUs, ASICs, or FPGAs. In July 2015, it was announced as the winner of the [Password Hashing Competition](https://password-hashing.net).\n\nThe main goal of this project is to provide an efficient GPU implementation of Argon2 that can be used to estimate the speed and efficiency of Argon2 GPU cracking, in order to support or refute claims of its GPU cracking resistance.\n\n## Backends\n\nCurrently, the project implements two backends -- one that uses the NVIDIA's [CUDA](https://www.nvidia.com/object/cuda_home_new.html) framework and another one that uses the [OpenCL](https://www.khronos.org/opencl/) API.\n\n## Argon2 variants\n\nArgon2-gpu supports all Argon2 variants (Argon2i, Argon2d, and Argon2id) and versions (1.3 and 1.0).\n\n## Performance\n\nThe CUDA implementation can reach about 40-60 GiB/s (divide by time cost * memory cost  * 1024 B to get hashes per second) on an NVIDIA Tesla K20X. For comparison, a fast Intel Xeon processor can only reach about 10 GiB/s.\n\n## Building\n\nThis project uses the [CMake](https://cmake.org/) build system.\n\nFirst, if you haven't cloned the repository using `git clone --recursive`, you need to run:\n\n```bash\ngit submodule update --init\n```\n\nThen, to prepare build:\n\n```bash\ncmake -DCMAKE_BUILD_TYPE=Release .\n```\n\nFinally, just run `make` to build the code. Note that to use the OpenCL backend, you need to have the `data` subdirectory in the working directory (if you have the binaries in a different directory, just create a symlink using `ln -s \u003cpath_to_repo\u003e/data data`).\n\n### Building without CUDA support\n\nTo build without CUDA support, just add `-DNO_CUDA=TRUE` to the CMake command line. In this case the CUDA backend will always report 0 devices.\n\nIf CMake fails to find a usable CUDA installation, the project will be automatically built without CUDA support.\n\n## CUDA kernel variants\n\nThe CUDA implementation has three variants, which are currently implemented in separate branches:\n\n * `master` -- uses only shared memory operations; is somewhat slower than the other two\n * `warp-shuffle` -- uses warp shuffle instructions; doesn't use shared memory at all\n * `warp-shuffle-shared` -- like `warp-shuffle`, but uses less regsters (compensated by using shared memory); this one is about as fast as `warp-shuffle`, but can be a little slower or faster in some edge cases\n\nIn addition, Argon2i and Argon2id implementations support a special 'precompute' mode, which makes them as fast as Argon2d, but uses a bit more memory (depending on time cost and memory cost). This mode is also supported by the OpenCL backend and can be enabled/disabled at runtime.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebdollar%2Fargon2-gpu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwebdollar%2Fargon2-gpu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebdollar%2Fargon2-gpu/lists"}