* * Project xxxx * Package com.xxxx.utils * */ package com.xxxxx.utils; import java.io.FileInputStream; import java.io.ObjectInputStream; import java.security.NoSuchAlgorithmException; import java.security.Security; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.NoSuchPaddingException; import javax.crypto.SecretKey; public class DES { private String Algorithm = "DESede"; //"DESede" for Triple DES private KeyGenerator keygen; private SecretKey deskey; private Cipher c; private byte[] cipherByte; public DES() { init(); } public DES(String filename) { init(filename); } public SecretKey genKey() { try { keygen = KeyGenerator.getInstance(Algorithm); deskey = keygen.generateKey(); //利用JavaBean的持久化将key保存为文件XXX.key } catch (NoSuchAlgorithmException ex) { ex.printStackTrace(); } catch (Exception ex) { ex.printStackTrace(); } return deskey; } /** * * @param filename */ public void init(String filename) { // restore key Security.addProvider(new com.sun.crypto.provider.SunJCE()); try { FileInputStream fis = new FileInputStream(filename); fis = new FileInputStream(filename); ObjectInputStream ois = new ObjectInputStream(fis); deskey = (SecretKey) ois.readObject(); ois.close(); fis.close(); c = Cipher.getInstance(Algorithm); } catch (NoSuchAlgorithmException ex) { ex.printStackTrace(); } catch (NoSuchPaddingException ex) { ex.printStackTrace(); } catch (Exception ex) { ex.printStackTrace(); } } public void init() { Security.addProvider(new com.sun.crypto.provider.SunJCE()); try { keygen = KeyGenerator.getInstance(Algorithm); deskey = keygen.generateKey(); c = Cipher.getInstance(Algorithm); } catch (NoSuchAlgorithmException ex) { ex.printStackTrace(); } catch (NoSuchPaddingException ex) { ex.printStackTrace(); } } public byte[] encryptor(String str) { try { c.init(Cipher.ENCRYPT_MODE, deskey); cipherByte = c.doFinal(str.getBytes()); } catch (java.security.InvalidKeyException ex) { ex.printStackTrace(); } catch (javax.crypto.BadPaddingException ex) { ex.printStackTrace(); } catch (javax.crypto.IllegalBlockSizeException ex) { ex.printStackTrace(); } catch (Exception ex) { ex.printStackTrace(); } return cipherByte; } public String decryptor(byte[] buff) { try { c.init(Cipher.DECRYPT_MODE, deskey); cipherByte = c.doFinal(buff); } catch (java.security.InvalidKeyException ex) { ex.printStackTrace(); } catch (javax.crypto.BadPaddingException ex) { ex.printStackTrace(); } catch (javax.crypto.IllegalBlockSizeException ex) { ex.printStackTrace(); } catch (Exception ex) { ex.printStackTrace(); } return (new String(cipherByte)); } } /* * Project xxxx * Package com.xxxx.utils * Created on 2003-11-24 * Author Derys * */ package com.xxxx.utils; /** * * */ public class XXXDES { private static XXXDES instance = new XXXDES(); public XXXDES() { } /** * * @param str * @return */ public String encrypt(String str) { StringBuffer buffer = new StringBuffer(); DES des = new DES("XXX.key"); byte[] en = des.encryptor(str); for (int i = 0; i < en.length; i++) { buffer.append((char) en[i]); } return buffer.toString(); } /** * * @param str * @return */ public String decrypt(String str) { DES des = new DES("XXX.key"); byte[] en = new byte[str.length()]; for (int i = 0; i < str.length(); i++) { en[i] = (byte) str.charAt(i); } String de = des.decryptor(en); return de; } /** * * @param str * @return */ public String replaceChar(String str) { StringBuffer buffer = new StringBuffer(); int index = str.indexOf("'"); if (index == -1) { return str; } while (index > -1) { buffer.append(str.substring(0, index)); buffer.append("''"); str = str.substring(index + 1); index = str.indexOf("'"); } buffer.append(str); return buffer.toString(); } /** * * @return */ public static XXXDES getInstance(){ if(instance == null){ instance = new XXXDES(); } return instance; } } 使用: encryptedTextXXXDES.getInstance().encrypt("your plain text"); plainText=XXXDES.getInstance().decrypt("your encrypted text"); 欢迎访问米鼠网:http://fac.misuland.com using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Security.Cryptography; 中国网管联盟www、bitsCN、com namespace ConsoleApplication1 { class Program { public static string Encrypt3DES(string a_strString, string a_strKey) { TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider(); 中国网管联盟www_bitscn_com DES.Key = ASCIIEncoding.ASCII.GetBytes(a_strKey); DES.Mode = CipherMode.ECB; 网管网bitsCN.com ICryptoTransform DESEncrypt = DES.CreateEncryptor(); 中国网管联盟www_bitscn_com byte[] Buffer = ASCIIEncoding.ASCII.GetBytes(a_strString); return Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length)); } 网管网bitsCN_com public static string Decrypt3DES(string a_strString, string a_strKey) { TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider(); 网管网bitsCN_com DES.Key = ASCIIEncoding.ASCII.GetBytes(a_strKey); DES.Mode = CipherMode.ECB; DES.Padding = System.Security.Cryptography.PaddingMode.PKCS7; 中国网管联盟www、bitsCN、com ICryptoTransform DESDecrypt = DES.CreateDecryptor(); 54com.cn string result = ""; try { byte[] Buffer = Convert.FromBase64String(a_strString); result = ASCIIEncoding.ASCII.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length)); } catch (Exception e) { 网管网bitsCN.com } return result; } 网管网bitsCN.com static void Main(string[] args) { Console.WriteLine(Encrypt3DES("999999999", "#s^un2ye31"); //Response.Write(DecryptString(EncryptString("aabbcc"))); //string transDesKey = "L/Lcp55e4H8OMelF1nw9yMhhpFvymI9b"; //Encrypt3DES test = new Encrypt3DES(transDesKey); //Response.Write(EncryptString("aabbcc")); //test.EncryptString("aabbcc"); } /// /// 加密 /// /// /// private string EncryptString(string encryptValue) { TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider(); des.Key = Convert.FromBase64String(sKey); des.Mode = CipherMode.ECB; byte[] valBytes = Encoding.Unicode.GetBytes(encryptValue); ICryptoTransform transform = des.CreateEncryptor(); MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, transform, CryptoStreamMode.Write); cs.Write(valBytes, 0, valBytes.Length); cs.FlushFinalBlock(); byte[] returnBytes = ms.ToArray(); cs.Close(); return Convert.ToBase64String(returnBytes); } /// /// 解密 /// /// /// private string DecryptString(string encryptedValue) { TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider(); des.Key = Convert.FromBase64String(sKey); des.Mode = CipherMode.ECB; byte[] valBytes = Convert.FromBase64String(encryptedValue); ICryptoTransform transform = des.CreateDecryptor(); MemoryStream ms = new MemoryStream(); CryptoStream cs = new CryptoStream(ms, transform, CryptoStreamMode.Write); cs.Write(valBytes, 0, valBytes.Length); cs.FlushFinalBlock(); byte[] returnBytes = ms.ToArray(); cs.Close(); return Encoding.Unicode.GetString(returnBytes); } //private string ByteToHex(byte[] byteArray) //{ // string outString = ""; // foreach (Byte b in byteArray) // outString += b.ToString("X2"); // return outString; //} //private byte[] HexToByte(string hexString) //{ // byte[] returnBytes = new byte[hexString.Length / 2]; // for (int i = 0; i < returnBytes.Length; i++) // returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16); // return returnBytes; //} } ************************************************************************************************************************ using System; using System.IO; using System.Data; using System.Text; using System.Security; using System.Security.Cryptography;namespace My3des { /// /// des3 的摘要说明。 /// public class des3 { public des3() { // // TODO: 在此处添加构造函数逻辑 // } /// /// 十六进制字符串转换为数据流 /// /// /// private static byte[] HexStringToByteArray1(string strHexString) { int len = strHexString.Length ; if ( (len % 2) !=0) throw new Exception("HexString 字符出错!!"); int byteLen = len /2 ; byte[] bytes = new byte [byteLen]; for (int i=0;i /// 使用DES加密(Added by niehl 2005-4-6) /// /// 待加密的字符串 /// 密钥 /// 初始化向量 /// 加密后的字符串 public string DESEncrypt(string originalValue,string key,string IV) { SymmetricAlgorithm sa; ICryptoTransform ct; MemoryStream ms; CryptoStream cs; byte[] byt;// sa = new DESCryptoServiceProvider(); sa = new TripleDESCryptoServiceProvider();// sa.Key = Encoding.UTF8.GetBytes(key); // sa.IV = Encoding.UTF8.GetBytes(IV); //sa.IV = Encoding.ASCII.GetBytes(IV); sa.Key = HexStringToByteArray(key); sa.IV = HexStringToByteArray(IV); ct = sa.CreateEncryptor(); byt = Encoding.UTF8.GetBytes(originalValue); ms = new MemoryStream(); cs = new CryptoStream(ms, ct,CryptoStreamMode.Write); cs.Write(byt, 0, byt.Length); cs.FlushFinalBlock(); cs.Close(); return Convert.ToBase64String(ms.ToArray()); } /// /// 使用DES解密(Added by niehl 2005-4-6) /// /// 待解密的字符串 /// 密钥 /// m初始化向量(最大长度8) /// 解密后的字符串 public string DESDecrypt(string encryptedValue,string key,string IV) { SymmetricAlgorithm sa; ICryptoTransform ct; MemoryStream ms; CryptoStream cs; byte[] byt; //sa = new DESCryptoServiceProvider(); sa = new TripleDESCryptoServiceProvider();// sa.Key = Encoding.UTF8.GetBytes(key); // sa.IV = Encoding.UTF8.GetBytes(IV); sa.IV =HexStringToByteArray(IV); sa.Key = HexStringToByteArray(key); ct = sa.CreateDecryptor(); byt = Convert.FromBase64String(encryptedValue); ms = new MemoryStream(); cs = new CryptoStream(ms, ct, CryptoStreamMode.Write); cs.Write(byt, 0, byt.Length); cs.FlushFinalBlock(); cs.Close(); return Encoding.UTF8.GetString(ms.ToArray()); } /// /// 使用DES加密(Added by niehl 2005-4-6) /// /// 待加密的字符串 /// 密钥(最大长度8) /// 初始化向量(最大长度8) /// 加密后的字符串 public string DESEncrypt1(string originalValue,string key,string IV) { //将key和IV处理成8个字符 key += "12345678"; IV += "12345678"; key = key.Substring(0,8); IV = IV.Substring(0,8); SymmetricAlgorithm sa; ICryptoTransform ct; MemoryStream ms; CryptoStream cs; byte[] byt; sa = new DESCryptoServiceProvider(); sa.Key = Encoding.UTF8.GetBytes(key); sa.IV = Encoding.UTF8.GetBytes(IV); ct = sa.CreateEncryptor(); byt = Encoding.UTF8.GetBytes(originalValue); ms = new MemoryStream(); cs = new CryptoStream(ms, ct, CryptoStreamMode.Write); cs.Write(byt, 0, byt.Length); cs.FlushFinalBlock(); cs.Close(); return Convert.ToBase64String(ms.ToArray()); } public string DESEncrypt2(string originalValue,string key) { return DESEncrypt(originalValue,key,key); } /// /// 使用DES解密(Added by niehl 2005-4-6) /// /// 待解密的字符串 /// 密钥(最大长度8) /// m初始化向量(最大长度8) /// 解密后的字符串 public string DESDecrypt1(string encryptedValue,string key,string IV) { //将key和IV处理成8个字符 key += "12345678"; IV += "12345678"; key = key.Substring(0,8); IV = IV.Substring(0,8); SymmetricAlgorithm sa; ICryptoTransform ct; MemoryStream ms; CryptoStream cs; byte[] byt; sa = new DESCryptoServiceProvider(); sa.Key = Encoding.UTF8.GetBytes(key); sa.IV = Encoding.UTF8.GetBytes(IV); ct = sa.CreateDecryptor(); byt = Convert.FromBase64String(encryptedValue); ms = new MemoryStream(); cs = new CryptoStream(ms, ct, CryptoStreamMode.Write); cs.Write(byt, 0, byt.Length); cs.FlushFinalBlock(); cs.Close(); return Encoding.UTF8.GetString(ms.ToArray()); } public string DESDecrypt2(string encryptedValue,string key) { return DESDecrypt(encryptedValue,key,key); }// private string GetStringValue(byte[] Byte) // { // string tmpString = ""; // // if (this.isReturnNum == false) // { // ASCIIEncoding Asc = new ASCIIEncoding(); // tmpString = Asc.GetString(Byte); // } // else // { // int iCounter; // // for // (iCounter=0;iCounter