• <center id="sm46c"></center>
  • <dfn id="sm46c"></dfn>
  • <strike id="sm46c"></strike>
  • <cite id="sm46c"><source id="sm46c"></source></cite>
    • <strike id="sm46c"><source id="sm46c"></source></strike>
      <option id="sm46c"></option>
      国产精品天天看天天狠,女高中生强奷系列在线播放,久久无码免费的a毛片大全,国产日韩综合av在线,亚洲国产中文综合专区在,特殊重囗味sm在线观看无码,中文字幕一区二区三区四区在线,无码任你躁久久久久久老妇蜜桃

      關(guān)于web項(xiàng)目前后端加密解密總結(jié)

      2021-5-27    前端達(dá)人

      首先項(xiàng)目是基于vue開(kāi)發(fā)的項(xiàng)目

      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()

      }

      后臺(tái)


      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>類說(shuō)明:DES</b>
       * <p>
       * <b>詳細(xì)描述:</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));
          }
          /**
           * 獲取解密后的數(shù)組
           * @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("請(qǐng)輸入要加密的內(nèi)容:");
                  String content = scanner.next();
                  System.out.println("加密后的密文是:"+se.doEncrypt(content, desKey));
                 
                  /*
                   * 解密
                   */
                  System.out.println("請(qǐng)輸入要解密的內(nèi)容:");
                   content = scanner.next();
                  System.out.println("解密后的明文是:"+se.doDecrypt(content, desKey));
              }
          }

      }
       

      2 RSA加密解密

      這是我是在在線生成公鑰私鑰的網(wǎng)站中生成了自己的公鑰私鑰用來(lái)測(cè)試

      前臺(tái)

      import JsEncrypt from 'jsencrypt'

      // RSA加密

      export function encryptRsa(publickey, message) {

      const rsa = new JsEncrypt()

      rsa.setPublicKey(publickey)

      return rsa.encrypt(message)

      }

      后臺(tái)

      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>();  //用于封裝隨機(jī)產(chǎn)生的公鑰與私鑰
          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);
          }

          /** 
           * 隨機(jī)生成密鑰對(duì) 
           * @throws NoSuchAlgorithmException 
           */  
          public static void genKeyPair() throws NoSuchAlgorithmException {  
              // KeyPairGenerator類用于生成公鑰和私鑰對(duì),基于RSA算法生成對(duì)象  
              KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");  
              // 初始化密鑰對(duì)生成器,密鑰大小為96-1024位  
              keyPairGen.initialize(1024,new SecureRandom());  
              // 生成一個(gè)密鑰對(duì),保存在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 
           *             加密過(guò)程中的異常信息 
           */  
          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 
           *             解密過(guò)程中的異常信息 
           */  
          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;
          }

      }  

      藍(lán)藍(lán)設(shè)計(jì)建立了UI設(shè)計(jì)分享群,每天會(huì)分享國(guó)內(nèi)外的一些優(yōu)秀設(shè)計(jì),如果有興趣的話,可以進(jìn)入一起成長(zhǎng)學(xué)習(xí),請(qǐng)掃碼藍(lán)小助,報(bào)下信息,藍(lán)小助會(huì)請(qǐng)您入群。歡迎您加入噢~~希望得到建議咨詢、商務(wù)合作,也請(qǐng)與我們聯(lián)系。

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


      文章來(lái)源:csdn   

      分享此文一切功德,皆悉回向給文章原作者及眾讀者.
      免責(zé)聲明:藍(lán)藍(lán)設(shè)計(jì)尊重原作者,文章的版權(quán)歸原作者。如涉及版權(quán)問(wèn)題,請(qǐng)及時(shí)與我們?nèi)〉寐?lián)系,我們立即更正或刪除。

      藍(lán)藍(lán)設(shè)計(jì)www.li-bodun.cn )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 平面設(shè)計(jì)服務(wù)

      日歷

      鏈接

      個(gè)人資料

      存檔

      主站蜘蛛池模板: 欧美成人中文字幕| 国产精品一区二区蜜臀av| 亚洲国产婷婷香蕉久久久久久| 成年午夜精品久久精品| 国产清纯在线一区二区| 黄色舔女人逼一区二区三区| 日韩免费特黄一二三区| 张家港市| 2019国产精品青青草原| 漂亮人妻被中出中文字幕| 亚洲三级视频在线观看| 免费国产线观看免费观看| 亚洲成αv人片在线观看| 亚洲国产精品av在线播放| 国产综合精品一区二区三区| 欧美日韩精品综合在线一区| 亚洲av综合色区无码专区| 这里只有精品免费视频| 拍国产乱人伦偷精品视频| 狠狠色噜噜狠狠狠狠奇米777| 国产在线无码免费视频2021| 加勒比黑人在线| 99久久免费国产精精品| 日本一区二区在免费观看喷水| 午夜福利精品一区二区三区| 成人va亚洲va欧美天堂| 国产精品9999久久久久仙踪林 | av无码一区二区二三区1区6区| 国产成人精品a视频| 久久天天躁狠狠躁夜夜躁| 国产精品深夜福利免费观看| 亚洲美女厕所偷拍美女尿尿| 国产专区国产av| 久久不见久久见免费影院| 国产又色又爽无遮挡免费软件| 亚洲 无码 制服 丝袜 自拍| 泗阳县| 国产成人亚洲综合网色欲网久下载| 日韩精品久久久肉伦网站| 新昌县| 激情無極限的亚洲一区免费|