https://github.com/jerson/flutter-rsa
RSA for flutter made with golang for fast performance with support for android, ios, macos, linux, windows, web and hover
https://github.com/jerson/flutter-rsa
android decrypt encrypt flutter golang ios jwk linux macos oaep pem pkcs1 pkcs8 pkix pss rsa sign web xcode
Last synced: 10 months ago
JSON representation
RSA for flutter made with golang for fast performance with support for android, ios, macos, linux, windows, web and hover
- Host: GitHub
- URL: https://github.com/jerson/flutter-rsa
- Owner: jerson
- License: mit
- Created: 2020-02-21T18:51:37.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2025-03-15T17:51:28.000Z (11 months ago)
- Last Synced: 2025-03-30T00:05:04.010Z (11 months ago)
- Topics: android, decrypt, encrypt, flutter, golang, ios, jwk, linux, macos, oaep, pem, pkcs1, pkcs8, pkix, pss, rsa, sign, web, xcode
- Language: Dart
- Homepage: https://pub.dev/packages/fast_rsa
- Size: 324 MB
- Stars: 82
- Watchers: 3
- Forks: 24
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# Fast RSA
Library for use RSA with support for android, ios, macos, windows, linux and web
[](https://github.com/jerson/flutter-rsa/actions/workflows/tests_android.yml)
[](https://github.com/jerson/flutter-rsa/actions/workflows/tests_linux.yml)
[](https://github.com/jerson/flutter-rsa/actions/workflows/tests_windows.yml)
[](https://github.com/jerson/flutter-rsa/actions/workflows/tests_ios.yml)
[](https://github.com/jerson/flutter-rsa/actions/workflows/tests_macos.yml)
## Contents
- [Fast RSA](#fast-rsa)
- [Contents](#contents)
- [Usage](#usage)
- [Async methods](#async-methods)
- [Sync methods](#sync-methods)
- [Setup](#setup)
- [Android](#android)
- [iOS](#ios)
- [Web](#web)
- [MacOS](#macos)
- [Linux](#linux)
- [Windows](#windows)
- [Example](#example)
- [Native Code](#native-code)
## Usage
### Async Methods
#### Encrypt methods
```dart
import 'package:fast_rsa/fast_rsa.dart';
var result = await RSA.encryptOAEP(message, label, Hash.HASH_SHA256, publicKey)
var result = await RSA.encryptPKCS1v15(message, publicKey)
var result = await RSA.encryptOAEPBytes(messageBytes, label, Hash.SHA256, publicKey)
var result = await RSA.encryptPKCS1v15Bytes(messageBytes, publicKey)
```
#### Decrypt methods
```dart
import 'package:fast_rsa/fast_rsa.dart';
var result = await RSA.decryptOAEP(message, label, Hash.HASH_SHA256, privateKey)
var result = await RSA.decryptPKCS1v15(message, privateKey)
var result = await RSA.decryptOAEPBytes(messageBytes, label, Hash.SHA256, privateKey)
var result = await RSA.decryptPKCS1v15Bytes(messageBytes, privateKey)
```
#### Sign methods
```dart
import 'package:fast_rsa/fast_rsa.dart';
var result = await RSA.signPSS(message, Hash.SHA256, SaltLength.SALTLENGTH_AUTO, privateKey)
var result = await RSA.signPKCS1v15(message, Hash.SHA256, privateKey)
var result = await RSA.signPSSBytes(messageBytes, Hash.SHA256, SaltLength.SALTLENGTH_AUTO, privateKey)
var result = await RSA.signPKCS1v15Bytes(messageBytes, Hash.SHA256, privateKey)
```
#### Verify methods
```dart
import 'package:fast_rsa/fast_rsa.dart';
var result = await RSA.verifyPSS(signature, message, Hash.SHA256, SaltLength.SALTLENGTH_AUTO, publicKey)
var result = await RSA.verifyPKCS1v15(signature, message, Hash.SHA256, publicKey)
var result = await RSA.verifyPSSBytes(signatureBytes, messageBytes, Hash.SHA256, SaltLength.SALTLENGTH_AUTO, publicKey)
var result = await RSA.verifyPKCS1v15Bytes(signatureBytes, messageBytes, Hash.SHA256, publicKey)
```
#### Generate Methods
```dart
import 'package:fast_rsa/fast_rsa.dart';
var result = await RSA.generate(2048)
```
#### Convert Methods
```dart
import 'package:fast_rsa/fast_rsa.dart';
var result = await RSA.convertJWKToPrivateKey(data, keyId);
var result = await RSA.convertJWKToPublicKey(data, keyId);
var result = await RSA.convertKeyPairToPKCS12(privateKey, certificate, password);
var result = await RSA.convertPKCS12ToKeyPair(pkcs12, password);
var result = await RSA.convertPrivateKeyToPKCS8(privateKey);
var result = await RSA.convertPrivateKeyToPKCS1(privateKey);
var result = await RSA.convertPrivateKeyToJWK(privateKey);
var result = await RSA.convertPrivateKeyToPublicKey(privateKey);
var result = await RSA.convertPublicKeyToPKIX(publicKey);
var result = await RSA.convertPublicKeyToPKCS1(publicKey);
var result = await RSA.convertPublicKeyToJWK(publicKey);
var result = await RSA.encryptPrivateKey(privateKey, password, PEMCipher.PEMCIPHER_AES256);
var result = await RSA.decryptPrivateKey(privateKeyEncrypted, password);
```
#### Util Methods
```dart
import 'package:fast_rsa/fast_rsa.dart';
var result = await RSA.hash(message, Hash.SHA256);
var result = await RSA.base64(message);
```
### Sync Methods
#### Encrypt methods
```dart
import 'package:fast_rsa/fast_rsa_sync.dart';
var result = RSASync.encryptOAEP(message, label, Hash.HASH_SHA256, publicKey);
var result = RSASync.encryptPKCS1v15(message, publicKey);
var result = RSASync.encryptOAEPBytes(messageBytes, label, Hash.SHA256, publicKey);
var result = RSASync.encryptPKCS1v15Bytes(messageBytes, publicKey);
```
#### Decrypt methods
```dart
import 'package:fast_rsa/fast_rsa_sync.dart';
var result = RSASync.decryptOAEP(message, label, Hash.HASH_SHA256, privateKey);
var result = RSASync.decryptPKCS1v15(message, privateKey);
var result = RSASync.decryptOAEPBytes(messageBytes, label, Hash.SHA256, privateKey);
var result = RSASync.decryptPKCS1v15Bytes(messageBytes, privateKey);
```
#### Sign methods
```dart
import 'package:fast_rsa/fast_rsa_sync.dart';
var result = RSASync.signPSS(message, Hash.SHA256, SaltLength.SALTLENGTH_AUTO, privateKey);
var result = RSASync.signPKCS1v15(message, Hash.SHA256, privateKey);
var result = RSASync.signPSSBytes(messageBytes, Hash.SHA256, SaltLength.SALTLENGTH_AUTO, privateKey);
var result = RSASync.signPKCS1v15Bytes(messageBytes, Hash.SHA256, privateKey);
```
#### Verify methods
```dart
import 'package:fast_rsa/fast_rsa_sync.dart';
var result = RSASync.verifyPSS(signature, message, Hash.SHA256, SaltLength.SALTLENGTH_AUTO, publicKey);
var result = RSASync.verifyPKCS1v15(signature, message, Hash.SHA256, publicKey);
var result = RSASync.verifyPSSBytes(signatureBytes, messageBytes, Hash.SHA256, SaltLength.SALTLENGTH_AUTO, publicKey);
var result = RSASync.verifyPKCS1v15Bytes(signatureBytes, messageBytes, Hash.SHA256, publicKey);
```
#### Generate Methods
```dart
import 'package:fast_rsa/fast_rsa_sync.dart';
var result = RSASync.generate(2048)
```
#### Convert Methods
```dart
import 'package:fast_rsa/fast_rsa_sync.dart';
var result = RSASync.convertJWKToPrivateKey(data, keyId);
var result = RSASync.convertJWKToPublicKey(data, keyId);
var result = RSASync.convertKeyPairToPKCS12(privateKey, certificate, password);
var result = RSASync.convertPKCS12ToKeyPair(pkcs12, password);
var result = RSASync.convertPrivateKeyToPKCS8(privateKey);
var result = RSASync.convertPrivateKeyToPKCS1(privateKey);
var result = RSASync.convertPrivateKeyToJWK(privateKey);
var result = RSASync.convertPrivateKeyToPublicKey(privateKey);
var result = RSASync.convertPublicKeyToPKIX(publicKey);
var result = RSASync.convertPublicKeyToPKCS1(publicKey);
var result = RSASync.convertPublicKeyToJWK(publicKey);
var result = RSASync.encryptPrivateKey(privateKey, password, PEMCipher.PEMCIPHER_AES256);
var result = RSASync.decryptPrivateKey(privateKeyEncrypted, password);
```
#### Util Methods
```dart
import 'package:fast_rsa/fast_rsa_sync.dart';
var result = RSASync.hash(message, Hash.SHA256);
var result = RSASync.base64(message);
```
## Setup
### Android
No additional setup required.
### iOS
No additional setup required.
### Web
add to you `pubspec.yaml`
```yaml
assets:
- packages/fast_rsa/web/assets/worker.js
- packages/fast_rsa/web/assets/wasm_exec.js
- packages/fast_rsa/web/assets/rsa.wasm
```
ref: https://github.com/jerson/flutter-rsa/blob/master/example/pubspec.yaml
### MacOS
no additional setup required
### Linux
No additional setup required.
### Windows
No additional setup required.
## Example
Inside example folder
```bash
cd example && flutter run
```
check our web demo: [https://flutter-rsa.jerson.dev/]
## Native Code
the native library is made in Golang and build with gomobile for faster performance
https://github.com/jerson/rsa-mobile