{"id":13619648,"url":"https://github.com/restuwahyu13/jwt-transform","last_synced_at":"2025-05-07T04:42:00.696Z","repository":{"id":37965130,"uuid":"420962869","full_name":"restuwahyu13/jwt-transform","owner":"restuwahyu13","description":"Transform your real jwt token into fake jwt token.","archived":false,"fork":false,"pushed_at":"2024-07-08T12:32:52.000Z","size":376,"stargazers_count":18,"open_issues_count":10,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-07T04:41:53.377Z","etag":null,"topics":["algorithm","base64","browser","cryptography","decrypt","encrypt","hex","javascript","jwt","jwt-transform","node","nodejs","security","security-tools","typescipt","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/restuwahyu13.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2021-10-25T09:40:41.000Z","updated_at":"2024-09-06T00:15:22.000Z","dependencies_parsed_at":"2024-04-22T13:46:00.561Z","dependency_job_id":"30ec8b5b-9154-4553-909e-709769ded56d","html_url":"https://github.com/restuwahyu13/jwt-transform","commit_stats":{"total_commits":60,"total_committers":2,"mean_commits":30.0,"dds":"0.44999999999999996","last_synced_commit":"70c07755a6ee8f194773cac10519f5fbc59758d8"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/restuwahyu13%2Fjwt-transform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/restuwahyu13%2Fjwt-transform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/restuwahyu13%2Fjwt-transform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/restuwahyu13%2Fjwt-transform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/restuwahyu13","download_url":"https://codeload.github.com/restuwahyu13/jwt-transform/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252816518,"owners_count":21808702,"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":["algorithm","base64","browser","cryptography","decrypt","encrypt","hex","javascript","jwt","jwt-transform","node","nodejs","security","security-tools","typescipt","typescript"],"created_at":"2024-08-01T21:00:46.320Z","updated_at":"2025-05-07T04:42:00.673Z","avatar_url":"https://github.com/restuwahyu13.png","language":"TypeScript","funding_links":[],"categories":["J"],"sub_categories":[],"readme":"# JWT Transform\n\n[![Build Status](https://scrutinizer-ci.com/g/restuwahyu13/jwt-transform/badges/build.png?b=main)](https://scrutinizer-ci.com/g/restuwahyu13/jwt-transform/build-status/main) [![CodeFactor](https://www.codefactor.io/repository/github/restuwahyu13/jwt-transform/badge)](https://www.codefactor.io/repository/github/restuwahyu13/jwt-transform) [![codebeat badge](https://codebeat.co/badges/56d95df5-235b-4988-8a4e-b1b5aad6d796)](https://codebeat.co/projects/github-com-restuwahyu13-jwt-transform-main) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/b55a9532f9f84ebd94b37b52c32d7472)](https://www.codacy.com/gh/restuwahyu13/jwt-transform/dashboard?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=restuwahyu13/jwt-transform\u0026amp;utm_campaign=Badge_Grade) ![node-current](https://img.shields.io/node/v/jwt-transform?style=flat-square) ![npm](https://img.shields.io/npm/dm/jwt-transform) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](https://github.com/restuwahyu13/jwt-transform/blob/main/CONTRIBUTING.md)\n\n**jwt-transform** is a simple utility tool for your transforming a real *jwt token* into a fake *jwt token*, because if you store *jwt token* into a `cookie` or `local storage` very unsafe, your *jwt token* can be seen data using [jwt.io](https://jwt.io) website or chrome extension, if you use **jwt-transform** you real *jwt token* cannot seen using  [jwt.io](https://jwt.io) website or chrome extension, because what you save is fake *jwt token*, you can get back real *jwt token* using decrypt method for parse fake *jwt token*.\n\n## Table Of Content\n\n- [JWT Transform](#jwt-transform)\n  - [Table Of Content](#table-of-content)\n  - [Installation](#installation)\n  - [API Reference](#api-reference)\n  - [Example Usage](#example-usage)\n    + [transfrom](#transfromsecretkey-string-plaintext-string-rotate-number-string) \n    + [untransform](#untransformsecretkey-string-ciphertext-string-rotate-number-string)\n  - [Testing](#testing)\n  - [Bugs](#bugs)\n  - [Contributing](#contributing)\n  - [License](#license)\n\n## Installation\n\n```bash\nnpm install jwt-transform -S or yarn add jwt-transform -S\n```\n\n## API Reference\n\n- #### transfrom(secretKey: string, plainText: string, rotate: number): string\n\n  encrypt jwt token using caesar cipher cryptography from real jwt token into fake jwt token\n\n- #### untransform(secretKey: string, cipherText: string, rotate: number): string\n\n  decrypt jwt token using caesar cipher cryptography from fake jwt token into real jwt token\n\n## Example Usage\n\nFollow this **[express tutorial](https://github.com/restuwahyu13/express-rest-api-clean-architecture)** for example usage using express, make this as middleware for transform your fake jwt token to real token, because jwt .verify need real token, if you pass fake token jwt.verify identification your token is not valid and if you not using express, make this as middleware.\n\n- ##### Example Usage Using CommonJs With JavaScript\n\n  ```javascript\n   const { JwtTransform } = require('jwt-transform')\n\n    const secretKey = 'ptLDDOU5ejqqLjlk4CpSNxvwZVxQFRmF'\n   const accessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c'\n\n   const resultEncrypt = JwtTransform.transform(secretKey, accessToken, secretKey.length)\n   console.log(resultEncrypt)\n\n   // fake jwt token\n   // kePnhMioUoPOAfO1ToOyOtX5iIO6OqvDBIP9.kePfjCOoUoOdSpS0TZE3UJqcOocohsLzFYO6OqvbgM4mXM9rOocogCL0OpudTZK2SpS5SJOelWvzRJJUA5kpwwRprq4IvYTdbcFBdWLXsL.YlrQdcXPYSkQQL2WZ4lcvSkPl36VUq6ePB_gjWyyc5i\n\n   const resultDecrypt = JwtTransform.untransform(secretKey, resultEncrypt, secretKey.length)\n   console.log(resultDecrypt)\n\n   // real jwt token\n   // eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c\n  ```\n\n- ##### Example Usage Using ESM With JavaScript / TypeScript\n\n  ```javascript\n   import { JwtTransform } from 'jwt-transform'\n\n    const secretKey = 'ptLDDOU5ejqqLjlk4CpSNxvwZVxQFRmF'\n   const accessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c'\n\n   const resultEncrypt = JwtTransform.transform(secretKey, accessToken, secretKey.length)\n   console.log(resultEncrypt)\n\n   // fake jwt token\n   // kePnhMioUoPOAfO1ToOyOtX5iIO6OqvDBIP9.kePfjCOoUoOdSpS0TZE3UJqcOocohsLzFYO6OqvbgM4mXM9rOocogCL0OpudTZK2SpS5SJOelWvzRJJUA5kpwwRprq4IvYTdbcFBdWLXsL.YlrQdcXPYSkQQL2WZ4lcvSkPl36VUq6ePB_gjWyyc5i\n\n   const resultDecrypt = JwtTransform.untransform(secretKey, resultEncrypt, secretKey.length)\n   console.log(resultDecrypt)\n\n   // real jwt token\n   // eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c\n  ```\n\n## Testing\n\n- Testing Via Local\n\n  ```sh\n  npm test or make test\n  ```\n\n- Testing Via Local And Build\n\n  ```sh\n  make build\n  ```\n\n- Testing Via Docker\n\n  ```sh\n  docker build -t jwt-transform or make dkb tag=jwt-transform\n  ```\n\n## Bugs\n\nFor information on bugs related to package libraries, please visit [here](https://github.com/restuwahyu13/jwt-transform/issues)\n\n## Contributing\n\nWant to make **jwt-transform** more perfect ? Let's contribute and follow the [contribution guide.](https://github.com/restuwahyu13/jwt-transform/blob/main/CONTRIBUTING.md)\n\n## License\n\n- [MIT License](https://github.com/restuwahyu13/jwt-transform/blob/main/LICENSE.md)\n\n\u003cp align=\"right\" style=\"padding: 5px; border-radius: 100%; background-color: red; font-size: 2.5rem;\"\u003e\n  \u003cb\u003e\u003ca href=\"#jwt-transform\"\u003eBACK TO TOP\u003c/a\u003e\u003c/b\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frestuwahyu13%2Fjwt-transform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frestuwahyu13%2Fjwt-transform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frestuwahyu13%2Fjwt-transform/lists"}