Click here to Skip to main content
Click here to Skip to main content
Go to top

A C# implementation of Unix crypt()

, 30 Dec 2004
Rate this:
Please Sign up or sign in to vote.
A C# version of the Unix crypt() algorithm.

Introduction

At my office, we are currently working on a major overhaul of some of our core systems. The 'strategic' decision was made to lose most of our Unix machines and move to a more Microsoft oriented platform. One of the changes caused by this decision was the use of the Microsoft Provisioning System, so all the scripts we made over the years to help us run the business have to be converted for use by the MPF (Microsoft Provisioning Framework). We are changing the systems in a few steps, so at one point, we will have an MPS-based front-end, talking to the Unix back-end. At that point, the MPS will create the new user accounts, but because almost none of the servers and applications using the data from those user accounts have yet been converted, we need to be able to provide them with the information they are expecting. In this case, some of the applications expect a user account to contain a password encrypted with the Unix crypt() system call. Thanks to the beauty of open source, the source code for that system call is widely available, and I was quickly able to find some source I could work with and port to C# (which we are using to create our custom MPF providers with).

Using the code

Using the code is very straightforward. Either put the class in your own application, or put it in a class library. There are two calls:

string Crypt(string textToEncrypt);

and:

string Crypt(string encryptionSalt, string textToEncrypt);

Both are static members. If you use the first method, it will randomly generate the salt characters for you and then call the second method. Salt, in this case, are two letters that are used to provide some extra randomness for the encryption, and allow you to repeat any previous encryption (if you also have the text that was encrypted).

Another thing users should know is that the text to encrypt should not be more then 8 characters long. If your text is longer than 8 characters, only the first 8 are used and the rest is ignored.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

Share

About the Author

Jeroen-bart Engelen
Web Developer
Netherlands Netherlands
Working as a Software Engineer at Internet Solutions, the KPN (Royal Dutch Telecom) department that delivers the ICT for, amongst others, the biggest ISP in the Netherlands.

Comments and Discussions

 
GeneralMy vote of 5 Pinmemberwsc09184-Jul-12 20:32 
QuestionThank you Pinmemberkamalindu22-Mar-12 8:17 
QuestionUsage of the Unix Crypt. PinmemberSravan rao7-Dec-11 0:43 
GeneralMy vote of 5 PinmemberScott Wayne Shepherd7-Oct-11 13:43 
GeneralI'm confused about the 8 character limit Pinmemberbwechner1-Jun-11 17:18 
GeneralMy vote of 5 Pinmembermrstratman@hotmail.com29-Mar-11 7:56 
GeneralIndexOutOfRangeException PinmemberJordanwb4-Feb-11 13:31 
GeneralRe: IndexOutOfRangeException Pinmemberjonathandandries20-Oct-11 6:56 
Generalmd5 Pinmembermayrand27-Apr-10 4:58 
QuestionProblem With $ caracter Pinmemberst20156-Mar-09 13:21 

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 | Mobile
Web03 | 2.8.140926.1 | Last Updated 30 Dec 2004
Article Copyright 2004 by Jeroen-bart Engelen
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid