Click here to Skip to main content
Click here to Skip to main content

Encrypting Editor Notepad Replacement

, 28 Jul 2014 CPOL
Rate this:
Please Sign up or sign in to vote.
A C# .NET 3.5 (Win7) Windows Forms Application with source code

CryptPad version 3.0

Table of Contents

Introduction

I love Windows Notepad! I write all my HTML, Jscript, CMD scripts, and much more in Notepad. It is my favorite editing tool. It is fast and simple. So, why would I write a replacement program?

The primary purpose of the CryptPad program is to provide optional file encryption. This is valuable for files which contain sensitive information. Unlike many other encryption solutions, this one requires no installation, is very simple, and non-intrusive on the operating system. CryptPad only encrypts and decrypts one file at save and open. There is never a decrypted version of the file stored unless the operator specifies to remove the encryption. The file can be stored multiple places and moved freely like any other file, but always in encrypted form. Anyone who knows the encryption string can read the file with this program.

It is important, for better security, to use different passwords on each website you visit. In order to maintain these multiple passwords, I have a file with all the passwords in it that I use. This is also a security risk unless the file is encrypted. I have examined many encryption solutions and none does exactly what I need. I need to be able to transport and store an encrypted file anywhere I want. Encrypted drives are not what I need. The file must never exist in decrypted form. Therefore I need a simple editor which opens, decrypts, edits, encrypts, and saves a file.

I also want the encrypted text to remain plaintext and not binary so that the operator can use the encrypted text anywhere (such as by copy and paste) you can use plaintext. I also want the size of the data to remain as small as practical. Therefore, special encodings of binary encryptions do not serve my purposes.

You might notice my use of the word "operator". I am a little uncomfortable with the word "user". I am deeply steeped in the computer industry having worked over 40 years with computers since about 1971. I remember the use of the word "luser" (loser) by those educated ignoramuses who considered their priesthood as above the lowly computer user. There is also the unfortunate association with the phrase "drug user". Sensitivity may not be considered a "manly" trait but I treasure and practice this characteristic. I evaluate the use of words just as carefully as I evaluate the computer software I use and write.

Notice that I do not at any point describe CryptPad as a Notepad clone. A clone is an exact copy. Notepad has some very specific functionality, which I have not seen any simple Notepad clone duplicate completely. For example, the Undo function of Notepad has not been properly implemented in most advertised "clones". Undo is implemented wherever practical in CryptPad. I have also not seen a simple "clone" which properly implements UTF-8 and Unicode conversions or reads files with ANSI characters as Notepad and CryptPad do. Major Notepad replacement programs such as Notepad++ will support these character encodings.

CryptPad is intended to be nearly the same as Windows 7 Notepad. I have chosen not to include the printing function. I almost never use paper or printing! Those rare occasions when I might want to print I can just use Notepad. CryptPad is not a "clone" but is close enough to be a useful replacement. Now that I have created the source code for a replacement for Notepad, I have been adding functions useful in my daily editing work.

I also have a major problem with Notepad because it allows a problem I call parallel update. In parallel update, you already have a file open with edits but it goes to the background when you switch windows. Later you open the file again forgetting that you already had it open. You make new edits and close the file. You switch to the old window later forgetting (Is this forgetting because I have been programming for over forty years?) you had changed it in a new window and save it again. Your previous edits are lost! There are several sequences of events that can lead to data loss. The situation is even worse if you edit a file on a network share and somebody else edits the same file!

Unlike Notepad, CryptPad maintains the file in an opened state locked against parallel changes but shared with file readers. This protects the file against accidental parallel modification data loss problems. I have had this happen to me on occasion with Notepad. You can still lose changes but it will have to be by a deliberate sequence of actions and not by casual accident.

Cryptpad contains many small improvements and special tools beyond what Notepad provides useful for editing. The most significant other addition is the optional use of .NET Framework Regular Expression Synatx for Find and Replace.

I hope you find the CryptPad program useful. I am interested in any problems you may find in the program and in particular any incompatibility as a Notepad replacement. I intend to keep the program as small and simple as practical. CryptPad will always be a switchblade not a Swiss Army knife.

I continue to use, modify, and test the CryptPad program. I will return periodically (every other month or so) to update this article and the source code with the latest fixes, improvements, and tweaks.

ASCII, ANSI, UTF-8

As you read about this program, you might like to ask me a question. What in the world is all this UTF-8 and Unicode nonsense!?

In the old days of microcomputers (about 1980), it was simple. (It wasn't really. Remember EBCDIC? But we will pretend it was simple.) All text files were 7 bit ASCII (American Standard Code for Information Interchange) characters. Notice the word "American" in ASCII. There are many people in the world, with many different languages and characters, and they need to be represented in daily computer use. There are also additional "American" characters in common use beyond plain ASCII.

There is a great deal of confusion about the subject of character encoding. If you are a detail oriented person and prepared for a heavy read, you can start here:

http://en.wikipedia.org/wiki/UTF-8

I will try to make it short and simple. When you are using typical ASCII characters, strict UTF-8 (without a BOM) is exactly the same thing. Most of your editing will be simple ASCII. This entire webpage is only ASCII. In most cases, you can just stop here.

The exception is for non-English languages and if you ever use characters such as Microsoft Word smart quotes and apostrophes. These are the "curved" typographical equivalents of the simple "straight" ASCII quote and apostrophe. The apostrophe has a curve and there is a different curve for beginning and ending a quote. There are many other types of special characters. Many of the other languages also require special characters.

There are two primary ways to represent these types of non-ASCII characters. The older way is with single 8 bit characters. This is when you see "Windows-1252" or other non-Unicode encodings. These encodings can be very complex and plagued with limitations. Notepad refers to this as "ANSI" encoding. Unicode makes the process simpler (but not simple) to support everybody's characters. UTF-8 was invented to support ASCII with no changes and optionally extend to Unicode characters using pairs or clusters of 8 bit characters.

If this short explanation made you curious to know more, then you are back to the heavy reading I mentioned earlier.

Installing the Program

An important feature of this editor is that it does not require a blind install program or administrator permission. I am using the term "blind" to refer to the fact that the extent of the changes made by the typical install program are completely hidden from you. I don't like things that are hidden.

The CryptPad program is completely stand-alone so a simple copy is the minimum needed to permanently "install" and use the program. You can carry it on a USB flash drive and use anywhere with Windows 7 or later. You can use it temporarily, anywhere, and immediately with no install, no permissions, and no problems directly from the USB flash drive.

At this point I should mention that the CryptPad program uses standard .NET persistent settings. The persistent settings are things like Word Wrap, Font, Status View, and Window Position. These settings are stored in a file named user.config, which is kept in a directory with a name similar to "%LOCALAPPDATA% (C:\Users\%USERNAME%\AppData\Local) \Frank_T_Clark_Software\CryptPad.exe_Url_*\". These settings are kept in a separate unique directory ("CryptPad.exe_Url_*") generated by Windows depending on the CryptPad version and where the program is run from.

The permanent CryptPad program "installation" location is recommended for a CryptPad directory under the Documents directory for an individual operator. This would be a directory named "%USERPROFILE% (C:\Users\%USERNAME%) \Documents\CryptPad". Just create the directory and copy the program into place. You could download the CryptPad.ZIP file to the Documents folder and extract into this directory. The download provides a documentation/help file, image file, and useful scripts, which can also be placed in this directory. The help file is also available online and may contain additional updated information.

If you wish, "Open With" can be set to default to CryptPad for the .SAFE encrypted files created by CryptPad. You might choose to set the default "Open With" to CryptPad for .TXT also to take advantage of the additional editing functions.

I do not provide a blind install program because I want you to know for absolute certain exactly what is required to use the program. Uninstall is very simple. Erase the program! Most Setup programs mysteriously make unknown changes to your computer. I won't even blindly change the registry for you. I do provide a readable CryptPadInstall.CMD script and a CryptPadAdd.REG file, which illustrates an install procedure you can use.

The CryptPadAdd.REG file used by the CryptPadInstall.CMD script contains all kinds of settings I use to make CryptPad the default editor. These have been used and tested on Windows 7. I now use CryptPad to edit everything where I would have used Notepad. I recorded the registry changes with the "Default Programs Editor" freeware download, which works great. It is highly recommended.

The CryptPadAdd.REG file contains registry entries to associate the CryptPad program as the default editor for the .SAFE and .TXT file types. The .HTML, .CMD, and .REG file types have a Context Menu (Right-Click) "Edit" option. All these file types also have a Context Menu option "Open (Read-only)". There is a CryptPadDelete.REG file, which contains delete codes for these registry entries. The CryptPadInstall.CMD file automatically copies the CryptPad program to the default "install" location and runs Regedit. The Install CMD script can also be run from the "install" directory to only add registry entries.

The "Program Files" directory can be used for an administrator install for all operators. This is supported by the provided "install" scripts. When the program is installed in the "Program Files" directory in a secure environment, it does not need special permissions for normal use. There is never an attempt made to write to the directory where the program is installed during normal operation of the program. The CryptPadInstallAdmin.CMD, CryptPadAddAdmin.REG, and CryptPadDeleteAdmin.REG files support administrator install and modification of the registry for all operators.

The administrator install option has not been well tested because I rarely use administrator permissions. I was not able to get the install script to work on Windows Server 2008, but I didn't try very hard. A manual install was quite simple. Just copy the files and click CryptPadAddAdmin.REG. Even on my own personal computer I rarely use administrator permissions. The individual operator install has been heavily used and tested both in my workplace and at home.

I provide the complete source so you can know for certain exactly what the CryptPad program does. Compile it for yourself, if you want. Examining the code is not easy, unless you are already a C# programmer, but it is available, if it is a concern to you. By these methods, you can trust the software. There is so much out there that is not trustworthy. You don't have to trust me. Full disclosure is the best trust there is.

The CryptPad program is a C# Windows Forms application compiled in VS2010 Express with the .NET framework version 3.5, which is included automatically with the Windows 7 OS. The program requires nothing but the supplied source and standard Windows functionality with VS2010 Express. The program has only been well used and thoroughly tested with the Windows 7 OS. I tried to upgrade to VS2013 Express but there is a problem in the new version which keeps me from easily upgrading.

The CryptPad program has only been used a little with the Windows 8 OS (Yuck!). Maybe Windows 8.1 will be better...

The CryptPad program has not been used or tested with Windows Vista (another Yuck!) or XP. Unfortunately, the .NET framework version 3.5 is not installed in Windows Vista or XP so you will need to install it to use the program in Windows Vista or XP. There are likely to be issues with the program on these operating systems. I don't use Windows Vista or XP anymore so I won't be able to help you.

Using the Program

Perhaps it will be helpful for me to describe a step by step procedure for creating an encrypted file.

  1. Start the CryptPad program.
  2. Select File, Encryption
  3. Enter your encryption string and type the Enter key.
  4. Enter the same encryption string again and type the Enter key.
  5. Enter your data.
  6. Save your file.
  7. If you open the encrypted file in Notepad you will see "~!@#" and more nonsense characters. Close the file without making any changes.
  8. Open the encrypted file in CryptPad.
  9. Enter your encryption string and type the Enter key.
  10. There is your data...

You may also add CryptPad encryption to an existing text file.

  1. Open any text file with the CryptPad program.
  2. Select File, Encryption
  3. Enter your encryption string and type the Enter key.
  4. Enter the same encryption string again and type the Enter key.
  5. Save your file.

It is also simple to remove CryptPad encryption from an existing encrypted text file.

  1. Open any encrypted text file with the CryptPad program.
  2. Enter your encryption string and type the Enter key.
  3. Select File, Encryption
  4. Enter a blank string
  5. Enter a second blank string
  6. Save your file.

The installation and use of the CryptPad program is NOT designed for the casual or novice operator! If you follow the instructions carefully, you will be able to install and use the program. The CryptPad program is as simple to use as Notepad. The minimum copy installation is very simple. Using "Open with" is not very hard either.

The readable CryptPadInstall.CMD and CryptPadAdd.REG files are also available to make a complete "install" of the CryptPad program. These have been carefully tested on the Windows 7 operating system.

Warning! The optional use of the CryptPadInstall.CMD and CryptPadAdd.REG files requires a high level of knowledge and sophisticated skill to understand the changes they make. You can do significant damage to the function of the Windows operating system using a .REG file which is just like using the Registry Editor. All the warnings you have seen about the dangers of the use of the Registry Editor apply to using a .REG file. You are usually safe using a prewritten .REG file created by a knowledgeable developer. You are usually safe when you carefully follow instructions created by a knowledgeable developer.

Using the Code

I am providing the complete VS2010 C# project zip file with the executable, documentation, and the complete source code for CryptPad, the encrypting editor Notepad replacement program for those who enjoy software code. You might be interested in adding your own special functionality.

I hope you find the source code instructive for picking up some ideas. I have learned a lot by examining the code of others. I hope examining my code will be useful to you.

The project contains numerous test files and various things I found useful to develop, test, and use CryptPad. Of particular interest are the "CryptPad (read-only)" and the "SendTo" shortcuts. Clicking the "SendTo" shortcut opens the directory where these shortcuts reside. You can drag and drop the "CryptPad (read-only)" shortcut on the "SendTo" shortcut to add a new item. There are many interesting and useful things you can do with the "SendTo" directory.

It is also particularly important to mention the CryptPadAdd.REG file. This file contains registry entries to provide the Windows Explorer, context menu, "Open With", type of associations to use CryptPad with various file extensions. You must edit the CryptPad.REG file to provide the location where the CryptPad.exe file is kept, if you do not use the recommended "Documents\Cryptpad" directory. You may also use the supplied CryptPadInstall.cmd file to automatically edit the file and apply the changes. Some of the entries provided by the CryptPadAdd.REG file cannot be duplicated by using only the "Open With" association functionality.

Warning! The use of a .REG file requires a high level of knowledge and sophistication. You can do significant damage to the function of the Windows operating system using a .REG file which is just like using the Registry Editor. All the warnings you have seen about the use of the Registry Editor apply to using a .REG file.

Points of Interest

One of the many interesting features in the CryptPad program source code is the automatic detection of ANSI, UTF-8, and Unicode character encodings with Byte Order Mark (BOM) detection. This is a feature missing out of the simple Notepad "clones" I have seen. One of them implements it now because I told the writer how to do it. The .NET library provides all the support needed for automatic detection but doesn't tell you how to use it.

There are two pieces of information required and some sample code to demonstrate their use. I have seen many complicated solutions proposed for automatic detection but it is actually quite simple. I will mention that my assumption is that the file is properly encoded without encoding errors or malformed characters. This is a reasonable assumption for any properly written program (such as Notepad and CryptPad) used to create a file.

The first piece of necessary information is to recognize that the UTF-8 encoding has been carefully designed for automatic detection, which makes it vastly different than the complexities and ambiguities of ANSI encoding. It is highly unlikely (but possible) that an ANSI file would be mistaken as UTF-8. The other detection methods don't promise any better. I won't go into detail about this feature of the UTF-8 encoding.

The second piece of necessary information is to recognize that the .NET library implements automatic detection through exception handling when ANSI characters are found. Unfortunately, the documentation doesn't connect the dots for how to implement this automatic detection.

This sample code illustrates automatic detection of UTF-8 and other Unicode encodings with an exception handling fallback to ANSI encoding.

This simple (assuming you are a competent C# programmer) example excerpt is not identical to the supplied source code.

file_stream = new FileStream (filename, FileMode.Open,
    FileAccess.ReadWrite, FileShare.Read);

// UTF-8 encoding with automatic dection of other
// Unicode encodings and ANSI error detection
Encoding save_encoding = new UTF8Encoding (false,true);
StreamReader sr = new StreamReader (file_stream,
    save_encoding, true);

string str = null;
try
{
    str = sr.ReadToEnd ();
    // Save the actual encoding for later write
    save_encoding = sr.CurrentEncoding;
}
catch
{
    // ANSI error detection
    save_encoding = null;
}
if (null == save_encoding)
{
    // use ANSI from the default code page
    save_encoding = Encoding.GetEncoding (0);
    file_stream.Position = 0;
    sr = new StreamReader (file_stream, save_encoding);
    str = sr.ReadToEnd ();
}

... modify str

// discard any previous contents
file_stream.SetLength (0);

// use StreamWriter with the same encoding
StreamWriter sw = new StreamWriter (file_stream,
    save_encoding);
sw.Write (str);

The most novel aspect of the CryptPad program source code is the encryption. The program uses a quick and simple double scrambling algorithm of addition/subtraction based on a secret encryption string provided by the operator. The program encrypts only ASCII so that I have a contiguous arithmetic range. My apologies to those whose language is not based on ASCII. The intent is to continue to use text rather than binary processing. The encryption is highly efficient and adds only 21 bytes to the size.

It is possible to use Base64 or similar encoding to convert the entire Unicode string to ASCII for the encryption. This would add a lot of overhead in processing and size. Using any standard encryption would have the same effect. These other methods would also add a lot of complexity to the program. This quick, simple, and effective solution serves my purposes the best.

These simple example excerpts are not identical to the supplied source code.

private string Encrypt (string str)
{
    StringBuilder st = new StringBuilder (str);
    for (int i = 0; i < st.Length; ++i)
    {
        int chr = st[i];
        if (isASCII ((char) chr))
        {
            chr = ' ' + (((chr - ' ') + E (i)) % 95);
            st[i] = (char) chr;
        }
    }
    return st.ToString ();
}

private string Decrypt (string str)
{
    StringBuilder st = new StringBuilder (str);
    for (int i = 0; i < st.Length; ++i)
    {
        int chr = st[i];
        if (isASCII ((char) chr))
        {
            chr = ' ' + ((chr - ' ') - E (i) + 95) % 95;
            st[i] = (char) chr;
        }
    }
    return st.ToString ();
}

The encryption string is scrambled with a pseudo-random number seeded with a checksum of the encryption string

private int E (int i)
{
return (encryption_string[i % encryption_string.Length]
    + i + i * random_seed) % 95;
}

// plus checksum for random_seed
private int ChecksumAdd (string str)
{
    int checksum = 0;
    for (int i = 0; i < str.Length; ++i)
    {
        checksum += str[i];
    }
    return checksum;
}

The CryptPad program uses an additional XOR checksum placed in the file to verify whether the encryption string is correct when attempting to decrypt. I protect short encryption strings by extending it to at least 32 characters. The purpose is to protect the operator from a wrong decryption and warn them, if they mistype the encryption string.

// xor checksum for in the file
private uint ChecksumXOR (string str)
{
    uint checksum = 0;
    int j = 32;
    if (32 < str.Length)
        j = str.Length;
    for (int i = 0; i < j; ++i)
    {
        uint t = 0;
        if (0 < (0x80000000 & checksum))
            t = 1;
        checksum <<= 1;
        checksum |= t;
        checksum ^= str[i % str.Length];
    }
    return checksum;
}

I use a second XOR checksum to detect whether the encrypted data has been corrupted by being modified without being decrypted. This would destroy the integrity of the encrypted data. The operator would be notified immediately upon attempting to open the file whether the encrypted data had been modified and corrupted. If the '~!@#$' encryption header is modified, then the data is assumed to be non-encrypted and displayed without decryption.

I would not claim the encryption used by the CryptPad program is CIA quality but I think you will find it is highly effective. The strength of the encryption is highly dependent on the length of the encryption string. A strong string of ten characters or more is not likely to be broken by anyone except a skilled cryptologist. I am not a skilled cryptologist but I am familiar with some aspects of cryptology. The primary attacks against this encryption have been anticipated.

I am offering a challenge to see if a clever hacker or skilled cryptologist will take an interest and break my encryption. I have included a file called "hack.safe" in the zip file. If you can break my encryption, please post the results in the discussion with the encryption string. Anyone can verify your success. I would be interested to know how you did it, how long it took, and what type of equipment was needed.

The most likely attack would be against the XOR checksum used to verify the encryption string against typographical error. The success of this type of attack depends on the strength of the encryption string you choose.

The suggestion has been made that I should use the File.Encrypt method. I do not want a decrypted version of the file to ever reside on any drive for any period of time. I want to be able to carry the file anywhere I want and use anywhere I want. CryptPad.exe can be carried with the encrypted file (such as on a USB drive) and used anywhere to read the file without any installation or removal and there is never a trace of the decrypted file on the computer (Well, maybe in memory or in the paging file...). I want the encryption to be text that I can copy and paste anywhere. The File.Encrypt method does not meet any of those criteria. I have seen nothing that meets these criteria.

The suggestion has also been made that I should use an industry defined standard encryption method. This would result in binary files. I want to use only methods that produce plain text so that the encryption can be pasted into email, instant messages, and wherever plain text would normally be used. It is possible to Base64 encode the result. I do not wish for the file size to increase by a significant amount. Standard encryption methods also increase the complexity and processing of the program.

Those who wish to use an industry defined standard encryption method and support Unicode can modify the program to their requirements. I am happy with a simple and fast ASCII encryption process.

What Is Notepad?

Notepad is the basic text editing tool provided by the Windows operating system to view or edit plain text files. A text file is a file type typically identified by the .TXT file name extension. There are other extensions which contain text, which I often edit with Notepad.

Notepad has several specific important characteristics to note beside the fact it is a plain text editor. Probably the next most important characteristic of Notepad is that the entire file is completely loaded into memory while editing. This makes Notepad fast for the typical file of about 64k or less. However this is a problem when editing multi-megabyte files. The good news is that Windows 7 Notepad and CryptPad can do it but the bad news is that it slows down pretty quickly. You usually don't need to do this very often.

Another important characteristic is that it supports all the standard file encodings. ANSI, UTF-8 (ASCII), Unicode (UTF-8), Unicode, and Unicode (Big-Endian).

What Is Windows Explorer?

It is important to understand that Notepad is tightly integrated with Windows Explorer. The CryptPad program can also be tightly integrated with Windows Explorer. Windows Explorer is my primary development platform or environment for general purposes. Most developers understand this. A beginning computer operator may not understand the importance of Windows Explorer, which is also known as "My Computer". Many people use the "Desktop" as their primary launch platform. The "Desktop" is actually a simple view of Windows Explorer. I primarily use Windows Explorer as my launch platform.

The first thing I always do on a new computer is enable the icon for "My Computer" on the "Desktop". I also always rename it to the name of the computer because I remote to so many computers so often, it helps to have a little reminder of what computer I am using. Many times the first thing I click on the desktop is "My Computer" or Windows Explorer.

I am very particular about how Windows Explorer is configured. It is vitally important that all file information be displayed. The second thing I always do on a new computer is enable file details in Windows Explorer. The third thing I do is change the default Layout to show the Navigation pane. I also like the Details pane.

What Is Plain Text?

All files can be placed in two general categories. Text files are designed primarily to be read by a person. Binary files are designed primarily to be read by a computer program. Binary files may contain text but text files almost never contain binary data.

A proper plain text file contains only printing characters designed to be read by a person. The file will contain the ASCII CR/LF control characters to indicate the end of a line and the ASCII HT (TAB) control characters to arrange text in columns. Any other ASCII control characters are improper. Some of the ASCII control characters are actually encoded to a printable Unicode character. It is also improper in a typical Windows file for there to be ASCII CR or LF control characters which are not part of a CR/LF pair.

What Is the TextBox?

Notepad is based on the Windows TextBox control which provides most of the editing functionality. Notepad and TextBox are both a bit short on documentation for their functionality but are mostly simple. The Help option in Notepad does little more than provide answers to some common simple questions about Notepad.

TextBox is the primary input control for Windows. Almost all other Windows input functionality either expands or imitates the basic functionality of TextBox.

How is CryptPad different?

The basic use of CryptPad is mostly identical to Notepad. The design of the CryptPad program is similar to Notepad. CryptPad is also based on the TextBox control. The primary difference of CryptPad from Notepad is a lack of support for printing. You may use Notepad, when you wish to print. CryptPad adds support for encryption, file locking, .NET Framework Regular Expression Synatx, and automatic backup. CryptPad provides other functionality beyond Notepad.

Cryptpad describes its functionality in more detail than Notepad provides. The documentation assumes you know how to use Notepad so it primarily describes what is different from Notepad. The documentation also describes some of the more mysterious operations it shares with Notepad. The computer elite love murky software operation, which needs to be researched to discover and then remembered. I believe in documentation, which is disdained among many of those who consider themselves skilled in computer usage and software development. Maybe they can't or won't read plain English and assume nobody else does either.

CryptPad uses the operator specified Message Box system font and size in all CryptPad dialogs. Those with young good eyes can use the default 8pt or whatever while those with older poor eyes can use Control Panel, Personalization, Window Color and Appearance to specify what we need. I prefer Verdana 12pt. This works fine on Windows 7 but Microsoft in their great wisdom does not appear to allow us to specify our own font on Windows 8! Changing the font size on Windows 8 is also awkward, as is much of Windows 8. (Did I already say? Yuck!) Who do I complain to that will listen and do something for the handicapped or visually limited?

The most useful functionality for developers is the error checking for misplaced control characters and other checking and correcting functions. CryptPad is also more helpful and functional than Notepad without loosing the basic simplicity and speed.

You may refer to the help/documentation provided with the source or the original website for additional details about the CryptPad program:

Release History and Notes

A history of changes to the CryptPad program and release notes.

  • Version 3.0 Released 2014-07-27:
    • Corrected link case error of 'CryptPad' not 'Cryptpad' in Help, Online Contents and Help, About description.
    • Corrected an error and some lingering confusion about the current directory handling.
    • Streamlined some of the settings code and other minor code changes.
    • Added AcceptButton and CancelButton to the Messagebox class so that even if the focus is on the textbox you can still use the Enter key or the ESC key.
    • Added a combobox for the find and replace dialogs as a reminder and automatic insert for special non-Regex patterns and some of the most common Regex patterns. With the introduction, development, and testing of Regex the version is bumped to a 3.0 release.
  • Version 2.8 Released 2014-06-01:
    • Corrected the special functionality of "Replace All" when there is only a single non-RegEx replacement.
    • Improved the documentation of the RegEx implementation after further use and testing.
    • Other minor documentation improvements.
  • Version 2.7 Released 2014-04-06:
    • Added Regular Expression Synatx to Find and Replace.

      This option is brand new and not thoroughly tested!

    • Corrected name errors in the CryptPadAdminInstall script.
    • Made sure both install scripts included both install option files.
    • Slight change to the Force CR/LF (Windows) and Force LF (UNIX) tools to preserve a dangling CR.
  • Version 2.6 released 2014-02-09:
    • Changed the handling of the current directory.
    • Added a conversion to support using the echo command to create a quote in an automation script. In this case you may use "\q" to indicate a quote.
    • Improved RestoreCaretPosition function and corrected occasional exception errors when the number of lines changes and the current caret position is near the end of the document.
  • Version 2.5 released 2013-12-08:
    • Window Position Setting fixed.
    • Saved the Replace string on a Find Next so it is not lost, if followed by a Cancel.
    • Rearranged code a little bit to more accurately group related functions.
    • I did some tweaks of control spacing on the find and replace dialogs.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Frank T. Clark
Systems Engineer Three Angels Broadcasting Network
United States United States
I am a Software Systems Design Engineer experienced with IEEE standards and the entire IEEE software development life cycle. Concept Exploration, Requirements, Design, Implementation, Test, Installation and Checkout, Operation and Maintenance. I enjoy working with people and solving customer problems.
 
I am currently employed as Information Technology Staff in the religious satellite broadcasting industry.

Comments and Discussions

 
Questionpuzzling to use PinmemberBillWoodruff7-Jul-13 19:35 
AnswerRe: puzzling to use [modified] PinprofessionalFrank T. Clark8-Jul-13 4:46 
AnswerRe: puzzling to use [modified] PinprofessionalFrank T. Clark10-Jul-13 6:26 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.141220.1 | Last Updated 28 Jul 2014
Article Copyright 2013 by Frank T. Clark
Everything else Copyright © CodeProject, 1999-2014
Layout: fixed | fluid