Coder Social home page Coder Social logo

base-emoji's People

Contributors

pfrazee avatar ralphtheninja avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

base-emoji's Issues

Feature request - get array of emojis

unicode is annoying to work with, you cant do split('') on the emoji string. would be nice to get a list of the emojis. im open to alternative solutions.

add example to readme

๐Ÿ’ก๐Ÿ’ณ๐Ÿ›„๐Ÿ—โ›ช๐Ÿ’ซโคต๏ธ๐Ÿš๐Ÿšง๐Ÿฌ๐Ÿฌ๐Ÿฆ๐Ÿ›€โžก๏ธ๐Ÿผ๐Ÿ—โฌ…๏ธ:donut:๐Ÿ”ฐ๐Ÿ‘ฎ๐Ÿšธ๐Ÿ”‹๐Ÿ’ฏยฉ๏ธ๐Ÿ•›๐ŸŽ‚๐Ÿ˜–๐ŸŒผ๐Ÿ”ก๐Ÿฐ๐Ÿ˜ž๐ŸŒ

Hmm... github can't do donut.

Use GitHub emoji descriptions :tada:

Since GitHub now support ๐Ÿ˜ข ๐Ÿ˜ง ๐Ÿ™ˆ ๐Ÿ™‰ ๐Ÿ™Š :shipit: in the repo description I consider it a complete lack of ๐Ÿ‘€ of this project not to exploit that to the fullest ๐Ÿ˜‰

Add an open-source license

Hello!

I wanted to implement your project in other languages, but I am not sure if I am legally allowed to do that. So open-sourcing your work would be a good idea.

suggest using 512 emojis

would be nice to compress even more. 512 emojis could be good. Wish there were 1024 to make things easier for us.

pick the 256 best emoji

I think we could optimize the emoji used,
there are some sets of emoji that are sort of similar, like multilpe different sorts of arrows,
one hump and two hump camels, several different buildings, etc, etc.
Also lots of clocks, it is probably easier to remember "clock" than 6:30

I've been thinking about actually experimentally testing this with a psychological experiment where people rember hashes encoded as hex, base64, and emoji, and detect how well they detect partial collisions by eye.

am i doing it wrong?

var emoji = require('base-emoji')
var data = new Buffer('d16ac00bb78efb8e59efdfa1206c43940e28c683afc432ba742276e01853c30e', 'hex')

var encoded = emoji.toUnicode(data)
console.log(encoded)
// outputs: ๐Ÿ˜ข๐ŸŒ‰๐Ÿšงโœˆ๏ธ๐Ÿธ๐Ÿซ๐ŸŒพ๐Ÿซ๐Ÿ’™๐Ÿฌ๐Ÿ’จ๐Ÿ•‘โฌ…๏ธ๐Ÿ’”๐Ÿป๐ŸŒ†๐Ÿš‘โ†–๏ธยฉ๐Ÿˆ๐Ÿ•˜๐Ÿ†’๐Ÿผ๐Ÿ’ฅ๐Ÿ‘ฅโ†˜๏ธ๐Ÿฐ๐Ÿ“…โ—€๏ธโฌ›๏ธ๐Ÿช๐Ÿš‘

var decoded = emoji.fromUnicode(encoded)
console.log(decoded.toString('hex') === data.toString('hex'))
// outputs: false

memorable emoji experiment

In a secure communication system, it is necessary at some point to verify keys.
Usually, this is represented as text key encoded as letters, hex, base32, base58 or maybe base64. Since a hash is a lot to deal with, often the hash is truncated to be easier for humans to process. (it's important not to truncate too much, or security will be lost https://evil32.com/ )

Humans have an approximately fixed capacity to remember things, and so when looking at a finger print, how many bits are they actually remembering? Since it seems the way humans work is they can remember (say) 7 things, but there is not a limit on the size of the set the 7 things are picked from. They could just as easily remember 7 animals as 7 digits.

Thus, to exand the security property of the user interface, if key fingerprints are displayed in a denser format (such as base emoji) then humans ought to be able to remember more bits, and thus have more secure fingerprints.

I want to test this in an experiment - i figure, a web page test subjects visit, and it associates keys with user names - then an attacker is simulated, where the subject must flag invalid keys that partially collide with their known keys.

The question is: does the detection success vary in proportion to encoding, and collision length?

@jbenet would love your ideas on this.

So far I have been unable to find any research on the usability of key fingerprints.

4 alphabets

I propose:

4 alphabets:

  • ๐Ÿ˜Š be256 - 1 emoji 1 byte
  • ๐Ÿ˜€ be512 - 1 emoji 2 bytes
  • ๐Ÿ˜ƒ be768 - 1 emoji 3 bytes
  • ๐Ÿ˜„ be1024 - 1 emoji 4 bytes

notes:

  • emoji are unicode, and we're picking alphabets, we already have tables at play.
  • there's 1244 emoji, we could sacrifice 4 to be alphabet identifiers. I suggest those above (increasing in happiness ๐Ÿ˜„ ).
  • Each should be contained in the other, so there's no ambiguity on what number they represent.
  • You get a smiley face at the beginning of every (self-describing) emoji-text!! (it would make me so happy)
  • if there is no leading encoding identifier (quirksmode), you assume the smallest alphabet possible (when you run into a character from a larger set you bump up to that. statistically, we're very unlikely to find sequences of bytes like: ([0-256]000)+ -- ie. [10, 0, 0, 0, 2, 0, 0, 0, ... ])

[ deleted a portion in which jbenet utterly fails to do simple math ]

Guys, be1024 is going to be huge sweet.


updates:

  • added ๐Ÿ”ฅ to sha1, and "(+1 alphabet)"
  • deleted math fail in which I claimed the equivalent of 2^10 = 2^32

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.