• Java DES 测试


    package com.des.test;
    
    import java.io.UnsupportedEncodingException;
    import java.security.InvalidKeyException;
    import java.security.NoSuchAlgorithmException;
    import java.security.spec.InvalidKeySpecException;
    import java.security.spec.KeySpec;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.crypto.BadPaddingException;
    import javax.crypto.Cipher;
    import javax.crypto.IllegalBlockSizeException;
    import javax.crypto.NoSuchPaddingException;
    import javax.crypto.SecretKey;
    import javax.crypto.SecretKeyFactory;
    import javax.crypto.spec.DESedeKeySpec;
    import org.apache.commons.codec.binary.Base64;
    
    /**
     *
     * @author y
     */
    public class DESUtil {
        private static final String CHARSET_TYPE    = "UTF-8";
        private static final String ENCRYPT_KEY     = "Z7CKBCcc5KwlZqjbunr1yhZG5nM";
        private static final String ENCRYPT_SCHEME  = "DESede";
        
        byte[] keyAsBytes;
        
        private final KeySpec myKeySpec;
        private final SecretKeyFactory mySecretKeyFactory;
        private final Cipher cipher;
        private final SecretKey key;
        
        public DESUtil() throws InvalidKeyException, UnsupportedEncodingException, 
                NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeySpecException{
            
            keyAsBytes = ENCRYPT_KEY.getBytes(CHARSET_TYPE);
            myKeySpec = new DESedeKeySpec(keyAsBytes);
            mySecretKeyFactory = SecretKeyFactory.getInstance(ENCRYPT_SCHEME);
            cipher = Cipher.getInstance(ENCRYPT_SCHEME);
            key = mySecretKeyFactory.generateSecret(myKeySpec);
        }
        
        public String encrypt(String unencryptedString) {
            String encryptedString = null;
            try {
                cipher.init(Cipher.ENCRYPT_MODE, key);
                
                byte[] plainText = unencryptedString.getBytes(CHARSET_TYPE);
                byte[] encryptedText = cipher.doFinal(plainText);
                
                Base64 base64 = new Base64();
                
                encryptedString = base64.encodeAsString(encryptedText);
            } catch (InvalidKeyException ex) {
                Logger.getLogger(DESUtil.class.getName()).log(Level.SEVERE, null, ex);
            } catch (UnsupportedEncodingException ex) {
                Logger.getLogger(DESUtil.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalBlockSizeException ex) {
                Logger.getLogger(DESUtil.class.getName()).log(Level.SEVERE, null, ex);
            } catch (BadPaddingException ex) {
                Logger.getLogger(DESUtil.class.getName()).log(Level.SEVERE, null, ex);
            }
            
            return encryptedString;
        }
        
        public String decrypt(String encryptedString) {
            String decryptedText=null;
            try {
                cipher.init(Cipher.DECRYPT_MODE, key);
                
                Base64 base64 = new Base64();
                
                byte[] encryptedText = base64.decode(encryptedString);
                byte[] plainText = cipher.doFinal(encryptedText);
                
                decryptedText = new String(plainText,CHARSET_TYPE);
            } catch (InvalidKeyException ex) {
                Logger.getLogger(DESUtil.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalBlockSizeException ex) {
                Logger.getLogger(DESUtil.class.getName()).log(Level.SEVERE, null, ex);
            } catch (BadPaddingException ex) {
                Logger.getLogger(DESUtil.class.getName()).log(Level.SEVERE, null, ex);
            } catch (UnsupportedEncodingException ex) {
                Logger.getLogger(DESUtil.class.getName()).log(Level.SEVERE, null, ex);
            }
            
            return decryptedText;
        }
        
        public static void main(String[] args) throws Exception {
            String str = "hello,这是Java DES加密测试数据";
            
            DESUtil desUtil = new DESUtil();
            
            System.out.println("==desc before:"+str);
            String encryptStr = desUtil.encrypt(str);
            System.out.println("==desc after:"+encryptStr);
            System.out.println("==descrypt:"+desUtil.decrypt(encryptStr));
        }
    }
  • 相关阅读:
    软件质量见解
    Vim 简明教程【转载】
    Actor Mailbox
    Unity对齐工具
    静态AOP Fody PropertyChanged
    棋牌分布式架构
    死锁
    curl 获取自定义数据
    WPF RichTextBox添加一条有颜色的记录
    arp -s 添加失败:拒绝访问
  • 原文地址:https://www.cnblogs.com/yshyee/p/4448178.html
Copyright © 2020-2023  润新知