Hivecrypt: JavaScript module for Steem memo encrypt/decrypt on wide range of environments

in #encryption4 years ago (edited)

Hivecrypt thumbnail.png

Are you getting the following error message when trying to encrypt or decrypt a Steem memo in ElectronJS or React Native using steem-js? Perhaps looking for something that works for your framework that you're using when building your cutting-edge Steem DApp?

Screenshot 20201122 at 12.04.23 PM.png

Introducing Hivecrypt, a module that you can import into a wide range of JavaScript environments, including desktop and mobile app frameworks like ElectronJS, that wouldn't otherwise work with existing libraries.

Adapted from this pull request on dhive that was never merged into master (plus the major help from this file), Hivecrypt was built on Crypto-JS that works on virtually any latest JavaScript environments, unlike the implementation on steem-js and the pull request mentioned above, that uses the crypto NodeJS module that only works on certain environments.

How to use?

Hivecrypt can be installed from npm with the following command:

npm i hivecrypt

It can also be imported into the browser by including the following script tag in your HTML file, where Hivecrypt will be available through window.hivecrypt:

<script src="https://unpkg.com/hivecrypt/bin/hivecrypt.min.js"></script>

Once installed, it may be used for encrypting and decrypting memos just like how it is done with steem-js, but works in more environments.

const hivecrypt = require('hivecrypt') // CommonJS

let encrypted = hivecrypt.encode('privatekey1','publickey2','#somesecretmessage')
let decrypted = hivecrypt.decode('privatekey2',encrypted)

console.log(encrypted,decrypted)

It might not be built with optimizing for the smallest package size in mind, but at least it is something that is usable for devs. And yes, it was originally written for Hive but works for any 3 character public key prefixes.