介绍两种密码加密的方法:

这两种很常见可以再百度随意找到。

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 = ; i < password.length(); i++){
if(i% == )
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(, FencePassword.length()/);
String p2 = FencePassword.substring(FencePassword.length()/);
int i;
for (i = ; i < p1.length(); i++){
password += p.valueOf(p1.charAt(i)) + p.valueOf(p2.charAt(i));
}
if(FencePassword.length()% != )
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 $ = "-----";
final String $ = ".----";
final String $ = "..---";
final String $ = "...--";
final String $ = "....-";
final String $ = ".....";
final String $ = "-....";
final String $ = "--...";
final String $ = "---..";
final String $ = "----.";
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 "":
return $;
case "":
return $;
case "":
return $;
case "":
return $;
case "":
return $;
case "":
return $;
case "":
return $;
case "":
return $;
case "":
return $;
case "":
return $;
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 = ; 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($))
return "";
else if (str.equals($))
return "";
else if (str.equals($))
return "";
else if (str.equals($))
return "";
else if (str.equals($))
return "";
else if (str.equals($))
return "";
else if (str.equals($))
return "";
else if (str.equals($))
return "";
else if (str.equals($))
return "";
else if (str.equals($))
return "";
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-密码加密的更多相关文章

  1. 使用哈希加盐法来为密码加密(补充JAVA的实现)

    使用哈希加盐法来为密码加密 转自:http://www.cnblogs.com/jfzhu/p/4023439.html 转载请注明出处   (一)为什么要用哈希函数来加密密码 如果你需要保存密码(比 ...

  2. java工具类学习,系统中用户密码加密总结

    现在项目,用户注册登录部分很少有涉及到了,原因:现在热门开发框架都已经在底层帮我们做了一套用户注册,密码加密,登录认证,权限控制,缓存数据等基本功能. 这有利于项目的快速完成,只需要搬砖码畜们专注于业 ...

  3. 基于RSA的前后端登陆密码加密JAVA实现(转)

    RSA加密算法简介 SA加密算法是一种非对称加密算法.在公开密钥加密和电子商业中RSA被广泛使用.对极大整数做因数分解的难度决定了RSA算法的可靠性.换言之,对一极大整数做因数分解愈困难,RSA算法愈 ...

  4. Java 第十一届 蓝桥杯 省模拟赛 凯撒密码加密

    凯撒密码加密 题目 问题描述 给定一个单词,请使用凯撒密码将这个单词加密. 凯撒密码是一种替换加密的技术,单词中的所有字母都在字母表上向后偏移3位后被替换成密文.即a变为d,b变为e,-,w变为z,x ...

  5. PHP、Java对称加密中的AES加密方法

    PHP AES加密 <?php ini_set('default_charset','utf-8'); class AES{ public $iv = null; public $key = n ...

  6. bugzilla4的xmlrpc接口api调用实现分享: xmlrpc + https + cookies + httpclient +bugzilla + java实现加密通信下的xmlrpc接口调用并解决登陆保持会话功能

    xmlrpc .  https . cookies . httpclient.bugzilla . java实现加密通信下的xmlrpc接口调用并解决登陆保持会话功能,网上针对bugzilla的实现很 ...

  7. java常用加密和解密工具类EncryptUtil.java

    package cn.util; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; im ...

  8. Java 前端加密传输后端解密以及验证码功能

    目录(?)[-] 加密解密 1 前端js加密概述 2 前后端加密解密 21 引用的js加密库 22 js加密解密 23 Java端加密解密PKCS5Padding与js的Pkcs7一致 验证码 1 概 ...

  9. Java AES加密

    Java AES 加密 加密 /** * * @description 加密 * * @param content 需要加密的内容 * @param password 加密密码 * @return * ...

  10. java对称加密(AES)

    java对称加密(AES) 博客分类: Java javaAES对称加密  /** * AESHelper.java * cn.com.songjy.test * * Function: TODO * ...

随机推荐

  1. visio任意角度精确旋转图形

    visio 2013 步骤: 选中图形 点击"视图->显示->任务窗格->大小和位置" 然后会出现一个小窗口,里面可以输入图形的旋转角度

  2. 主页面、iframe之间调用以及传值

    主页面.iframe之间的调用和传值,无非就是两个交互形式: 主页面与子页面的交互 子页面之间的交互 接下来要讲的是四种交互传值的方式:利用postMessage方法传值.DOM操作传值.URL方式传 ...

  3. NPOI 自定义单元格背景颜色-Excel

    NPOI针对office2003使用HSSFWorkbook,对于offce2007及以上使用XSSFWorkbook:今天我以HSSFWorkbook自定义颜色为例说明,Office2007的未研究 ...

  4. Mac终端用Sublime打开指定文件或文件夹

    首先你先把的sublime放到Application中,再确认您的Sublime的路径是否正确 1 创建别名: sudo ln -s "/Applications/Sublime\ Text ...

  5. jQuery.serialize() 函数详解////////////z

    serialize()函数用于序列化一组表单元素,将表单内容编码为用于提交的字符串. serialize()函数常用于将表单内容序列化,以便用于AJAX提交. 该函数主要根据用于提交的有效表单控件的n ...

  6. sublime text3 前端编译神器,浏览器实时显示

    前端编译器有很多,Dreamweaver,sublime text ,webstorm,但在使用之后感觉sublime text3就是前端的编译神器 首先sublime text3最好使用英文原版,虽 ...

  7. SQLServer数据库监控代码

    SQLServer数据库监控代码: creation_time, total_worker_time, last_worker_time, max_worker_time, min_worker_ti ...

  8. Oracle EBS FND User Info API (转) EBS用户账号密码职责相关

    . 与用户信息相关API PKG. --和用户处理有关的API FND_USER_PKG; --和用户密码处理有关的API FND_WEB_SEC; --和用户职责处理有关的API FND_USER_ ...

  9. 在 Windows 10 中启用 Windows Photo Viewer

    本文版权归cxun所有,如有转载请注明出处与本文链接,谢谢!原文地址:http://www.cnblogs.com/cxun/p/4727323.html 不知大家在使用了Win10之后有没有这样感受 ...

  10. 自动刷新页面为了session不过期

    为了保证在打开页面期间session不过期,估做了一个隐藏Iframe每隔若干秒来刷新一下页面,在隐藏页面给session赋值. <script type="text/javascri ...