자바 의 AES 와 DES 암호 화

5274 단어 Java기초 지식
Java 암호 화:
기본 단 방향 암호 화 알고리즘:
  • BASE 64:인 코딩 형식 에 엄 격 히 속 합 니 다
  • MD5:메시지 다이제스트 알고리즘 5,정보 요약 알고리즘
  • SHA:보안 해시 알고리즘,보안 해시 알고리즘
  • HMAC:해시 메시지 감별 코드 가 복잡 한 대칭 암호 화,비대 칭 암호 화 알고리즘:
  • DES:데이터 암호 화 표준,데이터 암호 화 알고리즘
  • PBE:암호 기반 암호 화,암호 기반 인증
  • DSA:디지털 서명 알고리즘,디지털 서명
  • ...1.단 방향 암호 화 알고리즘:
  • MD5:암호 화 와 복호화 기술 에 광범 위 하 게 사용 되 고 파일 검사 에 자주 사용 된다.파일 이 아무리 크 더 라 도 MD5 를 거 친 후에 유일한 MD5 값 을 생 성 할 수 있 습 니 다.
  • ==SHA==:디지털 서명 등 암호학 응용 에서 중요 한 도구 입 니 다.

  • 2.BASE 64 암호 화:
  • ==BASE 64==:BASE 64(양 방향)콘 텐 츠 전송 인 코딩 은 임 의 서열 의 8 비트 바이트 를 사람들 이 직접 식별 하기 어 려 운 형식 으로 묘사 하도록 설계 되 었 다.흔히 볼 수 있 는 것 은 메 일,http 암호 화 는 주로 BASE 64 Encoder,BASE 64 Decoder 두 가지 종류 입 니 다.base 암호 화 후 발생 하 는 바이트 의 자릿수 는 8 의 배수 이 며,만약 자릿수 가 부족 하면=기호 로 채 웁 니 다.

  • 3.대칭 암호 화:
  • DES:DES 알고리즘 의 세 가지 매개 변 수 는 key,Data,Mode 입 니 다.그 중에서 key 는 8 개의 바이트 가 모두 64 비트 이 고 DES 알고리즘 의 작업 키 입 니 다.Data 도 8 개의 바이트 64 비트 로 암호 화 되 고 복호화 될 데이터 입 니 다.Mode 는 DES 의 작업 방식,즉 복호화 또는 암호 화 입 니 다.DES 64 64 , 64 。
  • AES:AES 는 128,192,256 비트 키 를 사용 할 수 있 으 며 128 비트 로 그룹 암호 화 및 복호화 데이터 코드 밤 은 다음 과 같다.
    /**
    * 2019-05-31 by wx AES    demo
    * */
    public class AESTest {
       /*
        *   
        * 1.       
        * 2.  ecnodeRules          
        * 3.    
        * 4.         
        * 5.    
        * 6.     
        */
       public static String encrypt(String pwd ,String content){
    
           try {
               //  AES key   
               KeyGenerator kgen = KeyGenerator.getInstance("AES");
               //             128  key   
               //     ,SecureRandom          ,pwd.getBytes()   ,      ,     ,       pwd  
               kgen.init(128,new SecureRandom(pwd.getBytes()));
              //
               SecretKey secretKey = kgen.generateKey();//          
               byte [] enCodeFormat = secretKey.getEncoded();//          ,          ,   null
               //   AES    
               SecretKeySpec key = new SecretKeySpec(enCodeFormat,"AES");
              //     
               Cipher cipher = Cipher.getInstance("AES");
               //            
               cipher.init(Cipher.ENCRYPT_MODE,key);
               //           (      utf-8)                        
               byte[] byteContent = content.getBytes("utf-8");
    
               //  
               byte[] result =cipher.doFinal(byteContent);
              //            
               String s = new String (new BASE64Encoder().encode(result));
    
               return s;
           }catch (NoSuchPaddingException e) {
               e.printStackTrace();
           }
           catch (NoSuchAlgorithmException e) {
               e.printStackTrace();
           }catch (UnsupportedEncodingException e) {
               e.printStackTrace();
           }catch (InvalidKeyException e) {
               e.printStackTrace();
           }catch (IllegalBlockSizeException e) {
               e.printStackTrace();
           } catch (BadPaddingException e) {
               e.printStackTrace();
           }
           return null;
       }
       /*
        *   
        *     :
        * 1.   1-4 
        * 2.           byte[]  
        * 3.       
        */
       public static String deencrty(String pwd,String content){
           try {
               //1.       ,  AES  ,      
               KeyGenerator kgen = KeyGenerator.getInstance("AES");
               //2.  pwd        
               //    128     ,         
               kgen.init(128,new SecureRandom(pwd.getBytes()));
               //3.        
               SecretKey ori_key =kgen.generateKey();
               //4.             
               byte[] raw =ori_key.getEncoded();
               //5.        AES  
               SecretKey key =new SecretKeySpec(raw ,"AES");
               //6.      AES     
               Cipher cipher = Cipher.getInstance("AES");
               //7.       ,          ,       key
               cipher.init(Cipher.DECRYPT_MODE,key);
               //8.                 
               byte[] byte_content = new BASE64Decoder().decodeBuffer(content);
               //  
               byte[] result = cipher.doFinal(byte_content);
               String re = new String (result,"utf-8");
               return re;
    
           } catch (NoSuchAlgorithmException e) {
               e.printStackTrace();
           }catch (NoSuchPaddingException e) {
               e.printStackTrace();
           }catch (InvalidKeyException e) {
               e.printStackTrace();
           }catch (IOException e) {
               e.printStackTrace();
           }catch (IllegalBlockSizeException e) {
               e.printStackTrace();
           } catch (BadPaddingException e) {
               e.printStackTrace();
           }
           return null;
       }
       public static void main (String[] args){
           Scanner scanner = new Scanner(System.in);
           //  
           System.out.println("  AES     ,        :");
           String key = scanner.next();
           System.out.println("         :");
           String content = scanner.next();
           String re = encrypt(key,content);
           System.out.println("     key      :"+ re);
    
           //  
           System.out.println("  AES    ,        :         ");
           key = scanner.next();
           System.out.println("         :");
           content = scanner.next();
          String le=  deencrty(key,content);
           System.out.println("       key       :"+le);
       }
    
  • 좋은 웹페이지 즐겨찾기