Java-密码加密
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java-密码加密,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含7942字,纯文字阅读大概需要12分钟。
内容图文
介绍两种密码加密的方法:
这两种很常见可以再百度随意找到。
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(); 8for (int i = 0; i < password.length(); i++){ 9if(i%2 == 0) 10 p1 += p.valueOf(password.charAt(i)); 11else12 p2 += p.valueOf(password.charAt(i)); 13 } 14return p1+p2; 15 } 16/*解密部分*/17public 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); 22int i; 23for (i = 0; i < p1.length(); i++){ 24 password += p.valueOf(p1.charAt(i)) + p.valueOf(p2.charAt(i)); 25 } 26if(FencePassword.length()%2 != 0) 27 password += p.valueOf(p2.charAt(i)); 28return 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/*加密对应的匹配*/ 61public String matching(String str) { 62switch (str) { 63case"A": 64return A; 65case"B": 66return B; 67case"C": 68return C; 69case"D": 70return D; 71case"E": 72return E; 73case"F": 74return F; 75case"G": 76return G; 77case"H": 78return H; 79case"I": 80return I; 81case"J": 82return J; 83case"K": 84return K; 85case"L": 86return L; 87case"M": 88return M; 89case"N": 90return N; 91case"O": 92return O; 93case"P": 94return P; 95case"Q": 96return Q; 97case"R": 98return R; 99case"S": 100return S; 101case"T": 102return T; 103case"U": 104return U; 105case"V": 106return V; 107case"W": 108return W; 109case"X": 110return X; 111case"Y": 112return Y; 113case"Z": 114return Z; 115case"0": 116return $0; 117case"1": 118return $1; 119case"2": 120return $2; 121case"3": 122return $3; 123case"4": 124return $4; 125case"5": 126return $5; 127case"6": 128return $6; 129case"7": 130return $7; 131case"8": 132return $8; 133case"9": 134return $9; 135case".": 136return period; 137case":": 138return colon; 139case",": 140return comma; 141case";": 142return semicolon; 143case"?": 144return question; 145case"=": 146return equal; 147case"\"": 148return doubleQuotation; 149case"\‘": 150return singleQuotation; 151case"/": 152return slash; 153case"!": 154return exclamation; 155case"-": 156return hyphen; 157case"_": 158return underscore; 159case"(": 160return lroundBrackets; 161case")": 162return rroundBrackets; 163case"$": 164return $; 165case"&": 166return ampersand; 167case"@": 168return at; 169case"+": 170return plus; 171 } 172return""; 173 } 174/*摩斯加密*/175public 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(); 181for (int i = 0; i < password.length(); i++) { 182 mp = mp.valueOf(password.charAt(i)); 183 MorsePasswork += matching(mp) + "/"; 184 } 185return MorsePasswork; 186 } 187/*解密对应换的匹配*/188public String matching2(String str) { 189if (str.equals(A)) 190return"A"; 191elseif (str.equals(B)) 192return"B"; 193elseif (str.equals(C)) 194return"C"; 195elseif (str.equals(D)) 196return"D"; 197elseif (str.equals(E)) 198return"E"; 199elseif (str.equals(F)) 200return"F"; 201elseif (str.equals(G)) 202return"G"; 203elseif (str.equals(H)) 204return"H"; 205elseif (str.equals(I)) 206return"I"; 207elseif (str.equals(J)) 208return"J"; 209elseif (str.equals(K)) 210return"K"; 211elseif (str.equals(L)) 212return"L"; 213elseif (str.equals(M)) 214return"M"; 215elseif (str.equals(N)) 216return"N"; 217elseif (str.equals(O)) 218return"O"; 219elseif (str.equals(P)) 220return"P"; 221elseif (str.equals(Q)) 222return"Q"; 223elseif (str.equals(R)) 224return"R"; 225elseif (str.equals(S)) 226return"S"; 227elseif (str.equals(T)) 228return"T"; 229elseif (str.equals(U)) 230return"U"; 231elseif (str.equals(V)) 232return"V"; 233elseif (str.equals(W)) 234return"W"; 235elseif (str.equals(X)) 236return"X"; 237elseif (str.equals(Y)) 238return"Y"; 239elseif (str.equals(Z)) 240return"Z"; 241elseif (str.equals($0)) 242return"0"; 243elseif (str.equals($1)) 244return"1"; 245elseif (str.equals($2)) 246return"2"; 247elseif (str.equals($3)) 248return"3"; 249elseif (str.equals($4)) 250return"4"; 251elseif (str.equals($5)) 252return"5"; 253elseif (str.equals($6)) 254return"6"; 255elseif (str.equals($7)) 256return"7"; 257elseif (str.equals($8)) 258return"8"; 259elseif (str.equals($9)) 260return"9"; 261elseif (str.equals(period)) 262return"."; 263elseif (str.equals(colon)) 264return":"; 265elseif (str.equals(comma)) 266return","; 267elseif (str.equals(semicolon)) 268return";"; 269elseif (str.equals(question)) 270return"?"; 271elseif (str.equals(equal)) 272return"="; 273elseif (str.equals(doubleQuotation)) 274return"\""; 275elseif (str.equals(singleQuotation)) 276return"\‘"; 277elseif (str.equals(slash)) 278return"/"; 279elseif (str.equals(exclamation)) 280return"!"; 281elseif (str.equals(hyphen)) 282return"-"; 283elseif (str.equals(underscore)) 284return"_"; 285elseif (str.equals(lroundBrackets)) 286return"("; 287elseif (str.equals(rroundBrackets)) 288return")"; 289elseif (str.equals($)) 290return"$"; 291elseif (str.equals(ampersand)) 292return"&"; 293elseif (str.equals(at)) 294return"@"; 295elseif (str.equals(plus)) 296return"+"; 297else298return""; 299 } 300/*摩斯解密*/301public String decode(String MorsePassword) { 302 String password = new String(); 303 Fence f = new Fence(); 304 StringTokenizer p = new StringTokenizer(MorsePassword, "/"); 305while (p.hasMoreElements()) { 306 password += matching2(p.nextToken()); 307 } 308 password = f.decode(password); 309 password = f.decode(password); 310return password; 311 } 312 }
原文:http://www.cnblogs.com/ABook/p/5634238.html
内容总结
以上是互联网集市为您收集整理的Java-密码加密全部内容,希望文章能够帮你解决Java-密码加密所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。