{"id":16130186,"url":"https://github.com/lambdacasserole/mayo","last_synced_at":"2026-05-16T08:39:19.039Z","repository":{"id":75385896,"uuid":"60613408","full_name":"lambdacasserole/mayo","owner":"lambdacasserole","description":"Diffie-Hellman key exchange utility for Java on Maven.","archived":false,"fork":false,"pushed_at":"2016-07-05T09:16:31.000Z","size":7,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-06T14:14:50.385Z","etag":null,"topics":["diffie-hellman","encryption","java","key-exchange-algorithms","maven"],"latest_commit_sha":null,"homepage":null,"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/lambdacasserole.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}},"created_at":"2016-06-07T13:01:45.000Z","updated_at":"2019-08-31T17:50:05.000Z","dependencies_parsed_at":"2023-06-06T09:00:32.131Z","dependency_job_id":null,"html_url":"https://github.com/lambdacasserole/mayo","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/lambdacasserole/mayo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lambdacasserole%2Fmayo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lambdacasserole%2Fmayo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lambdacasserole%2Fmayo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lambdacasserole%2Fmayo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lambdacasserole","download_url":"https://codeload.github.com/lambdacasserole/mayo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lambdacasserole%2Fmayo/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267298418,"owners_count":24065880,"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","status":"online","status_checked_at":"2025-07-27T02:00:11.917Z","response_time":82,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["diffie-hellman","encryption","java","key-exchange-algorithms","maven"],"created_at":"2024-10-09T22:14:56.738Z","updated_at":"2026-05-16T08:39:18.998Z","avatar_url":"https://github.com/lambdacasserole.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mayo\nDiffie-Hellman key exchange utility for Java on Maven.\n\nVery tiny library for generating Diffie-Hellman private keys, public keys and shared secrets using Java's `BigInteger` type. Use it like this:\n\n```\n// Generate Alice's key pair.\nBigInteger alicePrivateKey = DiffieHellmanKeyGenerator.generatePrivateKey();\nBigInteger alicePublicKey = DiffieHellmanKeyGenerator.generatePublicKey(alicePrivateKey);\n\n// Generate Bob's key pair.\nBigInteger bobPrivateKey = DiffieHellmanKeyGenerator.generatePrivateKey();\nBigInteger bobPublicKey = DiffieHellmanKeyGenerator.generatePublicKey(bobPrivateKey);\n\n// Arrive at shared secret.\nBigInteger aliceSharedSecret = DiffieHellmanKeyGenerator.generateSharedKey(bobPublicKey, alicePrivateKey);\nBigInteger bobSharedSecret = DiffieHellmanKeyGenerator.generateSharedKey(alicePublicKey, bobPrivateKey);\n\nassertEquals(aliceSharedSecret, bobSharedSecret); // Alice and Bob should have arrived at same secret.\n```\n\nFeel free to transmit the public keys in the clear. By the end of the handshake you'll both have arrived at the same secret to use with  symmetric encryption, without transmitting the secret in the clear. Mayo uses a 1536-bit prime.\n\n## Installation\nYou can pull this package into your Maven project straight from here using JitPack. Add JitPack as a repository first:\n\n```\n\u003crepositories\u003e\n    \u003crepository\u003e\n        \u003cid\u003ejitpack.io\u003c/id\u003e\n        \u003curl\u003ehttps://jitpack.io\u003c/url\u003e\n    \u003c/repository\u003e\n\u003c/repositories\u003e\n```\n\nThen add a dependency on Mayo:\n\n```\n\u003cdependencies\u003e\n    \u003cdependency\u003e\n        \u003cgroupId\u003ecom.github.lambdacasserole\u003c/groupId\u003e\n        \u003cartifactId\u003emayo\u003c/artifactId\u003e\n        \u003cversion\u003ev1.0\u003c/version\u003e\n    \u003c/dependency\u003e\n\u003c/dependencies\u003e\n```\n\n## Limitations\nI'm not a cryptographer and for all I know there's a horrible mistake in this library that's going to open it up to a trillion different attacks. Use a time-tested and reliable implementation over Mayo any day.\n\nAlso, there are a [number of well-known attacks](https://weakdh.org/) on Diffie-Hellman key exchanges. \n\n## Contributing\nFor most intents and purposes, Mayo is considered to fulfil its original use case. Bug fixes and suggestions are welcome, however, from any member of the community.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flambdacasserole%2Fmayo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flambdacasserole%2Fmayo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flambdacasserole%2Fmayo/lists"}