如何用IBM的jdk 写DES 加密程序

如题所述

第1个回答  推荐于2016-08-19

public class DES{ 

  public static Key key; 
//根据参数生成KEY 
public static void getKey(String strKey){ 
try{ 
KeyGenerator _generator = KeyGenerator.getInstance("DES"); 
_generator.init(new SecureRandom(strKey.getBytes())); 
key = _generator.generateKey(); 
_generator=null; 
}catch(Exception e){ 
e.printStackTrace(); 



//考试大提示加密String明文输入,String密文输出 
public static String getEncString(String strMing){ 
byte[] byteMi = null; 
byte[] byteMing = null; 
String strMi =""; 
BASE64Encoder base64en = new BASE64Encoder(); 
try{ 
byteMing = strMing.getBytes("UTF-8"); 
byteMi = getEncCode(byteMing); 
strMi = base64en.encode(byteMi); 
}catch(Exception e){ 
e.printStackTrace(); 
}finally{ 
base64en = null; 
byteMing = null; 
byteMi = null; 

return strMi; 


//解密 以String密文输入,String明文输出 
public static String getDesString(String strMi) throws Exception{ 
BASE64Decoder base64De = new BASE64Decoder(); 
byte[] byteMing = null; 
byte[] byteMi = null; 
String strMing = ""; 
try{ 
byteMi = base64De.decodeBuffer(strMi); 
byteMing = getDesCode(byteMi); 
strMing = new String(byteMing,"UTF-8"); 
}catch(Exception e){ 
throw e; 
}finally{ 
base64De = null; 
byteMing = null; 
byteMi = null; 

return strMing; 


//加密以byte[]明文输入,byte[]密文输出 
private static byte[] getEncCode(byte[] byteS){ 
byte[] byteFina = null; 
Cipher cipher; 
try{ 
cipher = Cipher.getInstance("DES"); 
cipher.init(Cipher.ENCRYPT_MODE,key); 
byteFina = cipher.doFinal(byteS); 
}catch(Exception e){ 
e.printStackTrace(); 
}finally{ 
cipher = null; 

return byteFina; 


//考试大解密以byte[]密文输入,以byte[]明文输出 
//@param byteD 
//@return 

private static byte[] getDesCode(byte[] byteD) throws Exception{ 
Cipher cipher; 
byte[] byteFina=null; 
try{ 
cipher = Cipher.getInstance("DES"); 
cipher.init(Cipher.DECRYPT_MODE,key); 
byteFina = cipher.doFinal(byteD); 
}catch(Exception e){ 
throw e; 
}finally{ 
cipher=null; 

return byteFina; 


//加密字符串,返回String的密文 
public static String getCryptograph(String str){ 
getKey("MYKEY11ERDCDVEIOKPUE");//生成密匙 
String strEnc = getEncString(str); 
return strEnc; 


//把String 类型的密文解密 
public static String getDisplay(String cryptograph) throws Exception{ 
String strEnc=null; 
try { 
getKey("MYKEY11ERDCDVEIOKPUE"); 
strEnc = getDesString(cryptograph); 
} catch (Exception e) { 
throw e; 

return strEnc; 


public static void main(String[] args){ 
try { 
while(true){ 
Scanner san=new Scanner(System.in); 
String str=san.nextLine(); 
getKey("MYKEY11ERDCDVEIOKPUE");//生成密匙 
String strEnc = getEncString(str); 
System.out.println(strEnc); 

} catch (Exception e) { 
e.printStackTrace(); 



本回答被提问者和网友采纳