java明文密码三重加密方法_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密码加密
java明文密码加密
思科加密明文密码、svn 明文密码加密、明文密码加密、cisco 加密明文密码、凯撒密码加密明文,以便于您获取更多的相关知识。

时间: 2024-10-24 18:43:14

java明文密码三重加密方法_java的相关文章

我的密码的加密方法: (详细讲解)(解决溢出问题)(对象初学者))

初学|对象|加密|解决|问题 我的密码的加密方法:首先写一个加密函数encrypt(str):<%function    encrypt(str)      Dim i,c,length,texts,seed      length = len(str)          texts = ""      for i = 1 to length      c = mid(str,i,length)          seed=Asc(c)                      

用sql2005自带md5函数对明文密码进行加密,VS2010登录不上去,怎么办

问题描述 用sql2005自带md5函数对明文密码进行加密,VS2010登录不上去,怎么办 sql2005是可以进行加密了,但是在登录页面登不进去,不知道怎么textbox的密码也改成同样的加密后的密码,这样才能比对,密码有没有错 解决方案 检查MD5前字符格式,都是CHAR或UNICODE

java-那位大神能把我这个Java的md5的加密方法写个php版本哦,感激噢!

问题描述 那位大神能把我这个Java的md5的加密方法写个php版本哦,感激噢! 那位大神能把我这个Java的md5的加密方法写个php版本哦,感激噢,Java代码如下! 写这个的人 描述的思路如下 1.将秘钥.源串分别转换byte数组 2.声明2个64位数组 将key的byte数组分别做异或运算填充进去 并分别补充 54.92 补满64长度 3.获得md5摘要算法的MessageDigest 对象 4.使用其中一个数组及源串的数组更新MessageDigest 摘要 完成哈希计算 5.重置摘要

Java中常用的加密方法(JDK)

加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容.大体上分为双向加密和单向加密,而双向加密又分为对称加密和非对称加密(有些资料将加密直接分为对称加密和非对称加密). 双向加密大体意思就是明文加密后形成密文,可以通过算法还原成明文.而单向加密只是对信息进行了摘要计算,不能通过算法生成明文,单向加密从严格意思上说不能算是加密的一种,应该算是摘要算法吧.具体区分可以参考: (本人解释不清呢 -- ) http://secur

Java连接各种数据库的方法_java

本文实例讲述了Java连接各种数据库的方法.分享给大家供大家参考.具体如下: 复制代码 代码如下: //MySQL:       String Driver="com.mysql.jdbc.Driver";   //驱动程序      String URL="jdbc:mysql://localhost:3306/db_name";    //连接的URL,db_name为数据库名       String Username="username"

Java调用Shell命令的方法_java

本文实例讲述了Java调用Shell命令的方法.分享给大家供大家参考.具体如下: 近日项目中有这样一个需求:系统中的外币资金调度完成以后,要将调度信息生成一个Txt文件,然后将这个Txt文件发送到另外一个系统(Kondor)中.生成文件自然使用OutputStreamWirter了,发送文件有两种方式,一种是用写个一个类似于FTP功能的程序,另外一种就是使用Java来调用Shell,在Shell中完成文件的发送操作.我们选择后一种,即当完成外币资金的调度工作后,用Java的OutputStrea

Java使用JavaMail发送邮件的方法_java

本文实例讲述了Java使用JavaMail发送邮件的方法.分享给大家供大家参考,具体如下: 代码一.Email_Autherticator.java 服务器验证代码 import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; public class Email_Autherticator extends Authenticator { String username = "你邮箱的用户名"; S

Java获取mac地址的方法_java

本文实例讲述了Java获取mac地址的方法.分享给大家供大家参考.具体如下: /* * GetMacAddress .java * * description:get Mac addreess * * @author hadeslee * * Created on 2007-9-27, 9:11:15 * * To change this template, choose Tools | Templates * and open the template in the editor. */ pa

java执行Linux命令的方法_java

本文实例讲述了java执行Linux命令的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: public class StreamGobbler extends Thread {            InputStream is;      String type;        public StreamGobbler(InputStream is, String type) {          this.is = is;          this.type = ty