The Blowfish Encryption Algorithm
Block Cipher: 64-bit block
Variable Key Length: 32 bits to 448 bits
Designed by Bruce Schneier
Much faster than DES and IDEA
Not Patented and Royalty-Free
No license required
Blowfish is a symmetric block cipher that can be used as a drop-in replacement for DES (Data Encryption Standard) or IDEA (International Data Encryption Algorithm). It takes a variable-length key, from 32 bits to 448 bits, making it ideal for both domestic and exportable use. Blowfish was designed in 1993 by Bruce Schneier as a fast, free alternative to existing encryption algorithms. Since then, it has been analyzed considerably, and is slowly gaining acceptance as a strong encryption algorithm. Blowfish is not patented, is license-free, and is available free for all uses.
As far as I know, this is the first implementation of the Blowfish Algorithm in LabVIEW. With this set of sub-VIs, one can encrypt data in LabVIEW without the need for external software. This can be used to send data securely over Data Socket as well as TCP and UDP communications. It can also be used to protect remote control systems from unauthorized access by encrypting the control communications.
I have added compatibility for the basic blowfish functions with other implantations, and fixed a couple of bugs. I have also added a self-test VI that should show if the VI is compatible between the PC and MAC. The "LabVIEW Blowfish Encryption.vi" uses header info to return an encrypted message back to its original length; because of this, it will likely not be directly compatible with other encryption software even though the software may use the same blowfish encryption method. Without knowing what other software uses for header info, I just used what was convenient for me in LabVIEW.
I welcome any constructive comments, and bug reports can be sent to the e-mail contained in the code.
Example code from the Example Code Exchange in the NI Community is licensed with the MIT license.
New to LabVIEW
Is this compatible with myRIO (Linux based RT OS)? Does it call for functions, library or characters that are not supported based on un supported item list on Knowledge.ni.com?
Thanks in advance
Hi,
I was wondering about the source code that is used in the Code Interface Node to compress the data input. Since the whole vi is security related I guess the code should be accessible for everyone.
Hi,
I tried to use that but I got several errors. They are about ZLibDeflate.vi and ZLibInflate.vi. These subVIs are not executable. The problem for both is Code Interface Node because this node is no longer supported by LabVIEW (This is what I read in the help context). I use LabVIEW 2020, and suggested solution is to replace Code Interface Node with Call Library Function Node. However, I am new to use encryption methods in LabVIEW and I failed to fix this problem.
The LabVIEW doesn't support the Code interface Node that is used in that VIs anymore. So, I couldn't use it in my project. Is there any updated one?
Hi Folks,
For the people having trouble with ZLIB Inflate and ZLIB Deflate, these are function in the OpenG ZIP Tools. Just Install the OpenG Zip tools via VIPM, and replace the Inflate and Deflate calls with those from the OpenG Library. (Which have been updated to not use CIN.)
After it is installed, look In the LabVIEW Palette for OpenG ZIP Tools->ZLIB String Compression