https://github.com/exweb3/ex_keccak
Elixir library for computing Keccak SHA3-256 hashes using a NIF built tiny-keccak Rust crate.
https://github.com/exweb3/ex_keccak
Last synced: about 1 month ago
JSON representation
Elixir library for computing Keccak SHA3-256 hashes using a NIF built tiny-keccak Rust crate.
- Host: GitHub
- URL: https://github.com/exweb3/ex_keccak
- Owner: ExWeb3
- License: apache-2.0
- Created: 2020-08-14T03:25:40.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2025-01-06T14:57:36.000Z (5 months ago)
- Last Synced: 2025-03-29T09:11:39.423Z (about 2 months ago)
- Language: Elixir
- Size: 1.36 MB
- Stars: 26
- Watchers: 3
- Forks: 20
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# ExKeccak
[](https://github.com/tzumby/ex_keccak/actions/workflows/ci.yml)
ExKeccak is a NIF that wraps the KECCAK-256 function from the [tiny-keccak](https://github.com/debris/tiny-keccak) Rust library. KECCAK-256 is used by Ethereum.
## Installation
The package can be installed by adding `ex_keccak` to your list of dependencies in `mix.exs`:
```elixir
def deps do
[
{:ex_keccak, "~> 0.7.6"}
]
end
```### Force compilation
This library includes pre-compiled binaries for the native Rust code. If you
want to force-compile the Rust code, you can add the following configuration
to your application:```
config :rustler_precompiled, :force_build, ex_keccak: true
```You also need to add Rusler to your dependencies:
```
def deps do
[
{:ex_keccak, "~> 0.7.6"},
{:rustler, ">= 0.0.0", optional: true}
]
end
```## Usage
To calculate KECCAK-256 hash, use `ExKeccak.hash_256/1` function. It returns `result` on success:
```elixir
<<28, 138, 255, 149, 6, 133, 194, 237, 75, 195, 23, 79, 52, 114, 40, 123, 86, 217, 81, 123, 156, 148, 129, 39, 49, 154, 9, 167, 163, 109, 234, 200>> = ExKeccak.hash_256("hello")
```And it returns `ArgumentError` is provided data is not binary
## Contributing
1. [Fork it!](https://github.com/tzumby/ex_keccak)
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request## License
ExKeccak is released under the Apache-2.0 License.