搜索分类、插件与代码仓

GitHub 代码仓nullptr-31/rsa_encrypt

rsa_encrypt

rsa 加密包

rsa_encrypt 项目封面
星标
16
复刻
16
最近推送(UTC)
2023年3月20日
项目状态
未归档

原始 README

以下为英文项目原文快照,最新内容请访问 GitHub。

This package is no longer maintained by its author!

rsa_encrypt 1.0.5

RSA encryption package.

Getting Started

RSA keys generator, String encryption and decryption and String signing.

How it works

let say Alice want to send a message to Bob. a normal messaging solution would be : Alice write the message and send it to Bob the only problem is that the Message will be transferred in PlainText and every one who intercept the message can read it.

This is were RSA comes to play:

  1. We generate keys( public & private ) for Bob.

  2. If Alice wanted to send a message to Bob she have to encrypt that message with Bob's public keys.

  3. Then the encrypted message will be transferred to Bob and only Bob's private key can decrypt that message.

that way no none can decrypt the message except the owner of that specific private key.

How to use

in order to use RSA encryption you need to generate 2 keys a public key (used to encrypt a text) and a private key (used to decrypt a text).

Those are the functions and header needed:

import 'package:rsa_encrypt/rsa_encrypt.dart';
import 'package:pointycastle/api.dart' as crypto;

//Future to hold our KeyPair
Future<crypto.AsymmetricKeyPair> futureKeyPair;

//to store the KeyPair once we get data from our future
crypto.AsymmetricKeyPair keyPair;

Future<crypto.AsymmetricKeyPair<crypto.PublicKey, crypto.PrivateKey>> getKeyPair()
{
var helper = RsaKeyHelper();
return helper.computeRSAKeyPair(helper.getSecureRandom());
}
  1. Generate KeyPair with the function getKeyPair() store the returned value in futureKeyPair.
  2. Once we get data from the future we can store that data in keyPair (Now we have acces to our private and public key).
  3. In order to view our keys as "a string" we need to use two functions encodePrivateKeyToPemPKCS1(keyPair.privateKey) & encodePublicKeyToPemPKCS1(keyPair.publicKey).
  4. In order to encrypt and decrypt strings you can use two functions
  • encrypt() : use this function to encrypt a string, pass your string as first argument and a public key as the second one. [IMPORTANT]: this will return a string so you should store the returned value in a variable.
  • decrypt() : use this function to decrypt an encrypted String, pass your encrypted String as first argument and a private key as the second. this will also return a string dont forget to store it :) .

A youtube video will be available soon!

More on RSA

The RSA Encryption Algorithm (1 of 2: Computing an Example)

The RSA Encryption Algorithm (2 of 2: Generating the Keys)

How to solve RSA Algorithm Problems?


depends on pointycastle, asn1lib.

thanks to Gonçalo Palma for his Article.


For help getting started with Flutter, view our

online documentation, which offers tutorials,

samples, guidance on mobile development, and a full API reference.

Abdelbaki Boukerche GitHub avatar
GitHub 作者

Abdelbaki Boukerche ↗

I make computers do stuff!

CAMIO LLCOran, Algeria
语言DartSwiftJavaObjective-C

使用的依赖

依赖清单 4 项

  • flutter{"sdk":"flutter"}
  • asn1lib^1.0.0
  • pointycastle^3.0.1
  • flutter_test开发依赖{"sdk":"flutter"}

如何选择适合项目的代码仓?

先按使用场景筛选,再比较项目活跃情况,最后到原始仓库核对使用要求。

  1. 通过仓库名、作者或描述搜索,再按技术分类缩小范围。
  2. 结合星标、复刻与最近推送比较项目;星标反映社区关注,不代表质量保证。
  3. 使用前在 GitHub 核对 README、许可证与 Issues。

来源与维护

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗