A cross-platform AES encryption library with a secure data format for iOS, macOS, and other languages.
RNCryptor is an encryption library for iOS and macOS that provides a secure, standardized way to implement AES encryption. It wraps Apple's CommonCrypto framework to offer a simple API for encrypting and decrypting data while ensuring best practices like proper key derivation and authentication. The library defines a cross-platform data format that can be implemented in many programming languages.
iOS and macOS developers who need to add encryption to their apps without deep cryptographic expertise, and developers building cross-platform systems that require consistent encryption across different languages.
Developers choose RNCryptor because it eliminates common encryption pitfalls by enforcing secure defaults, provides a well-documented cross-platform data format, and offers both simple password-based encryption and advanced key-based options while maintaining a clean, easy-to-use API.
CCCryptor (AES encryption) wrappers for iOS and Mac in Swift. -- For ObjC, see RNCryptor/RNCryptor-objc
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Implements AES-256 with CBC, PBKDF2 key stretching, random IV, and encrypt-then-hash HMAC, enforcing best practices to prevent common vulnerabilities like weak key derivation.
The v3 data format is implemented in over a dozen languages, enabling seamless encrypted data exchange between iOS/macOS apps and servers or other platforms.
Supports encryption and decryption of large data streams via updateWithData and finalData methods, preventing memory issues with files or network data.
Offers one-liner methods like RNCryptor.encrypt(data:withPassword:) for common use cases, reducing boilerplate and cognitive load for developers.
The v3 format uses fixed algorithms (AES-256-CBC) and PBKDF2 iterations, with no way to adjust security parameters, limiting flexibility for specialized requirements.
RNCryptor 5 is Swift 3+ and doesn't bridge to Objective-C, forcing ObjC projects to use a separate, potentially less updated library (RNCryptor-objc).
Manual setup requires bridging header configuration for CommonCrypto, which is error-prone in mixed-language projects or OS X command-line apps, as noted in the README.