On 2021-12-16 16:23, Sean Cole via use-livecode wrote:
Hi all,
I'm trying to use RSA to encrypt data from a text field like an address or notes. When I try to use the encrypt command I get a result 'message too
long'. What is the method for encrypting long or large data?

My current line of code:
               encrypt tData using rsa with public key tMyKey and
passphrase tMyPass

RSA encryption can only encrypt data up to a certain length (I can't remember off the top of my head the exact relation, but it is related to the size of the key) so it isn't designed to be used on arbitrary length messages.

Encrypting arbitrary length messages is the domain of symmetric encryption functions - like AES and friends.

The solution, therefore, is to combine the two:

1) Generate a random (using randomBytes()) fixed length encryption key FixedKey

2) Encrypt the actual data using a symmetric algorithm with FixedKey as password

  2) Use RSA to encrypt the (fixed length!) key FixedKey

4) Make you message the RSA-encrypted FixedKey followed by the encrypted data

The RSA encrypted FixedKey will be a constant length, and thus you can just split that off of the combined data, decrypt it using RSA and then use the result to decrypt the payload.

Hope this helps!

Mark.

--
Mark Waddingham ~ m...@livecode.com ~ http://www.livecode.com/
LiveCode: Everyone can create apps

_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to