Thread: [Passwordsafe-devel] New BlowFish class
Popular easy-to-use and secure password manager
Brought to you by:
ronys
From: James Curran/M. <Jam...@mv...> - 2003-05-26 22:15:45
|
Last year I was messing around with the BlowFish class, mainly to make it less C-ish, and more C++ish. I've removed the globals and the #define for data members, inlines, and const int. It should be, for the most part, a drop-in replacement. It's available at http://www.noveltheory.com/pwsafe/blowfish2.zip A few notes about it: In release mode, it should be as fast, or faster, than the original. However, in debug builds, it's a bit slower, as the inlined functions aren't inlined. (Note, before attempting a release build, change the release mode settings for corelib to use the "MFC in shared DLL") Presently, it's in Blowfish2.cpp/.h. If you want to build using it, you'll have to change the #includes in util.cpp and itemdata.cpp. I've added an additional function: void Encrypt(char* start, char* end, char* output); The syntax is the same as the STL copy() function. The present function expects data in 8-byte block. This does the whole block at once (block must be a multiple of 8-bytes). Also the original actual works by copying the plaintext from the source to the destination, and then encrypting it inplace at the destination. This works by reading a byte, encrypting and writing, as to save a step. Also, as I was building 1.9x with it, I noticed a problem. The ctor takes an int argument, and the function InitializeBlowfish() accepts the parameter as a short, we get a warning. In the present code, this is dealt with, with a cast --- This is the WRONG solution to the problem. They should either both be ints or both shorts, but just telling the compiler to shutup is not the answer. My first choice was to make them both shorts (since the value passed is only 20), but what is actually passed is a sizeof() which is inherently an unsigned int, so it's probably best to make then both int (or unsigned int) Truth, James Curran |
From: Rony S. <ro...@gm...> - 2003-05-27 12:24:24
|
James, If your work is based on last year's version, then you're probably missing some of the cleanups I've implemented in the class when I took over the project. From a quick once-over of your code, I think you've done a more thorough job, but I suggest you do the merging directly, if you wish, via CVS. Thanks, Rony > -----Original Message----- > From: pas...@li... > [mailto:pas...@li...]On Behalf > Of James Curran/MVP > Sent: Tuesday, May 27, 2003 12:15 AM > To: 'passwordsafe-devel' > Subject: [Passwordsafe-devel] New BlowFish class > > > Last year I was messing around with the BlowFish class, mainly to make > it less C-ish, and more C++ish. I've removed the globals and the > #define for data members, inlines, and const int. It should be, for the > most part, a drop-in replacement. > > It's available at http://www.noveltheory.com/pwsafe/blowfish2.zip > > > A few notes about it: > In release mode, it should be as fast, or faster, than the > original. However, in debug builds, it's a bit slower, as the inlined > functions aren't inlined. (Note, before attempting a release build, > change the release mode settings for corelib to use the "MFC in shared > DLL") > > Presently, it's in Blowfish2.cpp/.h. If you want to build using > it, you'll have to change the #includes in util.cpp and itemdata.cpp. > > I've added an additional function: > void Encrypt(char* start, char* end, char* output); > The syntax is the same as the STL copy() function. The present function > expects data in 8-byte block. This does the whole block at once (block > must be a multiple of 8-bytes). Also the original actual works by > copying the plaintext from the source to the destination, and then > encrypting it inplace at the destination. This works by reading a byte, > encrypting and writing, as to save a step. > > Also, as I was building 1.9x with it, I noticed a problem. The ctor > takes an int argument, and the function InitializeBlowfish() accepts the > parameter as a short, we get a warning. In the present code, this is > dealt with, with a cast --- This is the WRONG solution to the problem. > They should either both be ints or both shorts, but just telling the > compiler to shutup is not the answer. My first choice was to make them > both shorts (since the value passed is only 20), but what is actually > passed is a sizeof() which is inherently an unsigned int, so it's > probably best to make then both int (or unsigned int) > > > > > > > > Truth, > James Curran > > > > ------------------------------------------------------- > This SF.net email is sponsored by: ObjectStore. > If flattening out C++ or Java code to make your application fit in a > relational database is painful, don't do it! Check out ObjectStore. > Now part of Progress Software. http://www.objectstore.net/sourceforge > _______________________________________________ > Passwordsafe-devel mailing list > Pas...@li... > https://lists.sourceforge.net/lists/listinfo/passwordsafe-devel > |