123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- package main
- import (
- "fmt"
- "math"
- "os"
- "strings"
- )
- func contains(arr [3]string, str string) bool {
- for _, a := range arr {
- if a == str {
- return true
- }
- }
- return false
- }
- func main() {
- var charsets map[string]string
- var usedCharsets[] string
- var possibleSymbols int = 0
- if len(os.Args) == 1 {
- fmt.Println("Usage:\n\tpassphrase-entropy passphrase\n\nNo passphrase given.")
- os.Exit(0)
- }
- passphrase := strings.Join(os.Args[1:]," ")
- passphraseLength := len(passphrase)
- fmt.Println("\nEvaluated string:", passphrase)
- charsets = make(map[string]string)
- charsets["Numbers"] = "0123456789"
- charsets["Lowercase"] = "abcdefghijklmnopqrstuvwxyz"
- charsets["Uppercase"] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- charsets["Common Special Characters"] = " !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~‚"
- charsets["Extended ASCII"] = "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
- for key, value := range charsets {
- if strings.ContainsAny(passphrase, value) {
- possibleSymbols += len(value)
- usedCharsets = append(usedCharsets, key)
- }
- }
- entropy := math.Log2(math.Pow(float64(possibleSymbols), float64(passphraseLength)))
- fmt.Println("\nNumber of characters:", passphraseLength)
- fmt.Println("\nUsed character sets:", strings.Join(usedCharsets, ", "))
- fmt.Println("\nPassphrase entropy:", entropy)
- }
|