Coder Social home page Coder Social logo

saransh-cpp / chaoticencryption.jl Goto Github PK

View Code? Open in Web Editor NEW
31.0 1.0 5.0 5.02 MB

Fast image encryption and decryption algorithms in Julia!

Home Page: https://saransh-cpp.github.io/ChaoticEncryption.jl/

License: MIT License

Julia 100.00%
julia-package encryption-decryption pseudo-random-generator julia

chaoticencryption.jl's Issues

Use pre-allocation

ChaoticEncryption.jl Version

0.1.1

Julia Version

1.7.2

Describe the bug

The push! function is slower in comparison to pre-allocating the array and replacing its element -

keys = Vector{Int64}()
x = x_init
for i = 1:num_keys
x = r * x * (1 - x)
key = x * scaling_factor % upper_bound
push!(keys, trunc(Int, key))
end

Steps to Reproduce

No response

Expected behaviour

No response

Relevant log output

No response

Additional context

Change the implementation to speed up the package

Add CI to clean gh-pages

Description

name: Doc Preview Cleanup

on:
  pull_request:
    types: [closed]

jobs:
  doc-preview-cleanup:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout gh-pages branch
        uses: actions/checkout@v2
        with:
          ref: gh-pages
      - name: Delete preview and history + push changes
        run: |
            if [ -d "previews/PR$PRNUM" ]; then
              git config user.name "Documenter.jl"
              git config user.email "[email protected]"
              git rm -rf "previews/PR$PRNUM"
              git commit -m "delete preview"
              git branch gh-pages-new $(echo "delete history" | git commit-tree HEAD^{tree})
              git push --force origin gh-pages-new:gh-pages
            fi
        env:
            PRNUM: ${{ github.event.number }}

Motivation

No response

Possible Implementation

No response

Additional context

No response

Migrate to the latest julia version

Description

Migrate the code, examples, and documentation to Julia 1.7.2

Motivation

The failing doctests might pass, plus good to be on the latest Julia version as our CI runs on the same.

Possible Implementation

No response

Additional context

No response

Add examples for `!` methods

Description

The documentation right now lacks examples for encrypting and decrypting images in-place. Add a small section showing the same.

Motivation

No response

Possible Implementation

No response

Additional context

No response

Add more results in README

Description

Add more results by combining different images, dimensions, PRNGs etc.

Motivation

No response

Possible Implementation

No response

Additional context

No response

Remove redundant dependencies

Description

I think a lot of deps are not being used, remove them.

Motivation

Redundant code

Possible Implementation

No response

Additional context

No response

Create a table of results in the README file

Description

Right now the results look bland, add a table that looks something like this -

Results

S. No. Original Image Image Dimensions Encrypted Image Decrypted Image PRNG used Algorithm used
1 x (512, 512) y z Logistic Map (logistic_key) Substitution (substitution_encryption, substitution_decryption)

Motivation

Would look good

Possible Implementation

No response

Additional context

No response

[Bug]: Failing doctests (passing as warning right now)

ChaoticEncryption.jl Version

dev

Julia Version

1.7.1

Describe the bug

Look at the documentation workflow. The tests are failing (are passing as warning intentionally) because of a type mismatch.

Steps to Reproduce

No response

Expected behaviour

No response

Relevant log output

No response

Additional context

No response

Vectorize substitution algorithm's functions

Description

Vectorize both the functions using the . operator to fasten the execution.

Motivation

Fast encryption and decryption!

Possible Implementation

No response

Additional context

No response

Add more documentation

Description

Current documentation has only API documentation. Add more documentation and link the jupyter notebook examples.

Motivation

No response

Possible Implementation

No response

Additional context

No response

Add benchmarks

Description

Using Julia gives us the advantage of speed, hence adding some benchmarks would make sure that the speed doesn't go low. Add some benchmarks and also a new workflow to benchmark periodically and on a PR.

Motivation

The package should be fast, given that it is operating on 1000s of pixels.

Possible Implementation

BenchmarkTools.jl

Additional context

No response

Add docstring for the module

Description

Right now the documentation for the module as a whole is missing. This should be added.

Motivation

No response

Possible Implementation

No response

Additional context

No response

TagBot trigger issue

This issue is used to trigger TagBot; feel free to unsubscribe.

If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.

If you'd like for me to do this for you, comment TagBot fix on this issue.
I'll open a PR within a few hours, please be patient!

Create examples

Separate out examples from the docstrings into a new examples folder. Maybe try out Pluto.jl for julia notebooks!

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.