Code Monkey home page Code Monkey logo

ntc_dcrypto's Introduction

ntc_dcrypto

ntc_dcrypto is a module dart cryptography.

Use this package as a library

Add this to your package's pubspec.yaml file:

dependencies:
  ntcdcrypto: ^0.2.0

1. An implementation of Shamir's Secret Sharing Algorithm 256-bits in Dart

Usage

Use encode/decode Base64Url

import 'package:ntcdcrypto/ntcdcrypto.dart';

main() {
  SSS sss = new SSS();
  String s = "nghiatcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
  print("secret: ${s}");
  print("secret.length: ${s.length}");
  // creates a set of shares
  List<String> arr = sss.create(3, 6, s, true);
  //print(arr);

  // combines shares into secret
  var s1 = sss.combine(arr.sublist(0, 3), true);
  print("combines shares 1 length = ${arr.sublist(0, 3).length}");
  print("secret: ${s1}");
  print("secret.length: ${s1.length}");

  var s2 = sss.combine(arr.sublist(3, arr.length), true);
  print("combines shares 2 length = ${arr.sublist(3, arr.length).length}");
  print("secret: ${s2}");
  print("secret.length: ${s2.length}");

  var s3 = sss.combine(arr.sublist(1, 5), true);
  print("combines shares 3 length = ${arr.sublist(1, 5).length}");
  print("secret: ${s3}");
  print("secret.length: ${s3.length}");
}

Use encode/decode Hex

import 'package:ntcdcrypto/ntcdcrypto.dart';

main() {
  SSS sss = new SSS();
  String s = "nghiatcxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
  print("secret: ${s}");
  print("secret.length: ${s.length}");
  // creates a set of shares
  List<String> arr = sss.create(3, 6, s, false);
  //print(arr);

  // combines shares into secret
  var s1 = sss.combine(arr.sublist(0, 3), false);
  print("combines shares 1 length = ${arr.sublist(0, 3).length}");
  print("secret: ${s1}");
  print("secret.length: ${s1.length}");

  var s2 = sss.combine(arr.sublist(3, arr.length), false);
  print("combines shares 2 length = ${arr.sublist(3, arr.length).length}");
  print("secret: ${s2}");
  print("secret.length: ${s2.length}");

  var s3 = sss.combine(arr.sublist(1, 5), false);
  print("combines shares 3 length = ${arr.sublist(1, 5).length}");
  print("secret: ${s3}");
  print("secret.length: ${s3.length}");
}

Run Unit Test

cd ntc_dcrypto
flutter test

License

This code is under the Apache License v2.

ntc_dcrypto's People

Contributors

congnghia0609 avatar darksightkellar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

ntc_dcrypto's Issues

fails with non Latin symbols (Cyrillic, for example)

`
import 'package:ntcdcrypto/ntcdcrypto.dart';

void main() {
const secret = "бар"; // wrong decoded
// const secret = "бор"; // fails decode
final sss = SSS();
final shards = sss.create(2, 3, secret, true);

print("secret.length: ${secret.length}, secret: $secret");
print(shards);

var s1 = sss.combine(shards.sublist(0, 2), true);
print("secret.length: ${s1.length}, secret: $s1");

var s2 = sss.combine(shards.sublist(1), true);
print("secret.length: ${s2.length}, secret: $s2");

var s3 = sss.combine(shards, true);
print("secret.length: ${s3.length}, secret: $s3");
}
`

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.