C # code
Private voidButton1_Click (Objectsender, EventArgs e) { stringJiami =TextBox1.Text; TextBox2.Text= Desencode (Jiami,"11111111"); } Public Static stringDes_key ="11111111"; #regionDesencode des encryption Public Static stringDesencode (stringPtoencrypt,stringSKey) { //string pToEncrypt1 = HttpContext.Current.Server.UrlEncode (Ptoencrypt); DESCryptoServiceProvider des =NewDESCryptoServiceProvider (); byte[] Inputbytearray = encoding.getencoding ("UTF-8"). GetBytes (Ptoencrypt); //establish keys and offsets for encrypted objects//GetBytes method of using Asciiencoding.ascii method in original text//make the input password must be entered in English textDes. Key =ASCIIEncoding.ASCII.GetBytes (SKey); Des.iv=ASCIIEncoding.ASCII.GetBytes (SKey); MemoryStream Ms=NewMemoryStream (); CryptoStream CS=NewCryptoStream (MS, Des. CreateEncryptor (), cryptostreammode.write); Cs. Write (Inputbytearray,0, inputbytearray.length); Cs. FlushFinalBlock (); StringBuilder ret=NewStringBuilder (); foreach(byteBinchMs. ToArray ()) {ret. AppendFormat ("{0:x2}", B); } ret. ToString (); returnret. ToString (); } #endregion #regionDesdecode des decryption Public Static stringDesdecode (stringPtodecrypt,stringSKey) { //HttpContext.Current.Response.Write (ptodecrypt + "<br>" + SKey); //HttpContext.Current.Response.End (); DESCryptoServiceProvider des =NewDESCryptoServiceProvider (); byte[] Inputbytearray =New byte[Ptodecrypt.length/2]; for(intx =0; X < Ptodecrypt.length/2; X + +) { inti = (Convert.ToInt32 (ptodecrypt.substring (x *2,2), -)); INPUTBYTEARRAY[X]= (byte) I; } des. Key=ASCIIEncoding.ASCII.GetBytes (SKey); Des.iv=ASCIIEncoding.ASCII.GetBytes (SKey); MemoryStream Ms=NewMemoryStream (); CryptoStream CS=NewCryptoStream (MS, Des. CreateDecryptor (), cryptostreammode.write); Cs. Write (Inputbytearray,0, inputbytearray.length); Cs. FlushFinalBlock (); StringBuilder ret=NewStringBuilder (); //return HttpContext.Current.Server.UrlDecode (System.Text.Encoding.Default.GetString (Ms. ToArray ())); returnSystem.Text.Encoding.Default.GetString (Ms. ToArray ()); } #endregion Private voidButton2_Click (Objectsender, EventArgs e) { stringJiemi =TextBox2.Text; TextBox3.Text= Desdecode (Jiemi,"11111111"); }
Java code
ImportJavax.crypto.Cipher; ImportJavax.crypto.SecretKey; Importjavax.crypto.SecretKeyFactory; ImportJavax.crypto.spec.DESKeySpec; ImportJavax.crypto.spec.IvParameterSpec; Public classDes {Private byte[] deskey; //Decrypt Data Public StaticString decrypt (string message,string key)throwsException {byte[] Bytesrc =converthexstring (message); Cipher Cipher= Cipher.getinstance ("des/cbc/pkcs5padding"); Deskeyspec Deskeyspec=NewDeskeyspec (Key.getbytes ("UTF-8")); Secretkeyfactory keyfactory= Secretkeyfactory.getinstance ("DES"); Secretkey Secretkey=Keyfactory.generatesecret (DESKEYSPEC); Ivparameterspec IV=NewIvparameterspec (Key.getbytes ("UTF-8")); Cipher.init (Cipher.decrypt_mode, Secretkey, iv); byte[] Retbyte =cipher.dofinal (BYTESRC); return NewString (Retbyte); } Public Static byte[] Encrypt (String message, string key)throwsException {Cipher Cipher= Cipher.getinstance ("des/cbc/pkcs5padding"); Deskeyspec Deskeyspec=NewDeskeyspec (Key.getbytes ("UTF-8")); Secretkeyfactory keyfactory= Secretkeyfactory.getinstance ("DES"); Secretkey Secretkey=Keyfactory.generatesecret (DESKEYSPEC); Ivparameterspec IV=NewIvparameterspec (Key.getbytes ("UTF-8")); Cipher.init (Cipher.encrypt_mode, Secretkey, iv); returnCipher.dofinal (Message.getbytes ("UTF-8")); } Public Static byte[] converthexstring (String ss) {byteDigest[] =New byte[Ss.length ()/2]; for(inti = 0; i < digest.length; i++) {String byteString= ss.substring (2 * I, 2 * i + 2); intBytevalue = Integer.parseint (byteString, 16); Digest[i]= (byte) Bytevalue; } returnDigest; } Public Static voidMain (string[] args)throwsException {String key= "11111111"; String value= "AA"; String Jiami=java.net.urlencoder.encode (Value, "Utf-8"). toLowerCase (); System.out.println ("Encrypt data:" +Jiami); String a=tohexstring (Encrypt (Jiami, key)). toUpperCase (); System.out.println ("The encrypted data is:" +a); String b=java.net.urldecoder.decode (Decrypt (A,key), "Utf-8") ; System.out.println ("Decrypted data:" +b); } Public StaticString tohexstring (byteb[]) {StringBuffer hexstring=NewStringBuffer (); for(inti = 0; i < b.length; i++) {String plaintext= Integer.tohexstring (0xFF &B[i]); if(Plaintext.length () < 2) PlainText= "0" +plaintext; Hexstring.append (plaintext); } returnhexstring.tostring (); } }
Excerpt: http://www.cnblogs.com/DrWang/archive/2011/03/30/2000124.html
Https://en.wikipedia.org/wiki/Initialization_vector
. NET and Java-generic 3DES encryption and decryption method