安全一

    技术2022-05-20  43

    1.a.对称加密:加密和解密时用的密码一样   b.非对称加密:加密和解密用的密码不一样。作用(比如):加密的是公钥(好多人持有),解密的私钥(一个人持有),主要用在互联网上cipher加密security安全

    2.一个类不能new时,用这个类的静态方法来获得它的实力对象3.对称加密的例子

    package cn.cipher;/** * cipher的应用,加密和解密 */import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.IOException;import java.io.ObjectOutputStream;import java.security.InvalidKeyException;import java.security.Key;import java.security.NoSuchAlgorithmException;

    import javax.crypto.BadPaddingException;import javax.crypto.Cipher;import javax.crypto.IllegalBlockSizeException;import javax.crypto.KeyGenerator;import javax.crypto.NoSuchPaddingException;

    public class cipher {

     public static void main(String[] args) {  //cipher();  Encrypt(); }

     public static void cipher() {  try {   // 加入一个加密器,加密方式为DES   Cipher cipher = Cipher.getInstance("DES");   // 生成一个key,它必须与加密器的加密方式一样   KeyGenerator keyGenerator = KeyGenerator.getInstance("DES");   // 得到这个key   Key key = keyGenerator.generateKey();   // 初始化这个加密器   cipher.init(Cipher.ENCRYPT_MODE, key);   // 下面这种方式是先给加密器中加入东西,然后再进行加密,分两步完成   /*    * cipher.update("传智博客".getBytes()); cipher.update("黑马".getBytes());    * byte[] result=cipher.doFinal();    */   // 把给加密器中加东西和加密一起进行操作   byte[] result = cipher.doFinal("传智博客".getBytes());

       // 解密   cipher.init(Cipher.DECRYPT_MODE, key);   System.out.println(new String(cipher.doFinal(result)));  } catch (NoSuchAlgorithmException e) {   e.printStackTrace();  } catch (NoSuchPaddingException e) {   e.printStackTrace();  } catch (InvalidKeyException e) {   e.printStackTrace();  } catch (IllegalBlockSizeException e) {   e.printStackTrace();  } catch (BadPaddingException e) {   e.printStackTrace();  } } public static void Encrypt(){  try {   Cipher cipher = Cipher.getInstance("DES");   KeyGenerator keyGenerator = KeyGenerator.getInstance("DES");   Key key = keyGenerator.generateKey();   //把key写进文件中   FileOutputStream fosKey=new FileOutputStream("key.txt");   ObjectOutputStream ois=new ObjectOutputStream(fosKey);   ois.writeObject(key);   ois.close();      cipher.init(Cipher.ENCRYPT_MODE, key);   byte[] result = cipher.doFinal("传智博客".getBytes());            //把加密后的二进制码写进文件中   FileOutputStream fosRs=new FileOutputStream("result.txt");            fosRs.write(result);            fosRs.close();   cipher.init(Cipher.DECRYPT_MODE, key);   String rs=new String(cipher.doFinal(result));   //把解码后的字符串写进文件中   File file=new File("decrypt.txt");            FileWriter fw=new FileWriter(file);            fw.write(rs);            fw.close();                       System.out.println(rs);  } catch (NoSuchAlgorithmException e) {   e.printStackTrace();  } catch (NoSuchPaddingException e) {   e.printStackTrace();  } catch (InvalidKeyException e) {   e.printStackTrace();  } catch (IllegalBlockSizeException e) {   e.printStackTrace();  } catch (BadPaddingException e) {   e.printStackTrace();  } catch (FileNotFoundException e) {   e.printStackTrace();  } catch (IOException e) {   e.printStackTrace();  } }

    }


    最新回复(0)