[R] Help with decrypting

Marc Schwartz
Mon, 07 Nov 2016 23:30:42 -0000

> On Nov 7, 2016, at 4:47 PM, MacQueen, Don <macqueen1 at llnl.gov>
wrote:
>
> I have a file containing encrypted contents. The contents can be decrypted
> using perl, like this:
>
> open (FILEHANDLE, "/path/to/file")
> chomp ($ciphertext = <FILEHANDLE>);
>
>
> use Crypt::CBC;
> $cipher = Crypt::CBC->new( -key    => 'my secret key',
>                           -cipher => 'Blowfish'
>                          );
>
> $plaintext  = $cipher->decrypt($ciphertext);
>
>
> (See http://search.cpan.org/~lds/Crypt-CBC-2.33/CBC.pm)
>
> M goal is to have the value of $plaintext in an R object, so, is there an
> R equivalent to this decrypt() perl function?
>
> I've found R packages
>  bcrypt
>  sodium
> that appear to have potential, but I don't understand this business
well
> enough to figure out how to use them, if indeed they can be used, for
> this. Help would be much appreciated.
>
> Thanks
> -Don
>



Hi Don,

Blowfish is Bruce Schneier's algorithm from the early 90's, which even
Bruce suggested some time ago not be used. Bruce has some alternative Blowfish
implementations available via his web site:

  https://www.schneier.com/academic/blowfish/download.html
<https://www.schneier.com/academic/blowfish/download.html>

and there is a link there for some third party products that still have it and
might provide for a CLI based interface as an alternative (e.g. GnuPG) if you
need to use it.

>From what I can tell, 'sodium' does not support Blowfish and the
implementation in bcrypt, if I am reading correctly, only provides for a one-way
hash implementation, as opposed to encrypt/decrypt functions.

Thus, barring that my searching for alternative R implementations of Blowfish
resulted in a Type II error, I do not see any R implementations of Blowfish that
support encrypt/decrypt.

If you want to use the Perl module implementation via R, you can take a look at
my WriteXLS package on GitHub:

  https://github.com/marcschwartz/WriteXLS
<https://github.com/marcschwartz/WriteXLS>

and see how I call Perl scripts within WriteXLS.R:

  https://github.com/marcschwartz/WriteXLS/blob/master/R/WriteXLS.R
<https://github.com/marcschwartz/WriteXLS/blob/master/R/WriteXLS.R>

around line 242.

That might provide one method for you.

That all being said, as per Bruce's recommendation, there are
"better" encryption/decryption algorithms these days (some in the
'digest' package by Dirk), depending upon who you are trying to protect
the data from... :-)

Regards,

Marc Schwartz



	[[alternative HTML version deleted]]