对称加密加密和解密方都必须知道统一的算法和密匙,必须同享密匙。
对称加密步骤:
1.生成共享密匙:关键类 KeyGenerator.java ,SecretKey.java
javax.crypto.KeyGenerator kg =javax.crypto.KeyGenerator.getInstance("DEsede"); //1.得到DESede算法的密匙生成器
kg.init(168) ; //2.制定密匙长度为168位
SecretKey key = kg.generateKey();// 3.生成密匙对象
//4.将密匙以字节码的形式保存到文件中
byte[] data = key.getEncoded();
java.io.FileOutPutStream fous =new java.io.FileOutputStream("DESedeKey.netjava");
fous.write(data);
fous.flush();
fous.close();//
2.对服务中的输出流对象进行加密,SecretKeySpec.java , Cipher.java, CipherOutputStream.java
FileInputStream fins = new FileInputStream("DESedeKey.netjava");//1.从密匙文件中独舞密匙数据
byte[] keyData= new byte[fins.available()];
fins.read(keyData);
fins.close();
SecretKeySpec sk=new SecretKeySpec(keyData,"DESede");
Cipher cp=Cipher.getInstance("DESede");
cp.init(Cipher.ENCRYPT_MODE,sk);//2.初始化为加密模式
CipherOutputStream count=new CipherOutputStream(ous,cp);//3.对原始输出流进行加密
3.对客户端的输入流对象进行解密,SecretKeySpec.java , Cipher.java, CipherInputStream.java
FileInputStream fins = new FileInputStream("DESedeKey.netjava");//1.从密匙文件中独舞密匙数据
byte[] keyData= new byte[fins.available()];
fins.read(keyData);
fins.close();
SecretKeySpec sk=new SecretKeySpec(keyData,"DESede");
Cipher cp=Cipher.getInstance("DESede");
cp.init(Cipher.DECRYPT_MODE,sk);//2.初始化为加密模式
CipherInputStreamcount=new CipherInputStream(ous,cp);//3.对原始输出流进行加密 说明:以上来至《微博是这样炼成的》
|
|