GithubHelp home page GithubHelp logo

rclone-js's Introduction

rclone-js Travis Build Codecov

Pure Javascript implementation of the cipher used in rclone (crypt-mount).

Installation

Node

npm install rclone

Browser

You can find a browser bundle here: https://unpkg.com/rclone/dist/rclone.umd.min.js
Use window.rclone.Rclone to access the constructor function.

Getting Started

Examples

Encrypt/Decrypt Paths

import { Rclone } from 'rclone';

// Create Rclone instance 
Rclone({
    password: 'UmyLSdRHfew6aual28-ggx78qHqSfQ',
    salt: 'Cj3gLa5PVwc2aot0QpKiOZ3YEzs3Sw'
})
.then(rclone => { 
   
  // Decryption
  console.log(
    rclone.Path.decrypt("dk7voi2247uqbgbuh439j13eo0/p0q5lhi767fsplsdjla7j7uv60") // Hello World
  );
  
  // Encryption
  console.log(
    rclone.Path.encrypt("Hello/World") // dk7voi2247uqbgbuh439j13eo0/p0q5lhi767fsplsdjla7j7uv60
  );
  
})
.catch(error => {
  // Catch error creating rclone instance 
})

Decrypt Files

Concept

To decrypt files in the browser rclone-js is using a node concept called Streams in the browser using readable-stream. You can create a decrypting ReadableStream by using the function rclone.File.createReadStream which will take a function that needs to return a ReadableStream representing the decrypted file. To provide random access rclone will pass an options object to the function like used by the node fs module. An important additon to these options is the chunkSize propertie, it is needed because rclone uses a block cipher and can only operate on a integer multiple of this size. These options need to be taken into account for the creation of the underyling ReadableStream returned from the function.

Example

Using fetch and range headers to decrypt files from amazon s3

rclone-js's People

Contributors

fweinb avatar alolis avatar

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.