ertank 28 Posted September 22, 2019 Hello, There seems to be a lot of VCL based free solutions. I could not find one for FMX platform. I am looking for a free AES256-CBC FMX compatible solution that I can pass IV and Key values manually. I installed "LockBox VCL and FMX 2.3" from GetIt package manager. It seems to take string value as Key for TLbRijndael component and does everything internally. Any help is appreciated. Thanks & regards, Ertan Share this post Link to post
Ugochukwu Mmaduekwe 42 Posted September 22, 2019 Have you tried CryptoLib4Pascal ? 1 Share this post Link to post
David Heffernan 2353 Posted September 22, 2019 Encryption is agnostic of framework. I don't see how you could have a VCL only encryption library. You don't need design time components. 1 1 Share this post Link to post
ertank 28 Posted September 22, 2019 2 minutes ago, David Heffernan said: Encryption is agnostic of framework. I don't see how you could have a VCL only encryption library. You don't need design time components. I mostly use mORMot for my AES handling. Even it compiles on Linux FPC and Raspberry Pi, it doesn't compile for FMX. First compiler complaint is about AnsiString type. I tried pure Pascal Wolfgang Ehrhardt library and compiler is not happy with internal used type declarations in BType.pas file like type Str255 = string[255]; So I'm asking for help from anyone who used an AES encryption under FMX. Share this post Link to post
Dalija Prasnikar 1404 Posted September 22, 2019 7 minutes ago, David Heffernan said: Encryption is agnostic of framework. I don't see how you could have a VCL only encryption library. You don't need design time components. Unless someone designed framework poorly. There is also possibility that framework is only for Windows and cannot be used as cross-platform solution. Still, people might use FMX only on Windows, so naming framework VCL would be poor choice in such case. 1 Share this post Link to post
ertank 28 Posted September 22, 2019 48 minutes ago, Ugochukwu Mmaduekwe said: Have you tried CryptoLib4Pascal ? I heard about it. Did not give it a try yet. Share this post Link to post
Dalija Prasnikar 1404 Posted September 22, 2019 1 minute ago, ertank said: I mostly use mORMot for my AES handling. Even it compiles on Linux FPC and Raspberry Pi, it doesn't compile for FMX. First compiler complaint is about AnsiString type. Depending on how AnsiString is used, it can be replaced with RawByteString in cross-platform. Only if it interprets stored characters and makes conversions, it cannot. Share this post Link to post
ertank 28 Posted September 22, 2019 (edited) 4 minutes ago, Dalija Prasnikar said: Depending on how AnsiString is used, it can be replaced with RawByteString in cross-platform. Only if it interprets stored characters and makes conversions, it cannot. It is just there are internal references and functions using that type. Moreover, it includes about 65kb big commonly used unit that needs a lot more modifications than converting AnsiString that I don't want to dig into. Edited September 22, 2019 by ertank Share this post Link to post
ertank 28 Posted September 22, 2019 I could use CryptoLib4Pascal cross-platform successfully with help from @Ugochukwu Mmaduekwe My test code looks like following: uses System.NetEncoding, ClpIBufferedCipher, ClpCipherUtilities, ClpIParametersWithIV, ClpParametersWithIV, ClpParameterUtilities; procedure TForm2.Button1Click(Sender: TObject); var Cipher: IBufferedCipher; KeyParametersWithIV: IParametersWithIV; KeyBytes: TBytes; IVBytes: TBytes; Buf: TBytes; PlainText: TBytes; begin KeyBytes := [31,32,33,34,35,36,37,38,39,30,31,32,33,34,35,36,37,38,39,30,31,32,33,34,35,36,37,38,39,30,31,32]; IVBytes := [31,32,33,34,35,36,37,38,39,30,31,32,33,34,35,36]; PlainText := TEncoding.UTF8.GetBytes(Edit1.Text); Cipher := TCipherUtilities.GetCipher('AES/CBC/PKCS7PADDING'); KeyParametersWithIV := TParametersWithIV.Create(TParameterUtilities.CreateKeyParameter('AES', KeyBytes), IVBytes); Cipher.Init(True, KeyParametersWithIV); // init encryption cipher Buf := Cipher.DoFinal(PlainText); Edit2.Text := TNetEncoding.Base64.EncodeBytesToString(Buf); end; One who wants to use framework needs to put all directories & sub directories in Library Path, or use provided run-time packages. I did the former. Share this post Link to post
sjordi 42 Posted September 23, 2019 I think that the free FMX TurboPower Lockbox offers AES encryption and it works on any platform. Did check whether AES256 is supported, but it's worth a look. Install it via GetIt 1 Share this post Link to post
Arnaud Bouchez 407 Posted September 23, 2019 (edited) On 9/22/2019 at 11:22 AM, Dalija Prasnikar said: Unless someone designed framework poorly. There is also possibility that framework is only for Windows and cannot be used as cross-platform solution. Still, people might use FMX only on Windows, so naming framework VCL would be poor choice in such case. You are right, SynCrypto is fine with FMX running on Windows - and it uses RawByteString or TBytes as required since Delphi 2009. But it is not a OS compatibility problem - it is a compiler issue. To be fair, it's Delphi cross-platform compiler/RTL which is designed poorly, especially all the backward compatibility breaks they made about strings and heap. Their recent step back is a clear hint of their bad design choices. There is no problem to use SynCrypto on Windows, Linux, BSD, Darwin, for Intel/AMD or ARM 32-bit or 64-bit CPU, if you use FPC. But we didn't lose time with targets breaking too much the existing code base. I am happy I didn't spend weeks making mORMot ARC-compatible - which is now deprecated! - and focused instead on FPC compatibility and tuning. Which was very rewarding. Edited September 23, 2019 by Arnaud Bouchez 1 Share this post Link to post
Jose Morango 2 Posted September 25, 2019 HI, Try Tms CryptoGrapy Pack, runs on VCL, FMX, I'm using it on my android and iOS apps adn it work just fine. 1 Share this post Link to post
Ugochukwu Mmaduekwe 42 Posted September 25, 2019 On 9/22/2019 at 8:12 AM, ertank said: I am looking for a free AES256-CBC FMX compatible solution that I can pass IV and Key values manually. 1 hour ago, Jose Morango said: HI, Try Tms CryptoGrapy Pack, runs on VCL, FMX, I'm using it on my android and iOS apps adn it work just fine. Note the key word free in the original poster question. Share this post Link to post
Jose Morango 2 Posted September 25, 2019 2 minutes ago, Ugochukwu Mmaduekwe said: Note the key word free in the original poster question. Hi Ugochukwu, Sorry Ii didn't pay attention to the "Free" word, but sometimes when we measure all the time and work time that we lost finding the rigth free tool It is better to buy one, dependind of course of the cost vs profit of the project we working on. Share this post Link to post
sjordi 42 Posted September 26, 2019 Did you try TurboPower Lockbox ? It's free Share this post Link to post
ertank 28 Posted September 26, 2019 31 minutes ago, sjordi said: Did you try TurboPower Lockbox ? It's free I failed to find a way to manually provide key and IV for AES256-CBC as byte values for that component set. However, as already indicated I use CryptoLib4Pascal successfully on VCL and FMX with help from @Ugochukwu Mmaduekwe 1 Share this post Link to post
pro_imaj 5 Posted July 15, 2020 On 9/23/2019 at 8:13 AM, sjordi said: I think that the free FMX TurboPower Lockbox offers AES encryption and it works on any platform. Did check whether AES256 is supported, but it's worth a look. Install it via GetIt Hi, For 10.4, getit gives an error, I could not reach the developer. How can I install for 10.4? Share this post Link to post
sjordi 42 Posted July 16, 2020 17 hours ago, pro_imaj said: Hi, For 10.4, getit gives an error, I could not reach the developer. How can I install for 10.4? From Petit I select LockBox 3.7 and install it without troubles. If asked to continue executing the script, say yes. You can't contact the developer. TurboPower doesn't exist any longer, for more than 10 years. But they were nice enough to release the source code. You might find them on Github and create issues tickets there if required. By the way, it seems to not support iOS. Only Windows, macOS and Android. Share this post Link to post
pro_imaj 5 Posted July 16, 2020 38 minutes ago, sjordi said: From Petit I select LockBox 3.7 and install it without troubles. If asked to continue executing the script, say yes. You can't contact the developer. TurboPower doesn't exist any longer, for more than 10 years. But they were nice enough to release the source code. You might find them on Github and create issues tickets there if required. By the way, it seems to not support iOS. Only Windows, macOS and Android. I don't understand why it gives the attached error. I try both. *I use this component to support IOS. Share this post Link to post
sjordi 42 Posted July 16, 2020 Are you within a professional environment like work? They may have a firewall and forbid the connection to the server. Did you try with public Wifi or use your 4G connection on your smartphone as a hotspot to bypass possible restrictions? It won't work for iOS unfortunately if I'm correct. Steve Share this post Link to post
pro_imaj 5 Posted July 16, 2020 (edited) I wrote to the component developer, thank you, the problem is not caused by the component problem Delphi! CMD was able to run smoothly when we ran this parameter. GetItCmd.exe -c = useonline Edited July 16, 2020 by pro_imaj Share this post Link to post
Guest Posted July 16, 2020 @pro_imaj Please don't be offended by my words here. You mentioned 10.4, and i want to ask of you found it on a side walk or bought it by real money ?, if the latter then i would suggest to email Embarcadero support asking them to support their product and what version is working and what not ?, how to do it? , after all it is their job to provide you support worth of money you paid for, and please share with us their answer to be public knowledge and when it does come, some expert there added it to GetIt and of course he tested it, it is his job after all, right ? So please email them. Share this post Link to post
TurboMagic 92 Posted January 18, 2021 Another solution would be DEC: Delphi Encryption Compendium. Freely available in GitHub. https://github.com/MHumm/DelphiEncryptionCompendium Two FMX based demos are even in Google Play: DEC Cipher Demo and DEC Hash Demo. A Lite version containing the hashes only is in GetIt now as well. EMBT doesn't want Crypto there due to export rules... Share this post Link to post