{"id":36531862,"url":"https://github.com/singularian/mdencode","last_synced_at":"2026-01-12T03:02:02.420Z","repository":{"id":148291233,"uuid":"112131148","full_name":"singularian/mdencode","owner":"singularian","description":"mdencode is a file signature generator with a modular floors and a mdzip compressor","archived":false,"fork":false,"pushed_at":"2023-12-18T23:08:28.000Z","size":4431,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-13T06:30:06.877Z","etag":null,"topics":["crypto-signatures","db-signature","digital-signatures","golang","group-signatures","hashing-algorithm","mdzip","modular-floors","modulus","parallel","signature-generator"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/singularian.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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}},"created_at":"2017-11-27T01:15:46.000Z","updated_at":"2024-10-15T18:55:02.000Z","dependencies_parsed_at":"2023-12-26T06:33:00.448Z","dependency_job_id":"61f986f0-518a-437f-a3d1-aabd602bc382","html_url":"https://github.com/singularian/mdencode","commit_stats":{"total_commits":1521,"total_committers":2,"mean_commits":760.5,"dds":"0.019066403681788247","last_synced_commit":"6c90f4e8a3ad40369e506a718b5325a9a67dd04c"},"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"purl":"pkg:github/singularian/mdencode","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/singularian%2Fmdencode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/singularian%2Fmdencode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/singularian%2Fmdencode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/singularian%2Fmdencode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/singularian","download_url":"https://codeload.github.com/singularian/mdencode/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/singularian%2Fmdencode/sbom","scorecard":{"id":827158,"data":{"date":"2025-08-11","repo":{"name":"github.com/singularian/mdencode","commit":"6c90f4e8a3ad40369e506a718b5325a9a67dd04c"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.4,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: Dockerfile:1","Info:   0 out of   1 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":3,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'master'","Info: 'force pushes' disabled on branch 'master'","Info: 'branch protection settings apply to administrators' is required to merge on branch 'master'","Warn: could not determine whether codeowners review is allowed","Warn: no status checks found to merge onto branch 'master'","Warn: PRs are not required to make changes on branch 'master'; or we don't have data to detect it.If you think it might be the latter, make sure to run Scorecard with a PAT or use Repo Rules (that are always public) instead of Branch Protection settings"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":4,"reason":"6 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2023-2402 / GHSA-45x7-px36-x8w8","Warn: Project is vulnerable to: GO-2024-3321 / GHSA-v778-237x-gjrc","Warn: Project is vulnerable to: GO-2025-3487 / GHSA-hcg3-q754-cr77","Warn: Project is vulnerable to: GO-2023-1990 / GHSA-j3p8-6mrq-6g7h","Warn: Project is vulnerable to: GO-2023-1989 / GHSA-x92r-3vfx-4cv3","Warn: Project is vulnerable to: GO-2024-2937 / GHSA-9phm-fm57-rhg8"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-23T16:50:17.315Z","repository_id":148291233,"created_at":"2025-08-23T16:50:17.315Z","updated_at":"2025-08-23T16:50:17.315Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28332842,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T00:36:25.062Z","status":"online","status_checked_at":"2026-01-12T02:00:08.677Z","response_time":98,"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":["crypto-signatures","db-signature","digital-signatures","golang","group-signatures","hashing-algorithm","mdzip","modular-floors","modulus","parallel","signature-generator"],"created_at":"2026-01-12T03:02:02.348Z","updated_at":"2026-01-12T03:02:02.411Z","avatar_url":"https://github.com/singularian.png","language":"C++","readme":"# Project MDencode Overview :octocat:  \n  \nMDencode is a [GO](https://golang.org/) file signature and [C++](https://github.com/singularian/mdencode/blob/master/docs/mdzip_cpp.md) command line file digital signature encoder with modular floors.  \nThis program is written in GO and uses an interface for programmable formatters.  \nMDencode allows for the creation of sqlite3 db file signatures and the first random file signatures and signature decryption. \n\nThis program can generate a file signature at the file or block level and format and write the output in multiple formats.  \nIt can also write to an sqlite db. The mdencode sqlite db files contain a table schema and can be exported into multiple formats.  \n\nMDencode also contains an mdzip and mdunzip utility for encoding and decoding files with modular floors and signatures.\n\n# Features\n\n- Versioned Cryptographic File Signatures\n- Optional File Crypto Signatures\n- Optional N-Bit Sized File Block Modular Floors\n- Optional N-Byte Block Crypto Signatures\n- SQLite3 DB Crypto Signature Files\n- Plugin Formatters\n- Multiple [Signatures](https://github.com/singularian/mdencode/blob/master/docs/hashList.md) for Files and File Blocks\n- The \"First\" [Random File Signature](https://github.com/singularian/mdencode/blob/master/docs/RandomSignature.md) or Block signatures \n- An example of a parallel signature modulus scan with an encoder and decoder ([mdzip and mdunzip](https://github.com/singularian/mdencode/blob/master/docs/mdzip_cpp.md))\n\n# MDencode Components\n\n- [MDencode File Signatures](https://github.com/singularian/mdencode/blob/master/docs/mdencodeFile.md)\n- [mdzip/mdunzip C++](https://github.com/singularian/mdencode/blob/master/docs/mdzip_cpp.md)\n- [mdzip/mdunzip Go](https://github.com/singularian/mdencode/blob/master/docs/mdzip_go.md)\n\n\n\n# Modular Floor\n\nThis is my block chopper.  \n\n![This is my block chopper](https://github.com/singularian/mdencode/blob/master/diagrams/blockchopper.jpg \"Coyau's Cleaver\")\n\nThis program uses a modular floor paired with a package of digital signatures. This makes the digital signature more unique. \nA modular floor consists of a polynomial which is the modular exponent plus n times the modulus plus the remainder. \nIt is possible to use a modular scan to find matching byte blocks associated with the digital signature package.\nA digital signature package or group can consist of 1 or more block and file signatures. \nA modular floor is generaly computed at the block level for a file byte block and utilizes a big integer.\n\nThe [modulus scan](https://github.com/singularian/mdencode/blob/master/docs/modulusScan.md) polynomial is calculated as follows.\n\n```\nmodremainder    = fileblockbigint % modulus  \nfileblockbigint = modulus * n + modremainder where n equals 0 to m  \nfileblockbigint = modulus ^ (exponent p) + modulus * n + modremainder where p is an optional power and n equals 0 to m    \n```\n\n# Modular Floor Equation\n\nThis is the modular floor equation for two forms. One is the exponential floor while the other contains a multiple of the modular floor plus the remainder.\nA modulus should be considered part of the file signature subset. A modulus is a digital signature.\n\n![](https://github.com/singularian/mdencode/blob/master/diagrams/modularfloor.png)  \n![](https://github.com/singularian/mdencode/blob/master/diagrams/modularfloorexponent.png)  \n\n# Modular Floor Examples\n  \nThis is an example of the modular floor using the C++ test program.  \nThe program `mdtest` is using a random 14 byte array and then running a modulus scan to find the corresponding file block associated with a digital signature.  \nIt uses a 32 bit modulus and calculates modulus exponent floor or ceiling and then creates a fast64 hash. A modulus scan splits up the parallel search on 32 threads. \nIt calculated and found the 14 byte block (13 bytes compressed) in 4 hours on a Ryzen 3950x. It compresses the 14 byte block to 13 bytes and decompresses it to 14 bytes.  \n\n13/14 Modulus Encoding\n- 8 bytes for the 64-bit fasthash 64 - (It can use any number of 64 bit hashes)\n- 4 bytes for the 32-bit modulus \n- 1 byte for the modulus exponent \n\nC++ Test program\n- ```$GOPATH/github.com/singularian/mdencode/code/testdecode_cpp/mdtest```\n\n```\n./mdtest --mod=32 --threads=32 --hl 4  --hex=000000001211211111111122FFFC\nhash values  4\nStart Time               Sun Nov 15 17:52:53 2020\nBlock Size               14\nRandom Byteblock         000000001211211111111122FFFC\nRandom Byteblock Hex     00  00  00  00  12  11  21  11  11  11  11  22  FF  FC\nRandom Byteblock Int     0   0   0   0   18  17  33  17  17  17  17  34  255 252\nRandom Byteblock Bigint  85318574045349531549692\nModulus Size             32\nModulus Bigint           4294967296\nModulus Remainder        287506428\nModulus 2   ^ Exponent   76\nModulus Mod ^ Exponent   2\nBlock Signatures         fast64 5986481724077706591\nThread Count             32\nLogging                  false\n\nFound Match\n\nElapsed Time (s) 14601.1    = 4.05 hours\nModulus Scan thread 17 and Random byteblock match\n0 0 0 0 18 17 33 17 17 17 17 34 255 252\n0 0 0 0 18 17 33 17 17 17 17 34 255 252\n```\n\nSecond modulus scan decompression example with a larger block running on a ryzen 3950x.\n\n```\n./mdtest --mod=32 --threads=32 --hl 4  --hex=0000000016412161123F1822FFFC --log=true\nhash values  4 \nStart Time               Tue Nov 17 21:44:08 2020\nBlock Size               14\nRandom Byteblock         0000000016412161123F1822FFFC\n                         1   2   3   4   5   6   7   8   9   10  11  12  13  14  \nRandom Byteblock Hex     00  00  00  00  16  41  21  61  12  3F  18  22  FF  FC  \nRandom Byteblock Int     0   0   0   0   22  65  33  97  18  63  24  34  255 252 \nRandom Byteblock Bigint  105093506211661505298428\nModulus Size             32\nModulus Bigint           4294967296\nModulus Remainder        404946940\nModulus 2   ^ Exponent   76\nModulus Mod ^ Exponent   2\nBlock Signatures         fast64 10504795572753995326 \nThread Count             32\nLogging                  true\n\nRunning decode modscan\nFound Match\n\nElapsed Time (s) 43036 = 12 hours\nModulus Scan thread 31 and Random byteblock match\n0 0 0 0 22 65 33 97 18 63 24 34 255 252 \n0 0 0 0 22 65 33 97 18 63 24 34 255 252 \n```\n\nAnother modulus scan decompression example with a larger byte block \n\n```\n./mdtest --mod=32 --threads=32 --hl 4  --hex=0000002020412161123F1822FFFC --log=true\nhash values  4\n\nStart Time               Sat Nov 21 19:59:59 2020\nBlock Size               14\nRandom Byteblock         0000002020412161123F1822FFFC\n                         1   2   3   4   5   6   7   8   9   10  11  12  13  14\nRandom Byteblock Hex     00  00  00  20  20  41  21  61  12  3F  18  22  FF  FC\nRandom Byteblock Int     0   0   0   32  32  65  33  97  18  63  24  34  255 252\nRandom Byteblock Bigint  38837943398708491548033020\nModulus Size             32\nModulus Bigint           4294967296\nModulus Remainder        404946940\nModulus 2   ^ Exponent   85\nModulus Mod ^ Exponent   2\nBlock Signatures         fast64 2256604700901092545\nThread Count             32\nLogging                  true\n\n\nRunning decode modscan\n\nFound Match\n\nElapsed Time (s) 220182.811267 - 61.16 hours\nModulus Scan thread 31 and Random byteblock match\n0   0   0   32  32  65  33  97  18  63  24  34  255 252\n0   0   0   32  32  65  33  97  18  63  24  34  255 252\n```\n\nThis is the Sip47 modulus scan decompression example running on a ryzen 3950x.\nIt could use a 4 to 7 bit bitstream to encode the modulus exponent.\n\n```\n./mdtest --mod=32  --hl 30 --randbh  --log --hex=0066BDF2F888F000FF00 --block=10\n\nStart Time               Sun Oct 31 19:06:06 2021\nBlock Size               10\nRandom Byteblock         0066BDF2F888F000FF00\n                         1   2   3   4   5   6   7   8   9   10\nRandom Byteblock Hex     00  66  BD  F2  F8  88  F0  00  FF  00\nRandom Byteblock Int     0   102 189 242 248 136 240 0   255 0\nRandom Byteblock Bigint  1895255171002932461312\nModulus Size             32\nModulus Bigint           4294967295\nModulus Remainder        2918447087\nModulus 2   ^ Exponent   70\nModulus Mod ^ Exponent   2\nBlock Signatures         sip40 5246BACF79\nBlockkeylist             sip40 keys 8E197EC7727CECD973118AEE2E72BE65\nThread Count             32\nLogging                  true\n\nHash Block Vector\nNumber      Hash ID      Hash Name   Blocksize   Blockkeysize\n1           30           sip40       5           16\n                         Total       5           16\n\nRunning decode modscan\n\nFound Match\n\nElapsed Time (s) 2448.636829 = 40.8 minutes\nModulus Scan thread 15 and Random byteblock match\n0 102 189 242 248 136 240   0 255   0\n0 102 189 242 248 136 240   0 255   0\n```\n\n[Other Decoder Examples](https://github.com/singularian/mdencode/blob/master/docs/EXAMPLES.md)\n\n# Parallel Modulus Scan\n\nThere are currently two test modulus scan programs. These include\n\n- GO test modulus scan ```$GOPATH/github.com/singularian/mdencode/code/testdecode_go/mdtest``` uses GO routines to run the modulus scan for a signature on a byte block\n- C++ test modulus scan ```$GOPATH/github.com/singularian/mdencode/code/testdecode_cpp/mdtest``` uses C++ threads to run the modulus scan\n\nMDZip and MDUnzip also use a parallel modulus scan with the GO or [C++ core](https://github.com/singularian/mdencode/tree/master/docs/mdzip_cpp.md).  \n\n\nThese are examples of a parallel modulus scan for mdzip C++ with Siphash 40.  \n  \n- [Siphash 40 MDzip With No Increment Key](https://github.com/singularian/mdencode/blob/master/docs/tests/mdzip_siphash40_test.md)  \n- [Siphash 40 MDzip With Decrement Key](https://github.com/singularian/mdencode/blob/master/docs/tests/mdzip_siphash40_test_dec.md)  \n- [Siphash 40 MDzip With Increment Key](https://github.com/singularian/mdencode/blob/master/docs/tests/mdzip_siphash40_test_inc.md)  \n- [Siphash 47 MDzip With No Increment Key](https://github.com/singularian/mdencode/blob/master/docs/tests/mdzip_siphash47_test_noinc.md)\n\n# MDzip and MDunzip Overview\n\nmdzip is the C++ and GO command line utility can compress a file into a md binary byte block files. \nmdzip takes an optional input key for the 32 byte Highway Hash 64 and Highway Hash 128 and Highway Hash 256. It can also take input keylist parameters for other signature keys.\n\nmdunzip will decompress the input signature binary block file to an output file.  \n\nmdunzip has a context hash list for each decode thread. mdzip can use multiple block signatures and mdunzip will use the specified signatures to unzip the file.\n\nProccessing power limits the size of the input block.  \n\n**MDZip Features**\n- User Specified Modulus Size\n- User Specified Block Size\n- File Hash Signatures\n- Block Hash Signatures\n- Optional Signature Keys \n- 32 Byte Highway Hash Signature Keys which change the signature\n\n**MDUnzip Features**\n- Multithreaded Parallel Modulus Scan\n- Decrypts an MDZip file to an output file \n- File Signature Post Validation\n- Uses the MDZip Signature Keys to change the output file signature Modulus Scan\n\n# MDZip Usage\n\n- [MDZip C++ Usage](https://github.com/singularian/mdencode/blob/master/docs/mdzip_cpp.md)\n- [MDZip GO Usage](https://github.com/singularian/mdencode/blob/master/docs/mdzip_go.md)\n\n# MDZip Video Example \n\nThese are some Asciinema Video Examples \n\n[MDZip Example](https://asciinema.org/a/293119)  \n[MDZip Example 2](https://asciinema.org/a/293112)   \n[MDZip Highway Hash Key Example](https://asciinema.org/a/293740)  \n\n# Collision Handling\n\nThese are a brief list of collision management in mdzip and mdunzip.\n\n- Using File Level Signatures to validate Block Level Signatures.\n- **Using File Level Signatures** to differentiate between File Block Signature Collisions.\n- **Signature Switching.** If one signature or signature group has a collsion switch to another signature or signature group.\n- **Change the signature key.** An example is Highway Hash with a 256 bit key which can be changed to different keys.\n- **Use Optional Block Groups** as a wrapper around signature blocks with collisions or add additional signatures.\n- **Use Optional File Block Collision Numbers**. Collision numbers can designate the correct match.\n- Use Block Signature Pairs with Modulus / Modular Floors.\n- Using Modular floors to skip numbers\n\n# Build\n\nThis is a guide for building MDencode on Linux.\n\n[Example Build](https://github.com/singularian/mdencode/blob/master/docs/Build.md)\n\n# Docker Container \n\nThis is a Docker Hub Docker File for MDencode\n\n[Docker Container](https://hub.docker.com/r/annatarsol/mdencode)\n\n### Docker Pull\n\ndocker pull annatarsol/mdencode  \n\n### Docker Container Run\n\ndocker run -it annatarsol/mdencode/latest /bin/bash  \n\n# Donations\n\n* BTC: `32L3gyJdkiFwgJ72rsSzbCBjTjVFxJLHPm`\n* ETH: `0x137eB09cF2e199dA2Aa79607f96719be1491a312`\n* LTC: `MJh8XpUQ5wm8x1HCoQ7dewNqhrLfZZc31x`\n\n# Author\nMDEncode was developed by Scott Ross on a Ryzen 2700x and Ryzen 3950x CPU.\n\n# License \n\n[GNU General Public License v3.0](https://github.com/singularian/mdencode/blob/master/LICENSE)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsingularian%2Fmdencode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsingularian%2Fmdencode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsingularian%2Fmdencode/lists"}