All Projects → muesli → Toktok

muesli / Toktok

Licence: agpl-3.0
Typo/error resilient, human-readable token generator

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Toktok

Be Pretty
💄 a small CLI utility for every lazy prettier maximalist out there
Stars: ✭ 38 (-5%)
Mutual labels:  hacktoberfest
Pyflakes
A simple program which checks Python source files for errors
Stars: ✭ 991 (+2377.5%)
Mutual labels:  hacktoberfest
Linuxbrew Core
🍻🐧 Core formulae for the Homebrew package manager on Linux
Stars: ✭ 999 (+2397.5%)
Mutual labels:  hacktoberfest
Swamp
Teh AWS profile manager
Stars: ✭ 38 (-5%)
Mutual labels:  hacktoberfest
Mg
Minimal UI library based on relm (GTK+), written in Rust.
Stars: ✭ 38 (-5%)
Mutual labels:  hacktoberfest
Twitch Giphy
Um chatbot para Twitch que integra a API do GIPHY, fazendo com que hashtags no chat da Twitch virem GIFs na Live :)
Stars: ✭ 39 (-2.5%)
Mutual labels:  hacktoberfest
Rw.rs
Free shell account and web 1.0 hosting @ http://rw.rs/~you
Stars: ✭ 38 (-5%)
Mutual labels:  hacktoberfest
Yfpy
Python API wrapper for the Yahoo Fantasy Sports public API (focuses mainly on NFL, but also supports some usage with NHL, MLB, and NBA).
Stars: ✭ 40 (+0%)
Mutual labels:  hacktoberfest
Dbdpg
Perl Postgres driver DBD::Pg aka dbdpg
Stars: ✭ 38 (-5%)
Mutual labels:  hacktoberfest
Axios Module
Secure and easy axios integration with Nuxt.js
Stars: ✭ 998 (+2395%)
Mutual labels:  hacktoberfest
Newsscraper
Stars: ✭ 38 (-5%)
Mutual labels:  hacktoberfest
Mvp
PowerShell Module to interact with the Microsoft MVP API
Stars: ✭ 38 (-5%)
Mutual labels:  hacktoberfest
Promcord
📊 Analyze your entire discord guild in grafana using prometheus. Message, User, Game and Voice statistics...
Stars: ✭ 39 (-2.5%)
Mutual labels:  hacktoberfest
Blaze
⚡ File sharing progressive web app built using WebTorrent and WebSockets
Stars: ✭ 991 (+2377.5%)
Mutual labels:  hacktoberfest
Hacktoberfest2020
Repository to let enthusiasts create issues and pull requests for the Open Source event
Stars: ✭ 40 (+0%)
Mutual labels:  hacktoberfest
Yii Queue
Queue extension for Yii 3.0
Stars: ✭ 38 (-5%)
Mutual labels:  hacktoberfest
Spreed
📞😀 Nextcloud Talk – chat, video & audio calls for Nextcloud
Stars: ✭ 994 (+2385%)
Mutual labels:  hacktoberfest
Fuzzy C Means
A simple python implementation of Fuzzy C-means algorithm.
Stars: ✭ 40 (+0%)
Mutual labels:  hacktoberfest
Code problems
Code Problems from LeetCode website and other fun code problems websites. The goal is to help people studying for coding interviews.
Stars: ✭ 40 (+0%)
Mutual labels:  hacktoberfest
Fbchat
Facebook Chat (Messenger) for Python
Stars: ✭ 995 (+2387.5%)
Mutual labels:  hacktoberfest

toktok

Build Status Coverage Status Go ReportCard GoDoc

A human-friendly token generator

Creates tokens which avoid characters that can be easily misinterpreted, like '1' and 'I' or '8' and 'B', as well as repeated characters within the token. It also compares newly generated tokens to all previously generated ones and guarantees a safety distance between the tokens, so they become resilient to typos or other human entry errors.

Installation

Make sure you have a working Go environment (Go 1.5 or higher is required). See the install instructions.

To install toktok, simply run:

go get github.com/muesli/toktok

To compile it from source:

cd $GOPATH/src/github.com/muesli/toktok
go get -u -v
go build && go test -v

Example

package main

import (
	"fmt"

	"github.com/muesli/toktok"
)

func main() {
	// Generate a new token bucket. Each generated token will be 8 characters long
	bucket, _ := toktok.NewBucket(8)

	// Generate a bunch of tokens with a safety distance of 4
	// Distance is calculated by insertion cost (1), deletion cost (1) and substitution cost (2)
	for i := 0; i < 9; i++ {
		token, _ := bucket.NewToken(4)
		fmt.Printf("Generated Token %d: %s\n", i, token)
	}

	// One more token that we will tamper with
	token, _ := bucket.NewToken(4)
	fmt.Printf("Generated Token 9: %s\n", token)
	token = "_" + token[1:7] + "_"

	// Find the closest match for the faulty token
	match, distance := bucket.Resolve(token)
	fmt.Printf("Best match for '%s' is token '%s' with distance %d\n", token, match, distance)
}

Result

Generated Token 0: J3KPC9YF
Generated Token 1: PXTWDC9P
Generated Token 2: WNANK4FU
...
Generated Token 9: Y3NCDFWN
Best match for '_3NCDFW_' is token 'Y3NCDFWN' with distance 4
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].