Click here to Skip to main content
15,867,141 members
Articles / Programming Languages / C#
Article

A C# implementation of Unix crypt()

Rate me:
Please Sign up or sign in to vote.
4.69/5 (13 votes)
30 Dec 20042 min read 114.8K   2.8K   20   27
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:

C#
string Crypt(string textToEncrypt);

and:

C#
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


Written By
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 Pin
wsc09184-Jul-12 20:32
wsc09184-Jul-12 20:32 
QuestionThank you Pin
kamalindu22-Mar-12 8:17
kamalindu22-Mar-12 8:17 
QuestionUsage of the Unix Crypt. Pin
Sravan rao7-Dec-11 0:43
Sravan rao7-Dec-11 0:43 
GeneralMy vote of 5 Pin
Scott Wayne Shepherd7-Oct-11 13:43
Scott Wayne Shepherd7-Oct-11 13:43 
GeneralI'm confused about the 8 character limit Pin
bwechner1-Jun-11 17:18
bwechner1-Jun-11 17:18 
GeneralMy vote of 5 Pin
mrstratman@hotmail.com29-Mar-11 7:56
mrstratman@hotmail.com29-Mar-11 7:56 
GeneralIndexOutOfRangeException Pin
Jordanwb4-Feb-11 13:31
Jordanwb4-Feb-11 13:31 
GeneralRe: IndexOutOfRangeException Pin
jonathandandries20-Oct-11 6:56
jonathandandries20-Oct-11 6:56 
Generalmd5 Pin
mayrand27-Apr-10 4:58
mayrand27-Apr-10 4:58 
QuestionProblem With $ caracter Pin
st20156-Mar-09 13:21
st20156-Mar-09 13:21 
AnswerRe: Problem With $ caracter Pin
Miguel Correia Lima22-Feb-11 0:07
professionalMiguel Correia Lima22-Feb-11 0:07 
GeneralRe: Problem With $ caracter Pin
jonathandandries20-Oct-11 6:57
jonathandandries20-Oct-11 6:57 
GeneralTHANK YOU! Pin
mpaine_ciber16-Oct-08 10:00
mpaine_ciber16-Oct-08 10:00 
Generalthankyou Pin
MacManzo24-Sep-08 9:01
MacManzo24-Sep-08 9:01 
QuestionPHP crypt() function implementation in C# Pin
darkocobe3-Dec-07 21:44
darkocobe3-Dec-07 21:44 
AnswerRe: PHP crypt() function implementation in C# Pin
jonathandandries20-Oct-11 6:54
jonathandandries20-Oct-11 6:54 
QuestionOpen Source Usage Pin
dscsekhar7-Aug-07 2:30
dscsekhar7-Aug-07 2:30 
AnswerRe: Open Source Usage Pin
Jeroen-bart Engelen7-Aug-07 3:15
Jeroen-bart Engelen7-Aug-07 3:15 
GeneralRe: Open Source Usage Pin
Jeroen-bart Engelen7-Aug-07 3:20
Jeroen-bart Engelen7-Aug-07 3:20 
GeneralThank you so much Pin
RTeja17-Nov-06 1:48
RTeja17-Nov-06 1:48 
Questionthanks for the code...is there one that supports MD5 too? Pin
Srivalli1-Jun-06 14:48
Srivalli1-Jun-06 14:48 
AnswerRe: thanks for the code...is there one that supports MD5 too? Pin
Jeroen-bart Engelen1-Jun-06 15:21
Jeroen-bart Engelen1-Jun-06 15:21 
GeneralThank You Pin
pandhoffman19-Apr-06 8:55
pandhoffman19-Apr-06 8:55 
GeneralPerfect! Pin
Adam °Wimsatt5-Jan-05 3:50
Adam °Wimsatt5-Jan-05 3:50 
GeneralRe: Perfect! Pin
Jeroen-bart Engelen5-Jan-05 6:46
Jeroen-bart Engelen5-Jan-05 6:46 

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

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