Skip to content

ApelegHQ/c-sha2

Repository files navigation

🔒 SHA-2 implementation in C

Reliability Rating Vulnerabilities Bugs Security Rating Maintainability Rating NPM Downloads


🚀 Features

  • C implementation
  • JavaScript compiled from C
  • No dependencies
  • No async required
  • Supports SHA-256 (and SHA-512, but that's currently not part of the NPM package)
  • Can export the digest state
  • Can easily work with streams

💻 Installation

The C library can be compiled from source using cmake.

To install the JavaScript package, you can use npm or yarn:

npm install @exact-realty/sha2

or

yarn add @exact-realty/sha2

📚 Usage

Decrypting Data

import sha2 from '@exact-realty/sha2';

// Create a SHA-256 instance
const hasher = sha2();

// Update the hash with data
hasher.update(Buffer.from('Hello, world!'));

// Finalize the hash and get the result
const hashResult = hasher.finish();
// ArrayBuffer {
//  [Uint8Contents]: <31 5f 5b db 76 d0 78 c4 3b 8a c0 06 4e 4a 01 64 61 2b 1f
//    ce 77 c8 69 34 5b fc 94 c7 58 94 ed d3>,
//  byteLength: 32
// }

// Export the current state
const exportedState = hasher.exportState();
// ArrayBuffer {
//  [Uint8Contents]: <6a 09 e6 67 bb 67 ae 85 3c 6e f3 72 a5 4f f5 3a 51 0e 52
//    7f 9b 05 68 8c 1f 83 d9 ab 5b e0 cd 19 00 00 00 00 00 00 00 00 00 00 00 00
//    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
//    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
//    00 00 00 00 00 00 ... 4 more bytes>,
//  byteLength: 104
// }

// Import a previously exported state
hasher.importState(exportedState);

// Scrub the hash state
hasher.scrub();

🤝 Contributing

We welcome any contributions and feedback! Please feel free to submit pull requests, bug reports or feature requests to our GitHub repository.

📜 License

This project is released under the Apache 2.0 license. Check out the LICENSE file for more information.