All Projects → RNCryptor → Jncryptor

RNCryptor / Jncryptor

Licence: apache-2.0
Java implementation of RNCryptor

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Jncryptor

Hat.sh
encrypt and decrypt files in your browser. Fast, Secure client-side File Encryption and Decryption using the web crypto api
Stars: ✭ 886 (+373.8%)
Mutual labels:  encryption, aes
Lockbox
Encrypted storage with built-in key management facilities
Stars: ✭ 94 (-49.73%)
Mutual labels:  encryption, aes
Crypto Es
A cryptography algorithms library
Stars: ✭ 65 (-65.24%)
Mutual labels:  encryption, aes
Link Lock
Password-protect URLs using AES in the browser; create hidden bookmarks without a browser extension
Stars: ✭ 418 (+123.53%)
Mutual labels:  encryption, aes
Aes
Verilog implementation of the symmetric block cipher AES (Advanced Encryption Standard) as specified in NIST FIPS 197. This implementation supports 128 and 256 bit keys.
Stars: ✭ 131 (-29.95%)
Mutual labels:  encryption, aes
Xjar
Spring Boot JAR 安全加密运行工具,支持的原生JAR。
Stars: ✭ 692 (+270.05%)
Mutual labels:  encryption, aes
Encryptor4j
Strong encryption for Java simplified
Stars: ✭ 92 (-50.8%)
Mutual labels:  encryption, aes
EasyAES
AES encrypt/decrypt, Android, iOS, php compatible(兼容php, Android, iOS平台)
Stars: ✭ 79 (-57.75%)
Mutual labels:  encryption, aes
Cross Platform Aes
Simple cross-platform encryption and decryption using AES
Stars: ✭ 127 (-32.09%)
Mutual labels:  encryption, aes
Py7zr
7zip in python3 with ZStandard, PPMd, LZMA2, LZMA1, Delta, BCJ, BZip2, and Deflate compressions, and AES encryption.
Stars: ✭ 110 (-41.18%)
Mutual labels:  encryption, aes
Gonnacry
A Linux Ransomware
Stars: ✭ 341 (+82.35%)
Mutual labels:  encryption, aes
Crypto Notepad
🔑 Simple notepad for Windows with encryption features
Stars: ✭ 160 (-14.44%)
Mutual labels:  encryption, aes
Aes Rsa Java
AES+RSA结合应用java示例
Stars: ✭ 295 (+57.75%)
Mutual labels:  encryption, aes
Ksprefs
🚀⚡ Kotlin SharedPreferences wrapper & cryptographic preferences android library.
Stars: ✭ 176 (-5.88%)
Mutual labels:  encryption, aes
EncrypC
🔑 File Encryption Application using Python.
Stars: ✭ 14 (-92.51%)
Mutual labels:  encryption, aes
Hybrid Crypto Js
RSA+AES hybrid encryption implementation for JavaScript. Works with Node.js, React Native and modern browsers.
Stars: ✭ 87 (-53.48%)
Mutual labels:  encryption, aes
Python-File-Encryptor
Encrypt and Decrypt files using Python (AES CBC MODE)
Stars: ✭ 51 (-72.73%)
Mutual labels:  encryption, aes
AES
AES for microcontrollers (Arduino & Raspberry pi)
Stars: ✭ 116 (-37.97%)
Mutual labels:  encryption, aes
Bouncer
Bouncer is a network TCP port redirector/forward proxy (like rinetd) with extra features like Reverse tunneling (like ssh -R), SSL tunneling (like stunnel), connection Failover, LoadBalancing and Clustering. In pure Java (BIO)
Stars: ✭ 103 (-44.92%)
Mutual labels:  encryption, aes
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 (-27.27%)
Mutual labels:  encryption, aes

JNCryptor

JNCryptor is an easy-to-use library for encrypting data with AES. It was ported to Java from the RNCryptor library for iOS.

The project is considered finished, hence the lack of recent activity. Please raise issues for any problems encountered.

Getting JNCryptor

The Javadocs can be browsed online: JNCryptor Javadocs.

You can download binaries, documentation and source from the Releases page. Maven users can copy the following snippet to retrieve the artifacts from Maven Central:

<dependency>
    <groupId>org.cryptonode.jncryptor</groupId>
    <artifactId>jncryptor</artifactId>
    <version>1.2.0</version>
</dependency>

Using JNCryptor

A quick example is shown below:

JNCryptor cryptor = new AES256JNCryptor();
byte[] plaintext = "Hello, World!".getBytes();
String password = "secretsquirrel";

try {
  byte[] ciphertext = cryptor.encryptData(plaintext, password.toCharArray());
} catch (CryptorException e) {
  // Something went wrong
  e.printStackTrace();
}

Android

Users have reported significant performance issues when using this library in Android (see Issue #23 for more info).

Android is not a tested nor supported platform for JNCryptor and there are no plans to address these performance issues. Please take a look at other projects, such as https://github.com/TGIO/RNCryptorNative, which aim to plug this gap with native code solutions.

IMPORTANT: Due to a bug in the Android SecureRandom implementation, JNCryptor is not currently safe to use in Android versions prior to 4.4. Please see an announcement from Google from back in 2013. The issue is tracked here as Issue #25, but will not be fixed in this project.

Iterations

JNCryptor supports changing the number of PBKDF2 iterations performed by the library. Unfortunately, the number of iterations is not currently encoded in the data format, which means that both sides of the conversation need to know how many iterations have been used.

Data Format

A proprietary data format is used that stores the IV, salt values (if applicable), ciphertext and HMAC value in a compact fashion. Methods are offered to encrypt data based on either an existing key, or a password. In the latter case, a key is derived from the password using a key derivation function, with 10,000 iterations and a salt valu.e

See the spec documents online.

Keys are derived from the password and the appropriate salt value using the PBKDF2 function with SHA1. A separate key is generated for encrypting the plaintext and computing the HMAC.

History

The data format supported by this library is v3. Both v1 and v0 have a significant security flaw whereby only the ciphertext was included in the HMAC value. There are no plans to support v1 or v0. v2 was deprecated due to a multi-byte password issue discovered in the objective-c implementation.

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].