konstantinullrich / crypton

A simple Dart library for asymmetric encryption and digital signatures
https://pub.dev/packages/crypton
MIT License
33 stars 12 forks source link

Long String Error #14

Closed kingrupam closed 3 years ago

kingrupam commented 4 years ago
Future rsa() async {
    RSAKeypair rsaKeypair = RSAKeypair.fromRandom(keySize: 1024);
     print(rsaKeypair.privateKey);
     print(rsaKeypair.publicKey);

    var message= 'dhfdhvyurdytdycjvbnj876tyxfhcjbjhiy765etsrdgxvvhjhiyi7t6rtydfhcgvhjhiuyituydgxfcvbjhuytuyfhcvnmbjhiutiytddhfdhvyurdytdycjvbnj876tyxfhcjbjhiy765etsrdgxvvhjhiyi7t6rtydfhcgvhjhiuyituydgxfcvbjhuytuyfhcvnmbjhiutiytd';

    var encrypted = rsaKeypair.publicKey.encrypt(message);
    var decrypted = rsaKeypair.privateKey.decrypt(encrypted);
     print(encrypted);
     print(decrypted);
  }

E/flutter ( 4125): [ERROR:flutter/lib/ui/ui_dart_state.cc(171)] Unhandled Exception: Invalid argument(s): Input data too large
E/flutter ( 4125): #0      PKCS1Encoding._encodeBlock 
package:pointycastle/asymmetric/pkcs1.dart:101
E/flutter ( 4125): #1      PKCS1Encoding.processBlock 
package:pointycastle/asymmetric/pkcs1.dart:92
E/flutter ( 4125): #2      BaseAsymmetricBlockCipher.process 
package:pointycastle/…/impl/base_asymmetric_block_cipher.dart:15
E/flutter ( 4125): #3      RSAPublicKey.encryptData 
package:crypton/…/rsa/public_key.dart:79
E/flutter ( 4125): #4      RSAPublicKey.encrypt 
package:crypton/…/rsa/public_key.dart:72
E/flutter ( 4125): #5      AuthModel.rsa 
package:class2/Test/FirebaseAuth.dart:44
E/flutter ( 4125): #6      SignIn.build.<anonymous closure> 
package:class2/Test/FirebaseAuth.dart:18
E/flutter ( 4125): #7      _InkResponseState._handleTap 
package:flutter/…/material/ink_well.dart:993
E/flutter ( 4125): #8      _InkResponseState.build.<anonymous closure> 
package:flutter/…/material/ink_well.dart:1111
E/flutter ( 4125): #9      GestureRecognizer.invokeCallback 
package:flutter/…/gestures/recognizer.dart:183
E/flutter ( 4125): #10     TapGestureRecognizer.handleTapUp 
package:flutter/…/gestures/tap.dart:598
E/flutter ( 4125): #11     BaseTapGestureRecognizer._checkUp 
package:flutter/…/gestures/tap.dart:287
E/flutter ( 4125): #12     BaseTapGestureRecognizer.handlePrimaryPointer 
package:flutter/…/gestures/tap.dart:222
E/flutter ( 4125): #13     PrimaryPointerGestureRecognizer.handleEvent 
package:flutter/…/gestures/recognizer.dart:476
E/flutter ( 4125): #14     PointerRouter._dispatch 
package:flutter/…/gestures/pointer_router.dart:77
E/flutter ( 4125): #15     PointerRouter._dispatchEventToRoutes.<anonymous closure> 
package:flutter/…/gestures/pointer_router.dart:122
E/flutter ( 4125): #16     _LinkedHashMapMixin.forEach  (dart:collection-patch/compact_hash.dart:377:8)
E/flutter ( 4125): #17     PointerRouter._dispatchEventToRoutes 
package:flutter/…/gestures/pointer_router.dart:120
E/flutter ( 4125): #18     PointerRouter.route 
package:flutter/…/gestures/pointer_router.dart:106
E/flutter ( 4125): #19     GestureBinding.handleEvent 
package:flutter/…/gestures/binding.dart:219
E/flutter ( 4125): #20     GestureBinding.dispatchEvent 
package:flutter/…/gestures/binding.dart:199
E/flutter ( 4125): #21     GestureBinding._handlePointerEvent 
package:flutter/…/gestures/binding.dart:157
E/flutter ( 4125): #22     GestureBinding._flushPointerEventQueue 
package:flutter/…/gestures/binding.dart:103
E/flutter ( 4125): #23     GestureBinding._handlePointerDataPacket 
package:flutter/…/gestures/binding.dart:87
E/flutter ( 4125): #24     _rootRunUnary  (dart:async/zone.dart:1206:13)
E/flutter ( 4125): #25     _CustomZone.runUnary  (dart:async/zone.dart:1100:19)
E/flutter ( 4125): #26     _CustomZone.runUnaryGuarded  (dart:async/zone.dart:1005:7)
E/flutter ( 4125): #27     _invoke1  (dart:ui/hooks.dart:267:10)
E/flutter ( 4125): #28     _dispatchPointerDataPacket  (dart:ui/hooks.dart:176:5)
E/flutter ( 4125):
konstantinullrich commented 4 years ago

This error happens because your Input data is too large.

This is not an error of crypton, but pointycastle.

For larger messages and files I would recommend you a hybrid approach. Encrypt the message using a symmetric algorithm like AES and use an asymmetric algorithm like RSA. This will also improve your performance.