• <noscript id="ggggg"><dd id="ggggg"></dd></noscript>
    <small id="ggggg"></small> <sup id="ggggg"></sup>
    <noscript id="ggggg"><dd id="ggggg"></dd></noscript>
    <tfoot id="ggggg"></tfoot>
  • <nav id="ggggg"><cite id="ggggg"></cite></nav>
    <nav id="ggggg"></nav>
    成人黃色A片免费看三更小说,精品人妻av区波多野结衣,亚洲第一极品精品无码,欧美综合区自拍亚洲综合,久久99青青精品免费观看,中文字幕在线中字日韩 ,亚洲国产精品18久久久久久,黄色在线免费观看

    關于web項目前后端加密解密總結

    2021-5-27    前端達人

    首先項目是基于vue開發的項目

    1、DES加密

    前端

    需要引入js

    import cryptoJs from 'crypto-js'

    // DES加密

    export const encryptDes = (message, key) => {

    return cryptoJs.DES.encrypt(message, cryptoJs.enc.Utf8.parse(key), {

    mode: cryptoJs.mode.ECB,

    padding: cryptoJs.pad.Pkcs7

    }).toString()

    }

    后臺


    package com.huihui.until;

    import java.security.SecureRandom;
    import java.util.Scanner;
     
    import javax.crypto.Cipher;
    import javax.crypto.SecretKeyFactory;
    import javax.crypto.spec.DESKeySpec;
     
    import org.apache.commons.codec.binary.Base64;
     
     
    /**
     * <b>類說明:DES</b>
     * <p>
     * <b>詳細描述:</b>
     * @since 2019年3月31日 下午17:00:16
     */
    public class DESCryptUtil {
        
        private static final String DES = "DES";
        
        public static final String desKey = "ba54ee44";
     
        public static String doEncrypt(String plainMessage, String hexDesKey) throws Exception {
            byte desKey[] = hexDesKey.getBytes();
            byte desPlainMsg[] = plainMessage.getBytes();
            return Base64.encodeBase64URLSafeString(desCrypt(desKey, desPlainMsg, Cipher.ENCRYPT_MODE));
        }
        /**
         * 獲取解密后的字符串
         * @param hexEncryptMessage
         * @param hexDesKey
         * @return
         * @throws Exception
         */
        public static String doDecrypt(String hexEncryptMessage, String hexDesKey) throws Exception{
            if (hexEncryptMessage == null) {
                return null;
            }
            byte desKey[] = hexDesKey.getBytes();
            byte desPlainMsg[] = Base64.decodeBase64(hexEncryptMessage);
            return new String(desCrypt(desKey, desPlainMsg, Cipher.DECRYPT_MODE));
        }
        /**
         * 獲取解密后的數組
         * @param desPlainMsg
         * @param hexDesKey
         * @return
         * @throws Exception
         */
        public static byte[] doDecryptByte(byte[] desPlainMsg, String hexDesKey) throws Exception{
            if (desPlainMsg == null) {
                return null;
            }
            byte desKey[] = hexDesKey.getBytes();
            return desCrypt(desKey, desPlainMsg, Cipher.DECRYPT_MODE);
        }
        
        private static byte[] desCrypt(byte[] desKey, byte[] desPlainMsg, int CipherMode) throws Exception{
            try {
                SecureRandom sr = new SecureRandom();
                DESKeySpec dks = new DESKeySpec(desKey);
                SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
                javax.crypto.SecretKey key = keyFactory.generateSecret(dks);
                Cipher cipher = Cipher.getInstance(DES);
                cipher.init(CipherMode, key, sr);
                return cipher.doFinal(desPlainMsg);
            } catch (Exception e) {
                String message = "";
                if (CipherMode == Cipher.ENCRYPT_MODE) {
                    message = "DES\u52A0\u5BC6\u5931\u8D25";
                } else {
                    message = "DES\u89E3\u5BC6\u5931\u8D25";
                }
                throw new Exception(message, e);
            }
        }
        /**
         * 獲取8位的key
         * @param str
         * @return
         */
        public static String processString(String str) {
            if(str==null||"".equals(str)) {
                return "";
            }
            StringBuilder sb = new StringBuilder();
            for(int i=0;i<8;i++) {
                int index = i<<2&(32-i);
                sb.append(str.charAt(index));
            }
            
            return sb.toString();
        }
        public static void main(String[] args) throws Exception{
            DESCryptUtil se=new DESCryptUtil();
            for (int i = 0; i < 5; i++) {
                Scanner scanner=new Scanner(System.in);
                /*
                 * 加密
                 */
                System.out.println("請輸入要加密的內容:");
                String content = scanner.next();
                System.out.println("加密后的密文是:"+se.doEncrypt(content, desKey));
               
                /*
                 * 解密
                 */
                System.out.println("請輸入要解密的內容:");
                 content = scanner.next();
                System.out.println("解密后的明文是:"+se.doDecrypt(content, desKey));
            }
        }

    }
     

    2 RSA加密解密

    這是我是在在線生成公鑰私鑰的網站中生成了自己的公鑰私鑰用來測試

    前臺

    import JsEncrypt from 'jsencrypt'

    // RSA加密

    export function encryptRsa(publickey, message) {

    const rsa = new JsEncrypt()

    rsa.setPublicKey(publickey)

    return rsa.encrypt(message)

    }

    后臺

    package com.huihui.until;

    import org.apache.commons.codec.binary.Base64;

    import com.googosoft.config.GlobalConstants;

    import javax.crypto.Cipher;
    import java.security.KeyFactory;
    import java.security.KeyPair;
    import java.security.KeyPairGenerator;
    import java.security.NoSuchAlgorithmException;
    import java.security.SecureRandom;
    import java.security.interfaces.RSAPrivateKey;
    import java.security.interfaces.RSAPublicKey;
    import java.security.spec.PKCS8EncodedKeySpec;
    import java.security.spec.X509EncodedKeySpec;
    import java.util.HashMap;
    import java.util.Map;
      
      
    public class RSAUtil {  
          
        private static Map<Integer, String> keyMap = new HashMap<Integer, String>();  //用于封裝隨機產生的公鑰與私鑰
        public static void main(String[] args) throws Exception {
            //生成公鑰和私鑰
            genKeyPair();
            //加密字符串
            String message = "df723820";
        //GlobalConstants.PUBLICKEY 公鑰加密
            String messageEn = encrypt(message,GlobalConstants.PUBLICKEY);
            System.out.println(message + "\t加密后的字符串為:" + messageEn);

    //GlobalConstants.PRIVATEKEY 私鑰解密
            String messageDe = decrypt(messageEn,GlobalConstants.PRIVATEKEY);
            System.out.println("還原后的字符串為:" + messageDe);
        }

        /** 
         * 隨機生成密鑰對 
         * @throws NoSuchAlgorithmException 
         */  
        public static void genKeyPair() throws NoSuchAlgorithmException {  
            // KeyPairGenerator類用于生成公鑰和私鑰對,基于RSA算法生成對象  
            KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");  
            // 初始化密鑰對生成器,密鑰大小為96-1024位  
            keyPairGen.initialize(1024,new SecureRandom());  
            // 生成一個密鑰對,保存在keyPair中  
            KeyPair keyPair = keyPairGen.generateKeyPair();  
            RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();   // 得到私鑰  
            RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();  // 得到公鑰  
            String publicKeyString = new String(Base64.encodeBase64(publicKey.getEncoded()));  
            // 得到私鑰字符串  
            String privateKeyString = new String(Base64.encodeBase64((privateKey.getEncoded())));  
            // 將公鑰和私鑰保存到Map
            keyMap.put(0,publicKeyString);  //0表示公鑰
            keyMap.put(1,privateKeyString);  //1表示私鑰
        }  
        /** 
         * RSA公鑰加密 
         *  
         * @param str 
         *            加密字符串
         * @param publicKey 
         *            公鑰 
         * @return 密文 
         * @throws Exception 
         *             加密過程中的異常信息 
         */  
        public static String encrypt( String str, String publicKey ) throws Exception{
            //base64編碼的公鑰
            byte[] decoded = Base64.decodeBase64(publicKey);
            RSAPublicKey pubKey = (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(decoded));
            //RSA加密
            Cipher cipher = Cipher.getInstance("RSA");
            cipher.init(Cipher.ENCRYPT_MODE, pubKey);
            String outStr = Base64.encodeBase64String(cipher.doFinal(str.getBytes("UTF-8")));
            return outStr;
        }

        /** 
         * RSA私鑰解密
         *  
         * @param str 
         *            加密字符串
         * @param privateKey 
         *            私鑰 
         * @return 銘文
         * @throws Exception 
         *             解密過程中的異常信息 
         */  
        public static String decrypt(String str, String privateKey) throws Exception{
            //64位解碼加密后的字符串
            byte[] inputByte = Base64.decodeBase64(str.getBytes("UTF-8"));
            //base64編碼的私鑰
            byte[] decoded = Base64.decodeBase64(privateKey);  
            RSAPrivateKey priKey = (RSAPrivateKey) KeyFactory.getInstance("RSA").generatePrivate(new PKCS8EncodedKeySpec(decoded));  
            //RSA解密
            Cipher cipher = Cipher.getInstance("RSA");
            cipher.init(Cipher.DECRYPT_MODE, priKey);
            String outStr = new String(cipher.doFinal(inputByte));
            return outStr;
        }

    }  

    藍藍設計建立了UI設計分享群,每天會分享國內外的一些優秀設計,如果有興趣的話,可以進入一起成長學習,請掃碼藍小助,報下信息,藍小助會請您入群。歡迎您加入噢~~希望得到建議咨詢、商務合作,也請與我們聯系。

    截屏2021-05-13 上午11.41.03.png


    文章來源:csdn   

    分享此文一切功德,皆悉回向給文章原作者及眾讀者.
    免責聲明:藍藍設計尊重原作者,文章的版權歸原作者。如涉及版權問題,請及時與我們取得聯系,我們立即更正或刪除。

    藍藍設計m.lzhte.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 平面設計服務

    日歷

    鏈接

    個人資料

    藍藍設計的小編 http://m.lzhte.cn

    存檔

    主站蜘蛛池模板: 丁香婷婷六月| 久久久亚洲精品一区二区三区| 国产一区二区三区av免费观看| 国产综合精品色在线| 亚洲精品无播放器在线播放| 免费视频成人片在线观看| 亚洲AV无码专区亚洲AV紧身裤| 日韩精品久久久久久| 美女黄色18| 国产呻吟久久久久久久92| 成人无套少萝内射中出| 亚洲第一福利导航| 亚洲精华国产精华精华液网站| 国产精品亚洲一区二区三区在线观看 | 小黄片在线免费观看| 亚洲毛片基地九九久久| 成人无码特黄特黄AV片在线| 自偷自拍亚洲综合精品图片| 国产一区二区高清不卡| 国产大神精品在线播放| av在线播放观看国产| 国产乱人视频免费观看| 久久综合香蕉久久久久久久| 啪啪av一区二区三区| 日本亚洲色大成网站WWW| 久久久久综合网久久| 日韩东京热无码人妻| 四虎永久在线精品国产馆V视影院| 98精品国产高清在线xxxx| 精品无码AV一区二区三区| 国产免费网站看v片元遮挡| 日韩在线精品观看视频| 国产无人区码一区二区| 国产精品免费看久久久香蕉 | 精品第一页| 性色欲网站人妻丰满中文久久不卡| XXX国产| 国产精品久久久久久爽爽爽| 香蕉久久久久成人麻豆AV影院| 免费网站观看www在线观| 思思久久96热在精品国产10|