最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java明文密碼三重加密方法

 更新時間:2016年07月11日 09:13:50   作者:A_book  
這篇文章主要介紹了java明文密碼加密,對一個明文密碼進行了三重加密:第一層柵欄一次,第二層在柵欄一次,第三層在一次摩斯加密,感興趣的小伙伴們可以參考一下

本文介紹了兩種密碼加密的方法,這兩種很常見可以再百度隨意找到。

1.摩斯密碼;

說道密碼加密不得不提的方法。很是經(jīng)典。

首先說一下他的對照表,直接上圖。

核心思想就是替換明文密碼,將字符對應(yīng)的替換成-與.兩種符號的組合;

2、柵欄密碼;

所謂柵欄密碼,就是把要加密的明文分成N個一組,然后把每組的第1個字連起來,形成一段無規(guī)律的話。 不過柵欄密碼本身有一個潛規(guī)則,就是組成柵欄的字母一般不會太多。(一般不超過30個,也就是一、兩句話)

這個沒有什么好說的了,舉個栗子:對明文ASDFGHJKL進行加密;分成兩組:基數(shù)位置一組,偶數(shù)位置一組。然后兩組合并成ADGJLSFHK;

我對這兩種加密方式進行了結(jié)合,對一個明文密碼進行了三重加密:第一層柵欄一次,第二層再柵欄一次,第三層再一次摩斯加密;
先是柵欄部分:

/*柵欄解密解密類*/
public class Fence {
  /*加密部分*/
  public String encryption (String password){
    String p = new String();
    String p1 = new String();
    String p2 = new String();
    for  (int i = 0; i < password.length(); i++){
      if(i%2 == 0)
        p1 += p.valueOf(password.charAt(i));
      else
        p2 += p.valueOf(password.charAt(i)); 
    }
    return p1+p2;
  }
  /*解密部分*/
  public String decode(String FencePassword){
    String password = new String();
    String p = new String();
    String p1 = FencePassword.substring(0, FencePassword.length()/2);
    String p2 = FencePassword.substring(FencePassword.length()/2);
    int i;
    for  (i = 0; i < p1.length(); i++){
      password += p.valueOf(p1.charAt(i)) + p.valueOf(p2.charAt(i));
    }
    if(FencePassword.length()%2 != 0)
      password += p.valueOf(p2.charAt(i));
    return password;
  }
}

然后是摩斯部分
這一部分比較繁瑣,在于摩斯密碼與符號之間的匹配問題上,想著用一個數(shù)組去存儲,然后循環(huán)進行匹配;但是我是一個不怕麻煩只求簡單的一個人,就進行了一個個的比較;
 然后在摩斯加密解密的時候進行了兩次的柵欄加密解密;這樣用到加密解密的時候只要調(diào)用摩斯類的加密解密函數(shù)即可。

/*摩斯加密解密類*/
import java.util.StringTokenizer;

public class Morse {
  /*摩斯密碼與字符之間的匹配常量*/
  final String A = ".-";
  final String B = "---.";
  final String C = "-.-.";
  final String D = "-..";
  final String E = ".";
  final String F = "..-.";
  final String G = "--.";
  final String H = "....";
  final String I = "..";
  final String J = ".---";
  final String K = "-.-";
  final String L = ".-..";
  final String M = "--";
  final String N = "-.";
  final String O = "---";
  final String P = ".--.";
  final String Q = "--.-";
  final String R = ".-.";
  final String S = "...";
  final String T = "-";
  final String U = "..-";
  final String V = "...-";
  final String W = ".--";
  final String X = "-..-";
  final String Y = "-.--";
  final String Z = "--..";
  final String $0 = "-----";
  final String $1 = ".----";
  final String $2 = "..---";
  final String $3 = "...--";
  final String $4 = "....-";
  final String $5 = ".....";
  final String $6 = "-....";
  final String $7 = "--...";
  final String $8 = "---..";
  final String $9 = "----.";
  final String period = ".-.-.-"; // .
  final String colon = "---..."; // :
  final String comma = "--..--"; // ,
  final String semicolon = "-.-.-."; // ;
  final String question = "..--.."; // ?
  final String equal = "-...-"; // =
  final String doubleQuotation = ".-..-.";// "
  final String singleQuotation = ".----.";// '
  final String slash = "-..-."; ///
  final String exclamation = "-.-.--"; // !
  final String hyphen = "-....-"; // -
  final String underscore = "..--.-"; // _
  final String lroundBrackets = "-.--."; // (
  final String rroundBrackets = "-.--.-"; // )
  final String $ = "...-..-"; // $
  final String ampersand = ".-..."; // &
  final String at = ".--.-."; // @
  final String plus = ".-.-."; // +
  /*加密對應(yīng)的匹配*/
  public String matching(String str) {
    switch (str) {
    case "A":
      return A;
    case "B":
      return B;
    case "C":
      return C;
    case "D":
      return D;
    case "E":
      return E;
    case "F":
      return F;
    case "G":
      return G;
    case "H":
      return H;
    case "I":
      return I;
    case "J":
      return J;
    case "K":
      return K;
    case "L":
      return L;
    case "M":
      return M;
    case "N":
      return N;
    case "O":
      return O;
    case "P":
      return P;
    case "Q":
      return Q;
    case "R":
      return R;
    case "S":
      return S;
    case "T":
      return T;
    case "U":
      return U;
    case "V":
      return V;
    case "W":
      return W;
    case "X":
      return X;
    case "Y":
      return Y;
    case "Z":
      return Z;
    case "0":
      return $0;
    case "1":
      return $1;
    case "2":
      return $2;
    case "3":
      return $3;
    case "4":
      return $4;
    case "5":
      return $5;
    case "6":
      return $6;
    case "7":
      return $7;
    case "8":
      return $8;
    case "9":
      return $9;
    case ".":
      return period;
    case ":":
      return colon;
    case ",":
      return comma;
    case ";":
      return semicolon;
    case "?":
      return question;
    case "=":
      return equal;
    case "\"":
      return doubleQuotation;
    case "\'":
      return singleQuotation;
    case "/":
      return slash;
    case "!":
      return exclamation;
    case "-":
      return hyphen;
    case "_":
      return underscore;
    case "(":
      return lroundBrackets;
    case ")":
      return rroundBrackets;
    case "$":
      return $;
    case "&":
      return ampersand;
    case "@":
      return at;
    case "+":
      return plus;
    }
    return " ";
  }
  /*摩斯加密*/
  public String encryption(String password) {
    Fence f = new Fence();
    password = f.encryption(password);
    password = f.encryption(password);
    String MorsePasswork = new String();
    String mp = new String();
    for (int i = 0; i < password.length(); i++) {
      mp = mp.valueOf(password.charAt(i));
      MorsePasswork += matching(mp) + "/";
    }
    return MorsePasswork;
  }
  /*解密對應(yīng)換的匹配*/
  public String matching2(String str) {
    if (str.equals(A))
      return "A";
    else if (str.equals(B))
      return "B";
    else if (str.equals(C))
      return "C";
    else if (str.equals(D))
      return "D";
    else if (str.equals(E))
      return "E";
    else if (str.equals(F))
      return "F";
    else if (str.equals(G))
      return "G";
    else if (str.equals(H))
      return "H";
    else if (str.equals(I))
      return "I";
    else if (str.equals(J))
      return "J";
    else if (str.equals(K))
      return "K";
    else if (str.equals(L))
      return "L";
    else if (str.equals(M))
      return "M";
    else if (str.equals(N))
      return "N";
    else if (str.equals(O))
      return "O";
    else if (str.equals(P))
      return "P";
    else if (str.equals(Q))
      return "Q";
    else if (str.equals(R))
      return "R";
    else if (str.equals(S))
      return "S";
    else if (str.equals(T))
      return "T";
    else if (str.equals(U))
      return "U";
    else if (str.equals(V))
      return "V";
    else if (str.equals(W))
      return "W";
    else if (str.equals(X))
      return "X";
    else if (str.equals(Y))
      return "Y";
    else if (str.equals(Z))
      return "Z";
    else if (str.equals($0))
      return "0";
    else if (str.equals($1))
      return "1";
    else if (str.equals($2))
      return "2";
    else if (str.equals($3))
      return "3";
    else if (str.equals($4))
      return "4";
    else if (str.equals($5))
      return "5";
    else if (str.equals($6))
      return "6";
    else if (str.equals($7))
      return "7";
    else if (str.equals($8))
      return "8";
    else if (str.equals($9))
      return "9";
    else if (str.equals(period))
      return ".";
    else if (str.equals(colon))
      return ":";
    else if (str.equals(comma))
      return ",";
    else if (str.equals(semicolon))
      return ";";
    else if (str.equals(question))
      return "?";
    else if (str.equals(equal))
      return "=";
    else if (str.equals(doubleQuotation))
      return "\"";
    else if (str.equals(singleQuotation))
      return "\'";
    else if (str.equals(slash))
      return "/";
    else if (str.equals(exclamation))
      return "!";
    else if (str.equals(hyphen))
      return "-";
    else if (str.equals(underscore))
      return "_";
    else if (str.equals(lroundBrackets))
      return "(";
    else if (str.equals(rroundBrackets))
      return ")";
    else if (str.equals($))
      return "$";
    else if (str.equals(ampersand))
      return "&";
    else if (str.equals(at))
      return "@";
    else if (str.equals(plus))
      return "+";
    else
      return " ";
  }
  /*摩斯解密*/
  public String decode(String MorsePassword) {
    String password = new String();
    Fence f = new Fence();
    StringTokenizer p = new StringTokenizer(MorsePassword, "/");
    while (p.hasMoreElements()) {
      password += matching2(p.nextToken());
    }
    password = f.decode(password);
    password = f.decode(password);
    return password;
  }
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringMVC Validator驗證示例

    SpringMVC Validator驗證示例

    SpringMVC服務(wù)器驗證一種是有兩種方式,一種是基于Validator接口,一種是使用Annotaion JSR-303標準的驗證,本篇文章主要介紹,有興趣的可以了解一下。
    2017-01-01
  • java模擬hibernate一級緩存示例分享

    java模擬hibernate一級緩存示例分享

    這篇文章主要介紹了java模擬hibernate一級緩存示例,需要的朋友可以參考下
    2014-03-03
  • java讀取csv文件和寫csv示例分享

    java讀取csv文件和寫csv示例分享

    這篇文章主要介紹了JAVA對CSV格式文本數(shù)據(jù)處理后再保存成新CSV格式文本的模板,可以學習到j(luò)ava讀取csv文件和寫csv的方法,需要的朋友可以參考下
    2014-03-03
  • Java查詢MongoDB數(shù)據(jù)庫案例大全

    Java查詢MongoDB數(shù)據(jù)庫案例大全

    這篇文章主要給大家介紹了關(guān)于Java查詢MongoDB數(shù)據(jù)庫的一些相關(guān)案例,Java可以使用MongoDB的官方Java驅(qū)動程序來連接和操作MongoDB數(shù)據(jù)庫,需要的朋友可以參考下
    2023-07-07
  • Spring打包jar包時jsp頁面無法訪問問題解決

    Spring打包jar包時jsp頁面無法訪問問題解決

    這篇文章主要介紹了Spring打包jar包時jsp頁面無法訪問問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • Java并發(fā)編程之同步容器

    Java并發(fā)編程之同步容器

    這篇文章主要介紹了Java并發(fā)編程之同步容器,文中有非常詳細的代碼示例,對正在學習java的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-05-05
  • java設(shè)計模式-單例模式實現(xiàn)方法詳解

    java設(shè)計模式-單例模式實現(xiàn)方法詳解

    單例模式,屬于創(chuàng)建類型的一種常用的軟件設(shè)計模式。通過單例模式的方法創(chuàng)建的類在當前進程中只有一個實例(根據(jù)需要,也有可能一個線程中屬于單例
    2021-07-07
  • java的Guava工具包介紹

    java的Guava工具包介紹

    Java開發(fā)的同學應(yīng)該都使用或者聽說過Google提供的Guava工具包。日常使用最多的肯定是集合相關(guān)的工具類,還有Guava cache,除了這些之外Guava還提供了很多有用的功能,鑒于日常想用的時候找不到,這里就梳理一下Guava中那些好用的工具類,想優(yōu)化代碼的時候不妨過來看看
    2021-04-04
  • Spring Boot 2.0.0 終于正式發(fā)布-重大修訂版本

    Spring Boot 2.0.0 終于正式發(fā)布-重大修訂版本

    北京時間 2018 年 3 月 1 日早上,如約發(fā)布的 Spring Boot 2.0 在同步至 Maven 倉庫時出現(xiàn)問題,導致在 GitHub 上發(fā)布的 v2.0.0.RELEASE 被撤回
    2018-03-03
  • AndroidQ沙盒機制之分區(qū)存儲適配

    AndroidQ沙盒機制之分區(qū)存儲適配

    這篇文章主要介紹了AndroidQ沙盒機制之分區(qū)存儲適配,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06

最新評論

临汾市| 特克斯县| 阳信县| 赤壁市| 寻乌县| 广水市| 昭觉县| 山东| 姜堰市| 揭东县| 营山县| 巴马| 阜新市| 宜昌市| 丰都县| 皋兰县| 商都县| 肇源县| 桃江县| 临颍县| 大悟县| 长顺县| 屏边| 阜康市| 昭苏县| 眉山市| 莒南县| 丰镇市| 高雄县| 凯里市| 安溪县| 彰武县| 双柏县| 商丘市| 舒兰市| 靖西县| 双鸭山市| 兰西县| 长岛县| 临泽县| 高密市|