steel_crypt 0.4.1+1 copy "steel_crypt: ^0.4.1+1" to clipboard
steel_crypt: ^0.4.1+1 copied to clipboard

outdated

A collection of high-level API's exposing PointyCastle/encrypt to perform hashing and encrypting in popular and/or secure algorithms.

Steel Crypt #

A comprehensive library of high-level, cryptographic API's from PointyCastle/encrypt. This library currently supports hashing, two-way encryption, and key/IV generation:

2-Way Symmetric (class SymCrypt)

  • AES with PKCS7 Padding ('AES') (Default Encryption)
  • Salsa20 ('Salsa20')
  • More planned...
  • Note: AES requires 16 bytes of IV, whereas Salsa 20 requires 8

2-Way Asymmetric (class RsaCrypt)

  • RSA
  • Note: RsaCrypt is non-traditional. It auto-generates keys and stores them. However, it requires authentication text on the user end to work correctly.

Hashing (class HashCrypt)

  • SHA-3 ('SHA-3/___') :

    • /224
    • /256
    • /384
    • /512 (Default Hash)
  • SHA-2 ('SHA-___'):

    • -224
    • -256
    • -384
    • -512
  • SHA-1 ('SHA-1') UNSECURE

  • Tiger ('Tiger')

  • Blake2b ('Blake2b')

  • RipeMD ('RIPEMD-___'):

    • -128
    • -160
    • -256
    • -320
  • MD5 ('MD5') UNSECURE

  • MD4 ('MD4') UNSECURE

  • MD2 ('MD2') UNSECURE

  • Note: HMAC + key can be added to any of the above using the .hashHMAC(input, key) function.

  • Note: Compare plaintext to hashtext using .checkpass(plain, hashed) and .checkpassHMAC(plain, hashed, key)

Key/IV Generation (class CryptKey)

  • Generates cryptographically secure keys + IV's
  • Keys default to length 32, IV's to length 16

Usage #

A simple usage example:


import 'package:steel_crypt/steel_crypt.dart';

main() {

  var private = CryptKey().genKey();



  var encrypter = SymCrypt(private, 'AES');

  var encrypter2 = RsaCrypt();


  var hasher = HashCrypt();

  var hasher2 = HashCrypt('SHA-3/256');


  var iv = CryptKey().genIV(16);



  print(private);


  print(hasher.hash('word'));

  var hash = hasher.hash('word');

  print(hasher.checkpass('word', hash));


  print(hasher2.hashHMAC('word', private));


  print(encrypter.encrypt('word', iv));

  String crypted = encrypter.encrypt('word', iv);

  print(encrypter.decrypt(crypted, iv));



  var crypted2 = encrypter2.encrypt('word', "This is authentication text...");

  print(encrypter2.getString(crypted2));

  print(encrypter2.decrypt(crypted2));

}

Notes #

  • Use in production AT YOUR OWN RISK.
  • This is a work-in-progress, but will be actively maintained.
  • Please file feature requests and bugs at the issue tracker.
  • I'm busy, so file a PR for new features if possible...

TODO's #

  • Create Project + add "Starter Set" of algorithms
  • Add more, different hashes
  • Add CMAC
  • Add more, different 2-way encryption algorithms + packaging options
  • Tackle adding an RSA solution OR expose crypto_tool's RSA
  • Create a more complete password solution
  • Add more detailed example

Reading #

Licensed under the Mozilla Public License 2.0
70
likes
0
pub points
92%
popularity

Publisher

verified publisherkishoredev.live

A collection of high-level API's exposing PointyCastle/encrypt to perform hashing and encrypting in popular and/or secure algorithms.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

crypto_keys, encrypt, pointycastle

More

Packages that depend on steel_crypt