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 -- Don MacQueen Lawrence Livermore National Laboratory 7000 East Ave., L-627 Livermore, CA 94550 925-423-1062
> 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]]
Perhaps https://cran.r-project.org/web/packages/bcrypt/index.html might be of assistance. If not, drop a note back to the list as it'll be trivial to expand on that to give you an R alternative to Perl. On Mon, Nov 7, 2016 at 5: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 > > -- > Don MacQueen > > Lawrence Livermore National Laboratory > 7000 East Ave., L-627 > Livermore, CA 94550 > 925-423-1062 > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.
Thanks, Marc, Unfortunately, I didn't choose the encryption method. My (only) need is to be able to decrypt an existing file that is maintained by others. I am able to use system() on a simple perl script to do the job, but I'm hoping for an R-only solution, primarily for portability. -Don -- Don MacQueen Lawrence Livermore National Laboratory 7000 East Ave., L-627 Livermore, CA 94550 925-423-1062 From: Marc Schwartz <marc_schwartz at me.com<mailto:marc_schwartz at me.com>> Date: Monday, November 7, 2016 at 3:30 PM To: dh m <macqueen1 at llnl.gov<mailto:macqueen1 at llnl.gov>> Cc: R-help <R-help at r-project.org<mailto:R-help at r-project.org>> Subject: Re: [R] Help with decrypting On Nov 7, 2016, at 4:47 PM, MacQueen, Don <macqueen1 at llnl.gov<mailto: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 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 and see how I call Perl scripts within 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]]
Bob, Thanks for responding. I've tried the functions in bcrypt, and get, for example,> infl <- 'path.to.the.encrypted.file' > junk <- 'the.password' > foo <- readLines(infl)Warning message: In readLines(infl) : incomplete final line found on 'path.to.the.encrypted.file'> tmp <- checkpw(junk, foo)Error in hashpw(password, hash) : Invalid salt Thus demonstrating that I don't know what I'm doing. If it's easy to expand, as you mention, I would indeed appreciate it. -Don -- Don MacQueen Lawrence Livermore National Laboratory 7000 East Ave., L-627 Livermore, CA 94550 925-423-1062 On 11/7/16, 5:29 PM, "Bob Rudis" <bob at rud.is> wrote:>Perhaps https://cran.r-project.org/web/packages/bcrypt/index.html >might be of assistance. > >If not, drop a note back to the list as it'll be trivial to expand on >that to give you an R alternative to Perl. > >On Mon, Nov 7, 2016 at 5: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 >> >> -- >> Don MacQueen >> >> Lawrence Livermore National Laboratory >> 7000 East Ave., L-627 >> Livermore, CA 94550 >> 925-423-1062 >> >> ______________________________________________ >> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide >>http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code.