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 = ; 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-密码加密的更多相关文章
- 使用哈希加盐法来为密码加密(补充JAVA的实现)
使用哈希加盐法来为密码加密 转自:http://www.cnblogs.com/jfzhu/p/4023439.html 转载请注明出处 (一)为什么要用哈希函数来加密密码 如果你需要保存密码(比 ...
- java工具类学习,系统中用户密码加密总结
现在项目,用户注册登录部分很少有涉及到了,原因:现在热门开发框架都已经在底层帮我们做了一套用户注册,密码加密,登录认证,权限控制,缓存数据等基本功能. 这有利于项目的快速完成,只需要搬砖码畜们专注于业 ...
- 基于RSA的前后端登陆密码加密JAVA实现(转)
RSA加密算法简介 SA加密算法是一种非对称加密算法.在公开密钥加密和电子商业中RSA被广泛使用.对极大整数做因数分解的难度决定了RSA算法的可靠性.换言之,对一极大整数做因数分解愈困难,RSA算法愈 ...
- Java 第十一届 蓝桥杯 省模拟赛 凯撒密码加密
凯撒密码加密 题目 问题描述 给定一个单词,请使用凯撒密码将这个单词加密. 凯撒密码是一种替换加密的技术,单词中的所有字母都在字母表上向后偏移3位后被替换成密文.即a变为d,b变为e,-,w变为z,x ...
- PHP、Java对称加密中的AES加密方法
PHP AES加密 <?php ini_set('default_charset','utf-8'); class AES{ public $iv = null; public $key = n ...
- bugzilla4的xmlrpc接口api调用实现分享: xmlrpc + https + cookies + httpclient +bugzilla + java实现加密通信下的xmlrpc接口调用并解决登陆保持会话功能
xmlrpc . https . cookies . httpclient.bugzilla . java实现加密通信下的xmlrpc接口调用并解决登陆保持会话功能,网上针对bugzilla的实现很 ...
- java常用加密和解密工具类EncryptUtil.java
package cn.util; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; im ...
- Java 前端加密传输后端解密以及验证码功能
目录(?)[-] 加密解密 1 前端js加密概述 2 前后端加密解密 21 引用的js加密库 22 js加密解密 23 Java端加密解密PKCS5Padding与js的Pkcs7一致 验证码 1 概 ...
- Java AES加密
Java AES 加密 加密 /** * * @description 加密 * * @param content 需要加密的内容 * @param password 加密密码 * @return * ...
- java对称加密(AES)
java对称加密(AES) 博客分类: Java javaAES对称加密 /** * AESHelper.java * cn.com.songjy.test * * Function: TODO * ...
随机推荐
- php cUrl模拟登录,cookie保存到文件中
源码如下: <?php header("Content-Type:text/html;charset=utf-8"); //模拟群友通讯录手机号登录 $curl = curl ...
- jQuery源代码学习之九—jQuery事件模块
jQuery事件系统并没有将事件坚挺函数直接绑定在DOM元素上,而是基于事件缓存模块来管理监听函数的. 二.jQuery事件模块的代码结构 //定义了一些正则 // // //jQuery事件对象 j ...
- using的作用
using (ServiceHost host = new ServiceHost(typeof(OperationService))) 这样写代码有何好处?using的作用范围自动回收垃圾,在这个范 ...
- lua自定义迭代器
迭代器 http://www.tutorialspoint.com/lua/lua_iterators.htm 迭代器能够让你遍历某个集合或者容器中的每一个元素. 对于lua来说, 集合通常指代 ta ...
- 分享一组矢量图标–UX图标字体库
以下内容转自:http://ux.etao.com/,原文链接:http://ued.alimama.com/posts/219 科技日新月异的今天,市面上各种分辨率.各种显示精度的显示设备层出不穷, ...
- 探索模拟angular的双向绑定
前言 本次探索的demo是基于jquery写的,毕竟jquery提供了强大的选择器,用惯了就离不开它了!angular的双向绑定实在是有点精深,本次探索只实现了文本的双向绑定. View-Model ...
- MOSS(Microsoft Office Sharepoint Server)升级2013遇到的PDF权限问题及解决方案
最近公司MOSS从2007升级到了2013,遇到了一个很呕心的问题: 为了保护公司资料安全,我们一直使用RMS给文档增加权限(信息权限管理 (IRM)),只有公司内部员工可以阅读.RMS加权限的范围仅 ...
- MWeb 1.4 新功能介绍二:静态博客功能增强
MWeb 比较有特色的是一键生成静态博客功能,然后从 MWeb 最开始规划要做静态博客生成功能时,我就希望 MWeb 的静态博客生成功能在易用的同时,还要有很强大的扩展性. 比如说能自己增加网站公告, ...
- git commit 代码时提示: Warning: Your console font probably doesn‘t support Unicode.
git 提交代码是会遇到以下问题, git commit 代码时提示: Warning: Your console font probably doesn‘t support Unicode. If ...
- oracle学习笔记
--Oracle查询当前版本select * from v$version;----------Oracle 查询服务器端编码----------select * from v$nls_paramet ...