npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

errors-crypto

v1.0.6

Published

Security for everyone, and everything.

Downloads

8

Readme

errors-crypto

Security for everyone, and everything.

The crypto module is an implementation of AES-256-CBC. It simplifies the case of using random Cipher IVs for the user. Now all that's needed is a key, and the result will yet be random. The tools used to perform these cryptographic actions are native in Node.js, meaning they're written in C-lang, therefore it is fast and reliable.

Security

The method used in this module to achieve is a theoretical idea; given a KEY, HMAC(KEY, KEY), PSUEDORANDOM_BYTES(16) we get all the factors needed to do two things, randomize and secure. Here's a brief functional view of how the method works:

-- User defined.
MESSAGE = 'abc'
KEY = 'password'

-- Gather IVs
IV1 = PSUEDORANDOM_BYTES(16)
IV2 = HMAC(KEY, KEY)

-- Encryption
RESULT1 = ENCRYPT( MESSAGE, IV1, KEY )
RESULT2 = ENCRYPT( IV1 + RESULT1, IV2, KEY )

-- Done
return RESULT2

Note that the HMAC (hashing) algorithm can be any algorithm returning a 16 byte string. MD5 is used here. MD5 is considered safe enough because the hash alone is not enough to decrypt RESULT 2, that is because no MD5 dictionary can possibly have the result of a hash signed with it's own value. If a dictionary has a result, it will never be the same as the unhashed value. The only true way to be able to decrypt this is by knowing the KEY value. Knowing the key value gives you access to both IV1 and IV2 values. Meaning you can decrypt RESULT 2 and RESULT 1.

Usage

In use with Node.js and TypeScript you simple just import the module's default export.

import Crypto from "errors-crypto";

However, if you're only using CommonJS (the require function) then you must manually select the default export.

const Crypto = require("errors-crypto").default;

The module comes with two exported functions, encrypt and decrypt.

Crypto.encrypt

Crypto.encrypt(data: string, key: string): string

Encrypt data (text) into obfuscated non-readable data.

Params

| Type  | Name | Description | | :----: | :--: | :------------------------------------------------------------- | | String | data | This is the data you want to encrypt. | | String | key | This is the key that you want to use when encrypting the data. |

Returns

Crypto.decrypt

Crypto.decrypt(data: string, key: string): string

Decrypt data (non-readable text) into readable-text.

Params:

| Type  | Name | Description | | :----: | :--: | :------------------------------------------------------------- | | String | data | This is the data you want to decrypt. | | String | key | This is the key that you want to use when decrypting the data. |

Returns