Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

base69

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

base69 - npm Package Compare versions

Comparing version 0.0.1 to 0.1.0

base64.d.ts

13

package.json
{
"name": "base69",
"version": "0.0.1",
"version": "0.1.0",
"description": "Base69 encoding. Nice!",
"main": "index.js",
"main": "base64.js",
"module": "base64.js",
"types": "base64.d.ts",
"scripts": {

@@ -15,4 +17,5 @@ "test": "echo \"Error: no test specified\" && exit 1"

"base69",
"base64",
"encoding"
"base64 like",
"encoding",
"binary encoding"
],

@@ -25,2 +28,2 @@ "author": "Preet Shihn <preetshihn@gmail.com>",

"homepage": "https://github.com/pshihn/base69#readme"
}
}

@@ -1,1 +0,55 @@

# base69
# Base69
Base69 is a binary-to-text encoding scheme inspired by [Base64](https://en.wikipedia.org/wiki/Base64) encoding.
Why Base69 when Base64 is adequate?
Because it's *NICE*!
## Technique
Base69 is similar to Base64 - it uses a set of 69 characters (not 64) to represent the data and uses the character `=` to indicate padding.
Base64 works with blocks of 3 bytes which can be broken into four 6-bit chunks. (6 bits can represent 64 values).
Base69 works with block of 7 bytes instead which can be broken into eight 7-bit chunks.
(Need at least 7 bytes to represent 69 values; and since 7 is prime, need at least 7 bytes to break the data into 8 chunks of 7 bits).
The 69 characters in the set are:
```
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/-*<>|
```
## Algorithm
* Divide the input byte stream to 7 byte chunks.
* Divide the 56 bits in a chunk to 8 groups of 7 bits.
* Take the numeric value (n) of each 7 bit group and turn them into a 2 character string: Divide n by 69 and get the quotient and remainder. The string's first character is the character corresponding to the remainder and the second character corresponds to the quotient from the 69-character dataset.
* If the trailing data is less than 7 bytes, then extra bytes of value `0` are added at the end to make a 7-byte chunk.
* The last two characters of the encoded padded data are replaced by `p=` whre p is the number of bytes padded at the end. e.g. if the data at the end is 4 bytes long, 3 bytes are added. So the last 2 characters in the encoded string will be `3=`
## Implementations
A basic Javascript implementation is added to this project. Implementations in other languages are welcome from contributors.
[View demo](http://pshihn.github.io/base69/) that turns text to Base69 strings and vice versa.
## Javascript API
```javascript
export declare function encode(bytes: Uint8Array): string;
export declare function decode(value: string): Uint8Array;
```
## FAQ
**Why implement Base69?**
Because it's *noice!*
**Is it better than Base64?**
Not really
## License
[MIT License](https://github.com/pshihn/base69/blob/master/LICENSE) (c) [Preet Shihn](https://twitter.com/preetster)
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc