import javax.crypto.*
import java.io.*
public class tCipher
{
public static void main(String[] args)
{
test_Cipher()
}
public static void test_Cipher()
{
try
{
//待加密的数据
String strToEnc = "Hello Java!"
byte[] plainText = strToEnc.getBytes()
System.out.println( "\n开始生成DES密钥" )
KeyGenerator keyGen = KeyGenerator.getInstance("DES")//初始化为DES算法
keyGen.init(56) //设置其密钥长度,56bits
Key key = keyGen.generateKey()//生成密钥
System.out.println( "生成DES密钥成功。" )
//打印出DES密钥
byte[] keyencode=key.getEncoded()
PrintHex(keyencode,keyencode.length)
//生成Cipher对象,设置算法为ECB模式的DES算法,补位填充模式为PKCS5
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding")
//打印Cipher对象密码服务提供者信息
System.out.println( "\n" + cipher.getProvider().getInfo() )
// 加密
System.out.println( "\n开始加密" )
cipher.init(Cipher.ENCRYPT_MODE, key)//cipher对象初始化,设置为加密
byte[] cipherText = cipher.doFinal(plainText)//结束数据加密,输出密文
System.out.println( "加密完成,密文为: " )
PrintHex(cipherText,cipherText.length)//打印密文
// 使用相同的key解密数据
System.out.println( "\n开始解密" )
cipher.init(Cipher.DECRYPT_MODE, key)
byte[] newPlainText = cipher.doFinal(cipherText)
System.out.println( "解密完成 ,明文为:" )
//输出原文
System.out.println( new String(newPlainText, "UTF8") )
}
catch (Exception e)
{
System.out.println("加解密出错。")
}
}
public static void PrintHex(byte data[],int len)
{
int i
int tmp
String Tmp=""
for(i=0i<leni++)
{
if(i%16 == 0)
{
System.out.println("")
//0x0000
if(i<0x10)
Tmp = "0x000"
if((i<0x100) &&(i>=0x10))
Tmp = "0x00"
if((i>=0x100)&&(i<0x1000))
Tmp = "0x0"
if(i>=0x1000)
Tmp = "0x"
System.out.print(Tmp+Integer.toHexString(i)+"h: ")
}
tmp = data[i]
if(tmp <0)
tmp = 256 + tmp
if(tmp <0x10)
System.out.print("0"+Integer.toHexString(tmp) +" ")
else
System.out.print(Integer.toHexString(tmp) +" ")
}
System.out.println("")
}
}
这个一般没有统一的标准,教材有不同的版本一样。我做过这个,记得很清楚
加密方式1:Conye加密方法
加密方式2:WeiffbYfds方法
就是这样了,不懂追问哈,嘻嘻。