java明文密码三重加密方法

本文介绍了两种密码加密的方法,这两种很常见可以再百度随意找到。

1.摩斯密码;

说道密码加密不得不提的方法。很是经典。

首先说一下他的对照表,直接上图。

核心思想就是替换明文密码,将字符对应的替换成-与.两种符号的组合;

2、栅栏密码;

所谓栅栏密码,就是把要加密的明文分成N个一组,然后把每组的第1个字连起来,形成一段无规律的话。 不过栅栏密码本身有一个潜规则,就是组成栅栏的字母一般不会太多。(一般不超过30个,也就是一、两句话)

这个没有什么好说的了,举个栗子:对明文ASDFGHJKL进行加密;分成两组:基数位置一组,偶数位置一组。然后两组合并成ADGJLSFHK;

我对这两种加密方式进行了结合,对一个明文密码进行了三重加密:第一层栅栏一次,第二层再栅栏一次,第三层再一次摩斯加密;

先是栅栏部分:

/*栅栏解密解密类*/

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;

}

}

然后是摩斯部分:

这一部分比较繁琐,在于摩斯密码与符号之间的匹配问题上,想着用一个数组去存储,然后循环进行匹配;但是我是一个不怕麻烦只求简单的一个人,就进行了一个个的比较;

 然后在摩斯加密解密的时候进行了两次的栅栏加密解密;这样用到加密解密的时候只要调用摩斯类的加密解密函数即可。

/*摩斯加密解密类*/

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 = ".-.-."; // +

/*加密对应的匹配*/

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;

}

/*解密对应换的匹配*/

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;

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是 java明文密码三重加密方法 的全部内容, 来源链接: utcz.com/p/209253.html

回到顶部