C #'s Des encryption and decryption support both. NET and. Net CF 2.0 platforms, so that a encapsulated class can be used on both PC and WM mobile phones. The DES in C # has more IV implementations than the des algorithms in other languages. In fact, the IV can be set to an arbitrary 8-bit byte. Note that DESC should be added. mode = ciphermode. ECB is compatible with DES encryption algorithms in other languages.
Paste the Code directly. The following code is common. Do not laugh!
Using system; <br/> using system. collections. generic; <br/> using system. text; <br/> using system. security. cryptography; <br/> using system. globalization; <br/> using system. io; <br/> class cls_cryptography <br/> {<br/> /// <summary> <br/> // set class to 8 characters <br/> // /</Summary> <br/> Private Static byte [] IV = {0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef }; <br/> /// <summary> <br/> // encrypted string <br/> /// </Summary> <br/> // <returns> returns the ciphertext </returns> <br/> Public static string encryptstring (string key, string Str) <br/> {<br/> byte [] DATA = encoding. default. getbytes (STR); <br/> byte [] result = encryptdata (Key, data); <br/> If (result! = NULL) <br/> return convert. tobase64string (result, 0, result. length); <br/> else <br/> return ""; <br/>}< br/> /// <summary> <br/> // encrypt binary data <br/> /// </Summary> <br/> /// <returns> returns the binary ciphertext </returns> <br/> Public static byte [] encryptdata (string key, byte [] data) <br/>{< br/> byte [] bkey = encoding. default. getbytes (key. substring (0, 8); <br/> byte [] BIV = IV; <br/> try <br/>{< br/> descryptose Rviceprovider DESC = new descryptoserviceprovider (); <br/> DESC. mode = ciphermode. ECB; // compatible with DES encryption algorithms in other languages <br/> DESC. padding = paddingmode. zeros; // auto-fill 0 <br/> memorystream mstream = new memorystream (); <br/> cryptostream cstream = new cryptostream (mstream, DESC. createencryptor (bkey, BIV), cryptostreammode. write); <br/> cstream. write (data, 0, Data. length); <br/> cstream. flushfinalblock (); <br/> return Mstream. toarray (); <br/>}< br/> catch <br/> {<br/> return NULL; <br/>}< br/> // <summary> <br/> // decrypt the ciphertext to a plaintext. <br/> // </Summary> <br/> // <returns> Returns plaintext </returns> <br/> Public static string decryptstring (string key, string decryptstr) <br/>{< br/> byte [] DATA = convert. frombase64string (decryptstr); <br/> byte [] result = decryptdata (Key, data); <br/> If (result! = NULL) <br/> return encoding. default. getstring (result, 0, result. length); <br/> else <br/> return ""; <br/>}</P> <p> /// <summary> <br/> // decrypt the binary ciphertext into plain text binary. <br/> // </Summary> <br/> // <returns> returns the plaintext binary value </returns> <br/> Public static byte [] decryptdata (string key, byte [] data) <br/>{< br/> try <br/>{< br/> byte [] bkey = encoding. default. getbytes (key. substring (0, 8); <br/> byte [] BIV = IV; <br/> descryptoserviceprovider DESC = new descryptoserviceprovider (); <br/> DESC. mode = ciphermode. ECB; // compatible with DES encryption algorithms in other languages <br/> DESC. padding = paddingmode. zeros; // auto-fill 0 <br/> memorystream mstream = new memorystream (); <br/> cryptostream cstream = new cryptostream (mstream, DESC. createdecryptor (bkey, BIV), cryptostreammode. write); <br/> cstream. write (data, 0, Data. length); <br/> cstream. flushfinalblock (); <br/> return mstream. toarray (); <br/>}< br/> catch <br/> {<br/> return NULL; <br/>}< br/>}
As for how to call... To put it simply
String STR = cls_cryptography.encryptstring ("12345678", "12345678"); <br/> MessageBox. show (STR); <br/> STR = cls_cryptography.decryptstring ("12345678", STR); <br/> MessageBox. show (STR );