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

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

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 = ; i < password.length(); i++){
  9. if(i% == )
  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(, FencePassword.length()/);
  21. String p2 = FencePassword.substring(FencePassword.length()/);
  22. int i;
  23. for (i = ; i < p1.length(); i++){
  24. password += p.valueOf(p1.charAt(i)) + p.valueOf(p2.charAt(i));
  25. }
  26. if(FencePassword.length()% != )
  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 $ = "-----";
  33. final String $ = ".----";
  34. final String $ = "..---";
  35. final String $ = "...--";
  36. final String $ = "....-";
  37. final String $ = ".....";
  38. final String $ = "-....";
  39. final String $ = "--...";
  40. final String $ = "---..";
  41. final String $ = "----.";
  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 "":
  116. return $;
  117. case "":
  118. return $;
  119. case "":
  120. return $;
  121. case "":
  122. return $;
  123. case "":
  124. return $;
  125. case "":
  126. return $;
  127. case "":
  128. return $;
  129. case "":
  130. return $;
  131. case "":
  132. return $;
  133. case "":
  134. return $;
  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 = ; 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($))
  242. return "";
  243. else if (str.equals($))
  244. return "";
  245. else if (str.equals($))
  246. return "";
  247. else if (str.equals($))
  248. return "";
  249. else if (str.equals($))
  250. return "";
  251. else if (str.equals($))
  252. return "";
  253. else if (str.equals($))
  254. return "";
  255. else if (str.equals($))
  256. return "";
  257. else if (str.equals($))
  258. return "";
  259. else if (str.equals($))
  260. return "";
  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. }

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. php cUrl模拟登录,cookie保存到文件中

    源码如下: <?php header("Content-Type:text/html;charset=utf-8"); //模拟群友通讯录手机号登录 $curl = curl ...

  2. jQuery源代码学习之九—jQuery事件模块

    jQuery事件系统并没有将事件坚挺函数直接绑定在DOM元素上,而是基于事件缓存模块来管理监听函数的. 二.jQuery事件模块的代码结构 //定义了一些正则 // // //jQuery事件对象 j ...

  3. using的作用

    using (ServiceHost host = new ServiceHost(typeof(OperationService))) 这样写代码有何好处?using的作用范围自动回收垃圾,在这个范 ...

  4. lua自定义迭代器

    迭代器 http://www.tutorialspoint.com/lua/lua_iterators.htm 迭代器能够让你遍历某个集合或者容器中的每一个元素. 对于lua来说, 集合通常指代 ta ...

  5. 分享一组矢量图标–UX图标字体库

    以下内容转自:http://ux.etao.com/,原文链接:http://ued.alimama.com/posts/219 科技日新月异的今天,市面上各种分辨率.各种显示精度的显示设备层出不穷, ...

  6. 探索模拟angular的双向绑定

    前言 本次探索的demo是基于jquery写的,毕竟jquery提供了强大的选择器,用惯了就离不开它了!angular的双向绑定实在是有点精深,本次探索只实现了文本的双向绑定. View-Model ...

  7. MOSS(Microsoft Office Sharepoint Server)升级2013遇到的PDF权限问题及解决方案

    最近公司MOSS从2007升级到了2013,遇到了一个很呕心的问题: 为了保护公司资料安全,我们一直使用RMS给文档增加权限(信息权限管理 (IRM)),只有公司内部员工可以阅读.RMS加权限的范围仅 ...

  8. MWeb 1.4 新功能介绍二:静态博客功能增强

    MWeb 比较有特色的是一键生成静态博客功能,然后从 MWeb 最开始规划要做静态博客生成功能时,我就希望 MWeb 的静态博客生成功能在易用的同时,还要有很强大的扩展性. 比如说能自己增加网站公告, ...

  9. git commit 代码时提示: Warning: Your console font probably doesn‘t support Unicode.

    git 提交代码是会遇到以下问题, git commit 代码时提示: Warning: Your console font probably doesn‘t support Unicode. If ...

  10. oracle学习笔记

    --Oracle查询当前版本select * from v$version;----------Oracle 查询服务器端编码----------select * from v$nls_paramet ...