{"id":16831621,"url":"https://github.com/alisianoi/lyra2-java","last_synced_at":"2025-04-05T10:14:44.521Z","repository":{"id":50040671,"uuid":"96921307","full_name":"alisianoi/lyra2-java","owner":"alisianoi","description":"Subset of Lyra2 password hashing","archived":false,"fork":false,"pushed_at":"2022-12-14T20:44:50.000Z","size":751,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-02-10T20:57:36.100Z","etag":null,"topics":["cryptography","hash-algorithm","password"],"latest_commit_sha":null,"homepage":"","language":"Java","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/alisianoi.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}},"created_at":"2017-07-11T17:53:40.000Z","updated_at":"2021-09-21T18:03:07.000Z","dependencies_parsed_at":"2023-01-29T01:00:54.140Z","dependency_job_id":null,"html_url":"https://github.com/alisianoi/lyra2-java","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alisianoi%2Flyra2-java","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alisianoi%2Flyra2-java/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alisianoi%2Flyra2-java/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alisianoi%2Flyra2-java/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alisianoi","download_url":"https://codeload.github.com/alisianoi/lyra2-java/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247318746,"owners_count":20919483,"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":["cryptography","hash-algorithm","password"],"created_at":"2024-10-13T11:44:40.798Z","updated_at":"2025-04-05T10:14:44.490Z","avatar_url":"https://github.com/alisianoi.png","language":"Java","readme":"# [Lyra2][3]: a password hashing scheme\n\n[![Travis](https://img.shields.io/travis/alisianoi/lyra2-java.svg?style=flat-square)](https://travis-ci.org/alisianoi/lyra2-java)\n[![Coveralls](https://img.shields.io/coveralls/alisianoi/lyra2-java.svg?style=flat-square)](https://coveralls.io/github/alisianoi/lyra2-java)\n[![Maven Central](https://img.shields.io/maven-central/v/com.github.all3fox/lyra2.svg?style=flat-square)](http://search.maven.org/#artifactdetails|com.github.all3fox|lyra2|1.3|lyra2)\n[![Javadocs](https://www.javadoc.io/badge/com.github.all3fox/lyra2.svg?color=blue)](https://www.javadoc.io/doc/com.github.all3fox/lyra2)\n[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](https://raw.githubusercontent.com/alisianoi/lyra2-java/master/LICENSE)\n\n\u003e Lyra2 is a password hashing scheme (PHS) based on cryptographic\n  sponges. It was designed to be strictly sequential (i.e. not\n  easily parallelizable), to provide strong security even against\n  attackers who use multiple processing cores (e.g. custom hardware\n  or powerful GPUs). At the same time, it is very simple to implement\n  in software and allows legitimate users to fine tune their memory and\n  processing costs according to the desired level of security against\n  brute force password guessing. Lyra2 is an improvement of the\n  previously proposed Lyra algorithm which provides an even higher security\n  level against different attack venues and overcomes some\n  limitations of its predecessor and other existing schemes.\n\n[Paper in the Cryptology ePrint Archive][2] and [a reference implementation in C][1] by:\n\n*Marcos A. Simplicio Jr., Leonardo C. Almeida, Ewerton R. Andrade, Paulo C. F. dos Santos and Paulo S. L. M. Barreto*\n\nThis repository is a spin-off implementation in Java by me, Aleksandr Lisianoi, as part of my Bachelor's thesis at TU Wien.\n\n# How to compile and run?\n```\ngit clone https://github.com/alisianoi/lyra2-java.git\ncd lyra2-java\nmvn package\n```\n\nAfter maven packages the project, you can run it like so:\n\n```\njava -jar ./target/lyra2-*-with-dependencies.jar password salt 3 3 3\n```\n\nYou can get help about command line switches with `--help`:\n\n```\njava -jar ./target/lyra2-*-with-dependencies.jar --help\n```\n\n# How to run tests?\n\n```\nmvn test\n```\n\nThe unit tests cover three configurations of Lyra2:\n\n1. Memory matrix of size `mcost * blocks * columns`, where:\n\n   `mcost` is a dynamic parameter and `blocks = 12` and `columns = 256`\n\n1. The `sponge`'s are set to either `blake2b`, `blamka` or `half round blamka`\n1. For all sponges, `half-rounds = 12` and `full-rounds` depends on the sponge\n1. The mode of Lyra2 operation is single-threaded\n\nNote: every parameter, except for mode of operation, can be changed\n(output length, `blocks`, `columns`, `half-rounds`, etc.) but you will\nalso have to provide a data file that would hold the correct hash for\nthat combination of parameters. See `tests/resources` for file format.\n\nThe resulting hash is byte-level compatible with the [original C\nimplementation][1]. It means that if you match the build- and runtime\nparameters and supply the same password/salt and desired output\nlength, you will get the same hash as output.\n\n[1]: https://github.com/leocalm/Lyra\n[2]: https://eprint.iacr.org/2015/136\n[3]: http://lyra-2.net/\n[4]: https://en.wikipedia.org/wiki/Lyra2\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falisianoi%2Flyra2-java","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falisianoi%2Flyra2-java","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falisianoi%2Flyra2-java/lists"}