{"id":13727085,"url":"https://github.com/invisal/god_crypto","last_synced_at":"2025-04-10T23:52:01.421Z","repository":{"id":45661930,"uuid":"285578879","full_name":"invisal/god_crypto","owner":"invisal","description":"Pure Javascript/Typescript Crypto Implementation for Deno. AES, RSA, HMAC, and TOTP","archived":false,"fork":false,"pushed_at":"2024-07-19T02:52:17.000Z","size":159,"stargazers_count":93,"open_issues_count":7,"forks_count":16,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-10T23:51:53.807Z","etag":null,"topics":["crypto","deno","javascript","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/invisal.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":"2020-08-06T13:28:41.000Z","updated_at":"2024-08-25T12:31:06.000Z","dependencies_parsed_at":"2024-10-30T09:16:16.817Z","dependency_job_id":"c45883b9-ca63-400d-aec0-32f3306b1b53","html_url":"https://github.com/invisal/god_crypto","commit_stats":{"total_commits":85,"total_committers":9,"mean_commits":9.444444444444445,"dds":"0.10588235294117643","last_synced_commit":"6bc4d60f39cd8b0a91ab59176a5ba80c342730aa"},"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/invisal%2Fgod_crypto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/invisal%2Fgod_crypto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/invisal%2Fgod_crypto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/invisal%2Fgod_crypto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/invisal","download_url":"https://codeload.github.com/invisal/god_crypto/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248317706,"owners_count":21083528,"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":["crypto","deno","javascript","typescript"],"created_at":"2024-08-03T01:03:38.900Z","updated_at":"2025-04-10T23:52:01.406Z","avatar_url":"https://github.com/invisal.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# God Crypto\n\n\u003e **NO LONGER MAINTAIN** I have been very busy lately and can no longer maintain\n\u003e this project and since there is roadmap for Deno for standard crypto library:\n\u003e https://github.com/denoland/deno/issues/11690. I feel there is no longer need\n\u003e for this library.\n\n\u003cimg src=\"https://repository-images.githubusercontent.com/285578879/a09a9880-e179-11ea-9b30-42d45ee638c1\" width=\"500px\"\u003e\n\n![test](https://github.com/invisal/god-crypto/workflows/test//badge.svg)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=invisal_god_crypto\u0026metric=alert_status)](https://sonarcloud.io/dashboard?id=invisal_god_crypto)\n\nA pure Javascript/Typescript cryptography implementation for Deno. We will try\nto use WebCrypto if available, then fallback pure Javascript implementation.\n\n## References\n\n### Supported Algorithms\n\n- [**AES (Advanced Encryption Standard)**](https://github.com/invisal/god_crypto/wiki/AES)\n\n  - Supports Block Ciper Mode: CBC, CFB, and ECB\n\n- [**RSA (Rivest–Shamir–Adleman)**](https://github.com/invisal/god_crypto/wiki/RSA)\n\n  - Supports RSA-PKCS1 v1.5 and RSA-OAEP padding\n  - Supports RSASSA-PSS signature\n  - Supports RSASSA-PKCS1-v1_5 signature\n\n- [**HMAC**](https://github.com/invisal/god_crypto/wiki/HMAC)\n\n### Applications\n\n- [**HOTP (HMAC-based One-time Password)**](https://github.com/invisal/god_crypto/wiki/HOTP)\n- [**TOTP (\n  Time-based One-time Password)**](https://github.com/invisal/god_crypto/wiki/TOTP)\n\n### Ultities\n\nSome useful ultities that you can use\n\n- [encode](https://github.com/invisal/god_crypto/wiki/encode)\n- [BER Writer](https://github.com/invisal/god_crypto/wiki/BER)\n\nClick here for complete document:\n[Complete Documents](https://github.com/invisal/god_crypto/wiki)\n\n## Modules\n\nYou can choose to include the whole `god_crypto` implementation or just include\nmodule that you need.\n\n```\n// Load everything\nimport { AES, RSA, TOTP, hmac, encode } from \"https://deno.land/x/god_crypto/mod.ts\";\n\n// Load what you need\nimport { AES }  from \"https://deno.land/x/god_crypto/aes.ts\";\nimport { RSA }  from \"https://deno.land/x/god_crypto/rsa.ts\";\nimport { TOTP } from \"https://deno.land/x/god_crypto/otp.ts\";\nimport { hmac } from \"https://deno.land/x/god_crypto/hmac.ts\";\n```\n\n---\n\n## Examples\n\n```typescript\nimport { AES } from \"https://deno.land/x/god_crypto/aes.ts\";\n\nconst aes = new AES(\"Hello World AES!\", {\n  mode: \"cbc\",\n  iv: \"random 16byte iv\",\n});\nconst cipher = await aes.encrypt(\"This is AES-128-CBC. It works.\");\nconsole.log(cipher.hex());\n// 41393374609eaee39fbe57c96b43a9da0d547c290501be50f983ecaac6c5fd1c\n\nconst plain = await aes.decrypt(cipher);\nconsole.log(plain.toString());\n// This is AES-128-CBC. It works.\n```\n\n```typescript\nimport { RSA } from \"https://deno.land/x/god_crypto/rsa.ts\";\n\n// Parsing public/private key\nconst publicKey = RSA.parseKey(Deno.readTextFileSync(\"./public.pem\"));\nconst privateKey = RSA.parseKey(Deno.readTextFileSync(\"./private.pem\"));\n\nconst cipher = await new RSA(publicKey).encrypt(\"Hello World\");\nconsole.log(ciper.base64());\n\nconst plain = await new RSA(privateKey).decrypt(cipher);\nconsole.log(plain.toString());\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finvisal%2Fgod_crypto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finvisal%2Fgod_crypto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finvisal%2Fgod_crypto/lists"}