pvasa / Easycrypt
Licence: apache-2.0
Android cryptography library with SecureRandom patches.
Stars: ✭ 102
Programming Languages
kotlin
9241 projects
Projects that are alternatives of or similar to Easycrypt
Lazysodium Android
An Android implementation of the Libsodium cryptography library. For the lazy dev.
Stars: ✭ 69 (-32.35%)
Mutual labels: hashing, cryptography, encryption, decryption
Padding Oracle Attacker
🔓 CLI tool and library to execute padding oracle attacks easily, with support for concurrent network requests and an elegant UI.
Stars: ✭ 136 (+33.33%)
Mutual labels: cryptography, encryption, decryption
Openssl
TLS/SSL and crypto library
Stars: ✭ 17,157 (+16720.59%)
Mutual labels: cryptography, encryption, decryption
Pgsodium
Modern cryptography for PostgreSQL using libsodium.
Stars: ✭ 202 (+98.04%)
Mutual labels: cryptography, encryption, decryption
Java Crypto Utils
Java Cryptographic, Encoding and Hash Utilities
Stars: ✭ 15 (-85.29%)
Mutual labels: cryptography, encryption, decryption
Gonnacry
A Linux Ransomware
Stars: ✭ 341 (+234.31%)
Mutual labels: cryptography, encryption, decryption
Cryptr
A simple shell utility for encrypting and decrypting files using OpenSSL.
Stars: ✭ 81 (-20.59%)
Mutual labels: cryptography, encryption, decryption
Webcrypto
W3C Web Cryptography API for Node.js
Stars: ✭ 79 (-22.55%)
Mutual labels: hashing, cryptography, encryption
Simon speck ciphers
Implementations of the Simon and Speck Block Ciphers
Stars: ✭ 74 (-27.45%)
Mutual labels: cryptography, encryption, decryption
0fc
Anonymous web chat server, built on top of Themis/WebThemis
Stars: ✭ 98 (-3.92%)
Mutual labels: cryptography, encryption
Wolfssl
wolfSSL (formerly CyaSSL) is a small, fast, portable implementation of TLS/SSL for embedded devices to the cloud. wolfSSL supports up to TLS 1.3!
Stars: ✭ 1,098 (+976.47%)
Mutual labels: cryptography, encryption
Libtomcrypt
LibTomCrypt is a fairly comprehensive, modular and portable cryptographic toolkit that provides developers with a vast array of well known published block ciphers, one-way hash functions, chaining modes, pseudo-random number generators, public key cryptography and a plethora of other routines.
Stars: ✭ 1,080 (+958.82%)
Mutual labels: cryptography, encryption
Fhe Toolkit Linux
IBM Fully Homomorphic Encryption Toolkit For Linux. This toolkit is a Linux based Docker container that demonstrates computing on encrypted data without decrypting it! The toolkit ships with two demos including a fully encrypted Machine Learning inference with a Neural Network and a Privacy-Preserving key-value search.
Stars: ✭ 1,123 (+1000.98%)
Mutual labels: cryptography, encryption
Simple Polymorphic Engine Spe32
Simple Polymorphic Engine (SPE32) is a simple polymorphic engine for encrypting code and data. It is an amateur project that can be used to demonstrate what polymorphic engines are.
Stars: ✭ 59 (-42.16%)
Mutual labels: encryption, decryption
Low Latency Android Ios Linux Windows Tvos Macos Interactive Audio Platform
🇸Superpowered Audio, Networking and Cryptographics SDKs. High performance and cross platform on Android, iOS, macOS, tvOS, Linux, Windows and modern web browsers.
Stars: ✭ 1,121 (+999.02%)
Mutual labels: hashing, cryptography
Seal Demo
Demos, Examples, Tutorials for using Microsoft SEAL library.
Stars: ✭ 63 (-38.24%)
Mutual labels: cryptography, encryption
Node Argon2
Node.js bindings for Argon2 hashing algorithm
Stars: ✭ 1,008 (+888.24%)
Mutual labels: hashing, encryption
Helm Secrets
DEPRECATED A helm plugin that help manage secrets with Git workflow and store them anywhere
Stars: ✭ 1,129 (+1006.86%)
Mutual labels: encryption, decryption
EasyCrypt
Secure and efficient cryptography library for Android. (Auto fix SecureRandom bugs in API 18 and below.)
Note: EasyCrypt uses only secure implementations and all the known Crypto bugs are already dealt with properly. More information here.
Features
- AES-256 encryption algorithm
- CBC/CTR mode of operations
- Block padding with PKCS7 (only with CBC)
- Computationally secure random salt (of cipher block size)
- Password stretching with PBKDF2
- Random IV generated on each encryption (16 bytes)
- Supports MD5, SHA1, and SHA2 hash functions
- Generate secure keys with SecureRandom or random.org
- Asymmetric encryption with RSA
- Auto handle large data by using hybrid asymmetric encryption
- Asymmetric RSA signing and verification
- Supported RSA key sizes are 2048 bits and 4096 bits
- Password analysis for strength, crack times, weakness, etc using nulab's zxcvbn4j library
Sample app
Download the sample app from play store.
Install
Add in your app's build.gradle
dependencies {
..
implementation "com.pvryan.easycrypt:easycrypt:1.3.3"
}
Usage
val eCryptSymmetric = ECSymmetric()
val eCryptAsymmetric = ECAsymmetric()
val eCryptHash = ECHash()
val eCryptPass = ECPasswords()
Symmetric key encryption
Encrypt data
eCryptSymmetric.encrypt (input, password,
object : ECResultListener {
// Optional
override fun onProgress(newBytes: Int, bytesProcessed: Long, totalBytes: Long) {
}
override fun <T> onSuccess(result: T) {
}
override fun onFailure(message: String, e: Exception) {
}
},
outputFile // Optional
)
Decrypt data
eCryptSymmetric.decrypt(input, password,
object : ECResultListener {
// Optional
override fun onProgress(newBytes: Int, bytesProcessed: Long, totalBytes: Long) {
}
override fun <T> onSuccess(result: T) {
}
override fun onFailure(message: String, e: Exception) {
}
},
outputFile // Optional
)
Asymmetric key encryption
Encrypt data
eCryptAsymmetric.generateKeyPair(object : ECRSAKeyPairListener {
override fun onSuccess(keyPair: KeyPair) {
privateKey = keyPair.private as RSAPrivateKey // Save private key
eCryptAsymmetric.encrypt(input, keyPair.public as RSAPublicKey,
object : ECResultListener {
// Optional
override fun onProgress(newBytes: Int, bytesProcessed: Long, totalBytes: Long) {
}
override fun <T> onSuccess(result: T) {
}
override fun onFailure(message: String, e: Exception) {
}
},
outputFile // Optional
)
}
override fun onFailure(message: String, e: Exception) {
e.printStackTrace()
}
}, keySize = eCryptAsymmetric.KeySizes._4096)
Decrypt data
eCryptAsymmetric.decrypt(input, privateKey,
object : ECResultListener {
// Optional
override fun onProgress(newBytes: Int, bytesProcessed: Long, totalBytes: Long) {
}
override fun <T> onSuccess(result: T) {
}
override fun onFailure(message: String, e: Exception) {
}
},
outputFile // Optional
)
Sign data
eCryptKeys.genRSAKeyPair(object : ECRSAKeyPairListener {
override fun onGenerated(keyPair: KeyPair) {
publicKey = keyPair.public as RSAPublicKey
eCryptAsymmetric.sign(input,
keyPair.private as RSAPrivateKey,
object : ECResultListener {
// Optional
override fun onProgress(newBytes: Int, bytesProcessed: Long, totalBytes: Long) {
}
override fun <T> onSuccess(result: T) {
}
override fun onFailure(message: String, e: Exception) {
}
},
signatureOutputFile)
}
override fun onFailure(message: String, e: Exception) {
}
})
Verify data
eCryptAsymmetric.verify(input, publicKey, signatureFile,
object : ECVerifiedListener {
override fun onSuccess(verified: Boolean) {
}
override fun onFailure(message: String, e: Exception) {
}
}
)
Hash data
eCryptHash.calculate(input, hashAlgorithm, // from ECHashAlgorithms
object : ECResultListener {
// Optional
override fun onProgress(newBytes: Int, bytesProcessed: Long, totalBytes: Long) {
}
override fun <T> onSuccess(result: T) {
}
override fun onFailure(message: String, e: Exception) {
}
},
outputFile // Optional
)
Analyze password
val analysis: ECPasswordAnalysis = ECPasswordAnalyzer.analyze("thisismypassword")
Input | Output |
---|---|
File | outputFile |
FileInputStream | outputFile |
ByteArray | String or outputFile (if provided) |
ByteArrayInputStream | String or outputFile (if provided) |
String | String or outputFile (if provided) |
CharSequence | String or outputFile (if provided) |
Anything else | InvalidParameterException |
Generate key with SecureRandom (pseudo-random)
val password = eCryptPass.genSecureRandomPassword(length, charArrayOf(/*symbols to be used in password*/))
Generate key with Random.org (true random)
For sample to work enter your API key in FragmentPasswords
eCryptPass.genRandomOrgPassword(
length,
"random-org-api-key", //TODO: Replace with your random.org api key
new ECPasswordListener() {
@Override
public void onFailure(@NonNull String message, @NonNull Exception e) {
}
@Override
public void onSuccess(@NonNull String password) {
}
});
License
Copyright 2018 Priyank Vasa
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].