{"id":13646111,"url":"https://github.com/keybase/saltpack","last_synced_at":"2025-05-14T12:09:06.291Z","repository":{"id":39801181,"uuid":"53898911","full_name":"keybase/saltpack","owner":"keybase","description":"a modern crypto messaging format","archived":false,"fork":false,"pushed_at":"2025-01-24T00:18:07.000Z","size":922,"stargazers_count":1000,"open_issues_count":10,"forks_count":63,"subscribers_count":40,"default_branch":"master","last_synced_at":"2025-04-06T04:01:43.339Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://saltpack.org/","language":"Go","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/keybase.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-03-14T23:16:51.000Z","updated_at":"2025-03-04T10:37:47.000Z","dependencies_parsed_at":"2023-01-30T02:15:31.518Z","dependency_job_id":"aa1417a8-9d63-4337-b5ea-48a083ab0df2","html_url":"https://github.com/keybase/saltpack","commit_stats":{"total_commits":276,"total_committers":23,"mean_commits":12.0,"dds":0.572463768115942,"last_synced_commit":"726bb684c6176c1b57cde1d1e7a873cf1a159213"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keybase%2Fsaltpack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keybase%2Fsaltpack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keybase%2Fsaltpack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keybase%2Fsaltpack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/keybase","download_url":"https://codeload.github.com/keybase/saltpack/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248676053,"owners_count":21143864,"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-08-02T01:02:48.754Z","updated_at":"2025-04-13T07:20:13.159Z","avatar_url":"https://github.com/keybase.png","language":"Go","funding_links":[],"categories":["库和框架","Go","Encryption"],"sub_categories":["Go"],"readme":"# saltpack\n\n### a modern crypto messaging format\n\nhttps://saltpack.org/\n\n[![Build Status](https://github.com/keybase/saltpack/actions/workflows/ci.yml/badge.svg)](https://github.com/keybase/saltpack/actions)\n[![GoDoc](https://godoc.org/github.com/keybase/saltpack?status.svg)](https://godoc.org/github.com/keybase/saltpack)\n\n**saltpack** is a streamlined, modern solution, designed with simplicity in mind. It is easy to implement \u0026 integrate. We've made few crypto decisions and instead leave almost all of the heavy lifting to the [NaCl library](https://godoc.org/golang.org/x/crypto/nacl).\n\n**saltpack** is a binary message format, encoded using the [MessagePack](http://msgpack.org/) format. Messages are broken up into reasonable (1MB) chunks, over which regular [NaCl operations](https://nacl.cr.yp.to/) are performed. We have taken pains to address many of the [shortcomings](https://www.imperialviolet.org/2015/05/16/aeads.html) of current message formats: (1) only authenticated data is output; (2) repudiable authentication is used wherever possible; (3) chunks cannot be reordered or combined with other transmissions; (4) the public keys of senders and recipients can be hidden; and (5) message truncation is detectable.\n\nVisually speaking, a **saltpack** ASCII output looks a lot like PGP's.\n\n### saltpack\n\n```\nBEGIN SALTPACK SIGNED MESSAGE. kXR7VktZdyH7rvq v5wcIkHbs7XwHpb\nnPtLcF6vE5yY63t aHF62jiEC1zHGqD inx5YqK0nf5W9Lp TvUmM2zBwxgd3Nw\nkvzZ96W7ZfDdTVg F5Y99c2l5EsCy1I xVNl0nY1TP25vsX 2cRXXPUrM2UKtWq\nUK2HG2ifBSOED4w xArcORHfFeiEZxF CqestMqLSCCE6lT HFcdvt1QX9JjmWL\no5AAqPiECnoHiSA bPHhz2JnSCyDIOz ZET1BWzttbMDL4N pcyQLmsGqYpxhG6\nuvdBxdt55w9xQvQ hDPuOsKF05Hsml6 z7h9TS2msJcNwtz vxGIQR7sbB19UOt\nboM1hlolmMB3loP 0KexlROFBTDC6MR nBvd9sZUxA8Z7i5 a6Dk5yFU3WEYQAo\nDqqjXcp0yBoHO5O KEMqkZlyMf1PKiB 2n9wE6jwxAN1xws ccthT6X3iRYk0Br\ngHW6QRXzAHLy6Ib LgY6b3UcQAoDo8b XyaExxinVuM5Ftk 75BJOWoyLGFhZS7\nEfKR8jQQexvyjDM rJLxYtjvaLX7joS 2q1VcUlqGfZDhAa 4vxJQAyu57beOux\noobLhI47iZf9bxK PmYrVQ5PsC6pY1J KTQQexvlvp2yicx K4su2AFCjihbzNI\nyZgKM4NHN1KZapS O3iB9SlhVfTfFcR FoQoSViTkbtDtTt 6I0jrTRHkv9XVQQ\neeeuzR7qYu1Grm3 zDPyj7JgK2mDidw HchOZnfOn59QLnM nH7ErnPRXgHuWHG\nDBidjQPakJHuWsk 2ftpIyZd2NLYEFS Mqcbo6QeCdk7LA1 uobl4NXzpvi8amO\nPe8xAl1OzUCoD34 MbCwtTAe1JNymvs okufV8lHU0jVnbj u4no9QB9aP2Wkjx\nPfeqIH2fEtOjmFP gPMhGWslkU0M7FL QP77gPHbgjPLSD8 yIRTrbgzpAPut5R\nQhIdqVlHbUOa9sI v7gSqOi0GbUlhSM 183LxZI8pIlvgn9 Ms1WNzt5Xkv0W1Q\nQf419ZmuQVPQDOk 0hffDmUk71TlfVx XZCF3voC2ysgl3g YdLz4rDRzMJgd2m\n01HIbfdsoZpAMty O27WtUNRLV1iyC9 tK5ApCyekI4nWcf 2OvTHnC8ma7bloW\nXAG. END SALTPACK SIGNED MESSAGE.\n```\n\n### PGP\n\n```\n-----BEGIN PGP MESSAGE-----\nComment: GPGTools - https://gpgtools.org\n\nowEBUAKv/ZANAwAKAdIkQTsc+mSQAcsgYgBWZ0C0SSBhbSBzbyBzaWNrIG9mIHRo\naXMgc2hpdAqJAhwEAAEKAAYFAlZnQLQACgkQ0iRBOxz6ZJBS9Q/+MSfWiOz5OvRt\nlHTncX8Ifo7+wSKYH039vEQAUvj+rnEdlBzcJPoHDE1yZxAZT5ek5S+cxQ5bx55K\nWRLvw/sAz+OU0OPHSDsqI2LjU6D+s1EvwCISkXoWlMVx5vJsEz2XGlQ8DzgBC2Jy\nwPanQf1lUz0c7k0ySdCTdZ0qG1YuaYnCXsS6g/E8E7TIO++2v5EbkgYZl3Io2LcI\nC9TqTHdrIc7WGTSFjwq9JIgvwfuShpccNSFQ262gSJh8rUOzzY37q81pKxDnBvEV\nTMrQYY0e/JK7KMMcHDSQSeWnMxf4/v5Qex7WI55CW4++qbNvDylDi9fTpkYfXl3B\nL8pbBAxMUjcJX4qVVzWcxTwSXYO29Bi4osn2klNyZHnO35kuI9XGziWCGqhVx1MW\nptNHoVjk7/Uo7k39hY0Vjltnl/SqXHq/H7YTRSgLebuhn6zqMbmFXtyHYSHGgAQ4\nrcdSBta+I9tmYCnp1GmfeXff2wzsFYPUune2Hve4VghjmeU0x7OWMEl93gpznSwu\nNvzyOCqFCyfEmt/R2QCXAkxwPU/Mdsd5vzEHSMkcZgW4CTr+j5YG/C3kMy7UJAGZ\nZzFAh3/Z8fCtfREF3zH48XbNh3dQXNl40bUF/AgPvLqPf35L7TCchcUAC7oiASa/\nPh/Hao4ZzCQDM76Jr/aCUJIbxyc2zco=\n=eyef\n-----END PGP MESSAGE-----\n```\n\nThe changes here are small: we've reduced our characters to base62 plus some period markers, and only at the ends of words. PGP messages often get mangled by different apps, websites, and smart text processors.\n\nOf course, **saltpack** can output binary, too. Either way, it's what's inside the format that matters. You can read the [spec](https://saltpack.org/encryption-format-v2) for the details.\n\nPost issues to: https://github.com/keybase/keybase-issues\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeybase%2Fsaltpack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkeybase%2Fsaltpack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeybase%2Fsaltpack/lists"}