⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 一个java的des加密程序.txt

📁 一个JAVA的DES加密程序
💻 TXT
字号:
一个JAVA的DES加密程序 

前几天要做DES的加密程序,找到了一个举例程序,大家可以参考一下 
import java.security.*; 
import javax.crypto.*; 
import javax.crypto.spec.*; 

public class DES { 

public static int _DES = 1; 
public static int _DESede = 2; 
public static int _Blowfish = 3; 

private Cipher p_Cipher; 
private SecretKey p_Key; 
private String p_Algorithm; 

private void selectAlgorithm(int al) { 
switch (al) { 
default: 
case 1: 
this.p_Algorithm = "DES"; 
break; 
case 2: 
this.p_Algorithm = "DESede"; 
break; 
case 3: 
this.p_Algorithm = "Blowfish"; 
break; 
} 
} 

public DES(int algorithm) throws Exception { 
this.selectAlgorithm(algorithm); 
Security.addProvider(new com.sun.crypto.provider.SunJCE()); 
this.p_Cipher = Cipher.getInstance(this.p_Algorithm); 
} 

public byte[] getKey() { 
return this.checkKey().getEncoded(); 
} 

private SecretKey checkKey() { 
try { 
if (this.p_Key == null) { 
KeyGenerator keygen = KeyGenerator.getInstance(this.p_Algorithm); 
/* 
SecureRandom sr = new SecureRandom(key.getBytes()); 
keygen.init(168, sr);*/ 
this.p_Key = keygen.generateKey(); 
} 
} 
catch (Exception nsae) {} 
return this.p_Key; 
} 

public void setKey(byte[] enckey) { 
this.p_Key = new SecretKeySpec(enckey, this.p_Algorithm); 
} 

public byte[] encode(byte[] data) throws Exception { 
this.p_Cipher.init(Cipher.ENCRYPT_MODE, this.checkKey()); 
return this.p_Cipher.doFinal(data); 
} 

public byte[] decode(byte[] encdata, byte[] enckey) throws Exception { 
this.setKey(enckey); 
this.p_Cipher.init(Cipher.DECRYPT_MODE, this.p_Key); 
return this.p_Cipher.doFinal(encdata); 
} 

public String byte2hex(byte[] b) { 
String hs = ""; 
String stmp = ""; 
for (int i = 0; i < b.length; i++) { 
stmp = Integer.toHexString(b[i] & 0xFF); 
if (stmp.length() == 1) { 
hs += "0" + stmp; 
} 
else { 
hs += stmp; 
} 
} 
return hs.toUpperCase(); 
} 

public byte[] hex2byte(String hex) throws IllegalArgumentException { 
if (hex.length() % 2 != 0) { 
throw new IllegalArgumentException(); 
} 
char[] arr = hex.toCharArray(); 
byte[] b = new byte[hex.length() / 2]; 
for (int i = 0, j = 0, l = hex.length(); i < l; i++, j++) { 
String swap = "" + arr[i++] + arr[i]; 
int byteint = Integer.parseInt(swap, 16) & 0xFF; 
b[j] = new Integer(byteint).byteValue(); 
} 
return b; 
} 

public static void main(String[] args) throws Exception { 

String info = "要加密的字串"; 
System.out.println("region string:" + info); 
byte[] key; //密钥文件(byte) 
DES des = new DES(DES._DESede); // 声明DES 
key = des.getKey(); //获取随机生成的密钥 
System.out.println("encrypted key(byte):" + new String(key)); 
String hexkey = des.byte2hex(key); //生成十六进制密钥 
System.out.println("encrypted key(hex):" + hexkey); 
byte[] enc = des.encode(info.getBytes()); //生成加密文件(byte) 
System.out.println("encrypted string(byte):" + new String(enc)); 

String hexenc = des.byte2hex(enc); //生成十六进制加密文件 
System.out.println("encrypted string(hex):" + hexenc); 

byte[] dec = des.decode(enc, des.hex2byte(hexkey)); //解密文件,其中转换十六进制密钥为byte 
System.out.println("decrypted string:" + new String(dec)); //生成解密文件字符串, 与info相同 
} 

} 
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -