Java-密码加密

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

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

1.摩斯密码;说道密码加密不得不提的方法。很是经典。

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

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

2、栅栏密码;

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

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

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

先是栅栏部分:

 1 /*栅栏解密解密类*/
 2 public class Fence {
 3     /*加密部分*/
 4     public String encryption (String password){
 5         String p = new String();
 6         String p1 = new String();
 7         String p2 = new String();
 8         for    (int i = 0; i < password.length(); i++){
 9             if(i%2 == 0)
10                 p1 += p.valueOf(password.charAt(i));
11             else
12                 p2 += p.valueOf(password.charAt(i));
13         }
14         return p1+p2;
15     }
16     /*解密部分*/
17     public String decode(String FencePassword){
18         String password = new String();
19         String p = new String();
20         String p1 = FencePassword.substring(0, FencePassword.length()/2);
21         String p2 = FencePassword.substring(FencePassword.length()/2);
22         int i;
23         for    (i = 0; i < p1.length(); i++){
24             password += p.valueOf(p1.charAt(i)) + p.valueOf(p2.charAt(i));
25         }
26         if(FencePassword.length()%2 != 0)
27             password += p.valueOf(p2.charAt(i));
28         return password;
29     }
30 }

然后是摩斯部分:

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

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

  1 /*摩斯加密解密类*/
  2 import java.util.StringTokenizer;
  3
  4 public class Morse {
  5     /*摩斯密码与字符之间的匹配常量*/
  6     final String A = ".-";
  7     final String B = "---.";
  8     final String C = "-.-.";
  9     final String D = "-..";
 10     final String E = ".";
 11     final String F = "..-.";
 12     final String G = "--.";
 13     final String H = "....";
 14     final String I = "..";
 15     final String J = ".---";
 16     final String K = "-.-";
 17     final String L = ".-..";
 18     final String M = "--";
 19     final String N = "-.";
 20     final String O = "---";
 21     final String P = ".--.";
 22     final String Q = "--.-";
 23     final String R = ".-.";
 24     final String S = "...";
 25     final String T = "-";
 26     final String U = "..-";
 27     final String V = "...-";
 28     final String W = ".--";
 29     final String X = "-..-";
 30     final String Y = "-.--";
 31     final String Z = "--..";
 32     final String $0 = "-----";
 33     final String $1 = ".----";
 34     final String $2 = "..---";
 35     final String $3 = "...--";
 36     final String $4 = "....-";
 37     final String $5 = ".....";
 38     final String $6 = "-....";
 39     final String $7 = "--...";
 40     final String $8 = "---..";
 41     final String $9 = "----.";
 42     final String period = ".-.-.-"; // .
 43     final String colon = "---..."; // :
 44     final String comma = "--..--"; // ,
 45     final String semicolon = "-.-.-."; // ;
 46     final String question = "..--.."; // ?
 47     final String equal = "-...-"; // =
 48     final String doubleQuotation = ".-..-.";// "
 49     final String singleQuotation = ".----.";// ‘
 50     final String slash = "-..-."; ///
 51     final String exclamation = "-.-.--"; // !
 52     final String hyphen = "-....-"; // -
 53     final String underscore = "..--.-"; // _
 54     final String lroundBrackets = "-.--."; // (
 55     final String rroundBrackets = "-.--.-"; // )
 56     final String $ = "...-..-"; // $
 57     final String ampersand = ".-..."; // &
 58     final String at = ".--.-."; // @
 59     final String plus = ".-.-."; // +
 60     /*加密对应的匹配*/
 61     public String matching(String str) {
 62         switch (str) {
 63         case "A":
 64             return A;
 65         case "B":
 66             return B;
 67         case "C":
 68             return C;
 69         case "D":
 70             return D;
 71         case "E":
 72             return E;
 73         case "F":
 74             return F;
 75         case "G":
 76             return G;
 77         case "H":
 78             return H;
 79         case "I":
 80             return I;
 81         case "J":
 82             return J;
 83         case "K":
 84             return K;
 85         case "L":
 86             return L;
 87         case "M":
 88             return M;
 89         case "N":
 90             return N;
 91         case "O":
 92             return O;
 93         case "P":
 94             return P;
 95         case "Q":
 96             return Q;
 97         case "R":
 98             return R;
 99         case "S":
100             return S;
101         case "T":
102             return T;
103         case "U":
104             return U;
105         case "V":
106             return V;
107         case "W":
108             return W;
109         case "X":
110             return X;
111         case "Y":
112             return Y;
113         case "Z":
114             return Z;
115         case "0":
116             return $0;
117         case "1":
118             return $1;
119         case "2":
120             return $2;
121         case "3":
122             return $3;
123         case "4":
124             return $4;
125         case "5":
126             return $5;
127         case "6":
128             return $6;
129         case "7":
130             return $7;
131         case "8":
132             return $8;
133         case "9":
134             return $9;
135         case ".":
136             return period;
137         case ":":
138             return colon;
139         case ",":
140             return comma;
141         case ";":
142             return semicolon;
143         case "?":
144             return question;
145         case "=":
146             return equal;
147         case "\"":
148             return doubleQuotation;
149         case "\‘":
150             return singleQuotation;
151         case "/":
152             return slash;
153         case "!":
154             return exclamation;
155         case "-":
156             return hyphen;
157         case "_":
158             return underscore;
159         case "(":
160             return lroundBrackets;
161         case ")":
162             return rroundBrackets;
163         case "$":
164             return $;
165         case "&":
166             return ampersand;
167         case "@":
168             return at;
169         case "+":
170             return plus;
171         }
172         return " ";
173     }
174     /*摩斯加密*/
175     public String encryption(String password) {
176         Fence f = new Fence();
177         password = f.encryption(password);
178         password = f.encryption(password);
179         String MorsePasswork = new String();
180         String mp = new String();
181         for (int i = 0; i < password.length(); i++) {
182             mp = mp.valueOf(password.charAt(i));
183             MorsePasswork += matching(mp) + "/";
184         }
185         return MorsePasswork;
186     }
187     /*解密对应换的匹配*/
188     public String matching2(String str) {
189         if (str.equals(A))
190             return "A";
191         else if (str.equals(B))
192             return "B";
193         else if (str.equals(C))
194             return "C";
195         else if (str.equals(D))
196             return "D";
197         else if (str.equals(E))
198             return "E";
199         else if (str.equals(F))
200             return "F";
201         else if (str.equals(G))
202             return "G";
203         else if (str.equals(H))
204             return "H";
205         else if (str.equals(I))
206             return "I";
207         else if (str.equals(J))
208             return "J";
209         else if (str.equals(K))
210             return "K";
211         else if (str.equals(L))
212             return "L";
213         else if (str.equals(M))
214             return "M";
215         else if (str.equals(N))
216             return "N";
217         else if (str.equals(O))
218             return "O";
219         else if (str.equals(P))
220             return "P";
221         else if (str.equals(Q))
222             return "Q";
223         else if (str.equals(R))
224             return "R";
225         else if (str.equals(S))
226             return "S";
227         else if (str.equals(T))
228             return "T";
229         else if (str.equals(U))
230             return "U";
231         else if (str.equals(V))
232             return "V";
233         else if (str.equals(W))
234             return "W";
235         else if (str.equals(X))
236             return "X";
237         else if (str.equals(Y))
238             return "Y";
239         else if (str.equals(Z))
240             return "Z";
241         else if (str.equals($0))
242             return "0";
243         else if (str.equals($1))
244             return "1";
245         else if (str.equals($2))
246             return "2";
247         else if (str.equals($3))
248             return "3";
249         else if (str.equals($4))
250             return "4";
251         else if (str.equals($5))
252             return "5";
253         else if (str.equals($6))
254             return "6";
255         else if (str.equals($7))
256             return "7";
257         else if (str.equals($8))
258             return "8";
259         else if (str.equals($9))
260             return "9";
261         else if (str.equals(period))
262             return ".";
263         else if (str.equals(colon))
264             return ":";
265         else if (str.equals(comma))
266             return ",";
267         else if (str.equals(semicolon))
268             return ";";
269         else if (str.equals(question))
270             return "?";
271         else if (str.equals(equal))
272             return "=";
273         else if (str.equals(doubleQuotation))
274             return "\"";
275         else if (str.equals(singleQuotation))
276             return "\‘";
277         else if (str.equals(slash))
278             return "/";
279         else if (str.equals(exclamation))
280             return "!";
281         else if (str.equals(hyphen))
282             return "-";
283         else if (str.equals(underscore))
284             return "_";
285         else if (str.equals(lroundBrackets))
286             return "(";
287         else if (str.equals(rroundBrackets))
288             return ")";
289         else if (str.equals($))
290             return "$";
291         else if (str.equals(ampersand))
292             return "&";
293         else if (str.equals(at))
294             return "@";
295         else if (str.equals(plus))
296             return "+";
297         else
298             return " ";
299     }
300     /*摩斯解密*/
301     public String decode(String MorsePassword) {
302         String password = new String();
303         Fence f = new Fence();
304         StringTokenizer p = new StringTokenizer(MorsePassword, "/");
305         while (p.hasMoreElements()) {
306             password += matching2(p.nextToken());
307         }
308         password = f.decode(password);
309         password = f.decode(password);
310         return password;
311     }
312 }
时间: 2024-12-21 01:05:20

Java-密码加密的相关文章

Java密码加密与解密

Java密码加密与解密 Java中对代码进行加密与解密,其中用MD5方式的是不可逆的.   import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.security.InvalidKeyException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import

用户密码加密存储十问十答,一文说透密码安全存储

我们数据库的权限管理十分严格,敏感信息开发工程师都看不到,密码明文存储不行吗? 不行.存储在数据库的数据面临很多威胁,有应用程序层面.数据库层面的.操作系统层面的.机房层面的.员工层面的,想做到百分百不被黑客窃取,非常困难. 如果密码是加密之后再存储,那么即便被拖库,黑客也难以获取用户的明文密码.可以说,密码加密存储是用户账户系统的底裤,它的重要性,相当于你独自出远门时缝在内衣里钱,虽然你用到他们的概率不大,但关键时刻他们能救命. 那用加密算法比如AES,把密码加密下再存,需要明文的时候我再解密

了解Java密码扩展的基础

  了解Java密码扩展的基础     Java密码扩展(The Java Cryptography Extension),是JDK1.4的一个重要部分,基本上,他是由一些包构成的,这些包形成了一个框架并实现了一些加密,密钥生成算法和协议,消息认证码等算法,这篇文章将想你介绍JCE的安装和使用.    值得注意的是,尽管JCE是JDK1.4的核心包的一部分,我们将首先用JDK1.2及高一点的版本向你演示一下如何安装配置JCE(静态安装).稍后,将向你介绍如何在不安装的情况下使用JCE(动态安装)

JAVA - Blowfish加密出现java.security.InvalidKeyException: Illegal key size 解决方案

最近用java进行一个blowfish的加密算法,但是在我们的eclipse上报出Illegal key size的错误.google后发现原因是:ymmetricDS加密symmetric.properties中数据库密码产生"Illegal Key Size"错误 根据symmetricDS的guide文档,想要加密symmetric.properties中的db.password,需要跑以下命令: sym -p E:\someplace\symmetric.properties

C# Java DES加密解密

c#代码: public class DESHelper    {          /// <summary>        /// DES加密算法        /// </summary>        /// <param name="encryptString">要加密的字符串</param>        /// <param name="sKey">加密码Key</param>  

java MD5加密

今天在写注册登录的时候想起来为密码做一个加密,于是去网上搜索用哪方面的技术,最后确定了java自带的MD5单向加密,这个好处就是加密以后是无法解密的,有利于数据的安全,代码比较少,但是需要认真理解为什么要这样写,我先把代码贴出来. 我是需要把密码加密成一个32位的字符串 public class MD5 { public static String getHash(String password) throws NoSuchAlgorithmException { ///获取MD5算法实例 得到

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

xmlrpc .  https . cookies . httpclient.bugzilla . java实现加密通信下的xmlrpc接口调用并解决登陆保持会话功能,网上针对bugzilla的实现很少,针对xmlrpc的有但是基本都是http协议的,https下的认证处理比较麻烦,而且会话保持也是基本没有太多共享,所以本人决定结合xmlrpc\bugzilla官方文档,网友文章,结合个人经验总结而成,已经在window2007 64+jdk7位机器上调试通过 手把手教你如何实现: 第一步: 在

Druid实现数据库连接密码加密

jar包版本:druid-1.0.13.jar 1. 加密,用以下命令将用户名和密码加密 cmd命令行执行 java -cp D:/druid-1.0.13.jar com.alibaba.druid.filter.config.ConfigTools 用户名/密码 得到密文: f0PSl0Lzxh6CxzuFIdEg+wVx045fSE2VtUP45G9HH2cjVQnmGGgcK5CLzNUJoR6tGwRO44h74OxrBWuDzWC8jg== 2.用户名解密: ackage com.h

java字符串加密与解密

原文:java字符串加密与解密 源代码下载地址:http://www.zuidaima.com/share/1557602896464896.htm 这段时间正好系统中有需要对密码进行加密,还要能进行解密,支持自定义密钥.现分享给大家,希望能帮助到牛牛们. 有些人可能会遇到com.sun.crypto.provider.SunJCE报错,是由于编译器(jdk1.7以下)对必须得库有一定的限制,因此无法构造改函数,解决方法是设置一下编译器的报错级别,具体的解决方法可以参照这篇文章: http://

关于druid数据库密码加密流程及问题

最近项目中需要在配置中将数据库密码加密,就使用了阿里的druid来实现,将流程和问题和大家分享一下. 项目使用的是Spring加jetty,原先数据库连接使用的是Apache的DBCP:commons-dbcp2-2.1.1.jar+ojdbc6.jar 配置:<New class="com.alibaba.druid.pool.DruidDataSource">            <Set name="driverClassName">