decryptByPrivateKey function

Uint8List decryptByPrivateKey(
  1. Uint8List data,
  2. RSAPublicKey publicKey,
  3. RSAPrivateKey privateKey
)

Implementation

Uint8List decryptByPrivateKey(
    Uint8List data, RSAPublicKey publicKey, RSAPrivateKey privateKey) {
  try {
    var keyParameter = () => PrivateKeyParameter<RSAPrivateKey>(privateKey);
    AsymmetricBlockCipher cipher = AsymmetricBlockCipher("RSA/PKCS1");
    cipher.reset();
    cipher.init(false, keyParameter());
    int index = 0;
    int strlength = data.length;
    final keysize = publicKey.modulus!.bitLength ~/ 8 - 11;
    final blocksize = publicKey.modulus!.bitLength ~/ 8;
    final numBlocks = strlength ~/ blocksize;
    Uint8List list = Uint8List(keysize * numBlocks);
    int count = 0;
    int strindex = 0;
    while (index < strlength) {
      Uint8List listtmp =
          data.sublist(count * blocksize, (count + 1) * blocksize);
      Uint8List encryptResult = cipher.process(listtmp);
      for (int v_i = 0; v_i < encryptResult.length; v_i++) {
        list[count * keysize + v_i] = encryptResult[v_i];
      }
      count += 1;
      strindex += encryptResult.length;
      index += blocksize;
    }
    return list.sublist(0, strindex);
  } catch (e) {
    print(e.toString());
    rethrow;
  }
}