Click here to Skip to main content
15,881,139 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 115.1K   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

 
QuestionWhat is "MPS"? Pin
Uwe Keim30-Dec-04 20:03
sitebuilderUwe Keim30-Dec-04 20:03 
AnswerRe: What is "MPS"? Pin
Peter M. Lemmen30-Dec-04 21:55
Peter M. Lemmen30-Dec-04 21:55 

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.