javamd5(javamd5技术)
大家好,今天就和小鱼一起来看看这个问题吧 。javamd5技术,javamd5很多人还不知道,现在让我们一起来看看吧!
1、 首先,运行以下命令
2、 导入Java . security . message digest;
3、 公共类Test_MD5{
4、 公共最终静态字符串MD5(字符串s) {
5、 char hexDigits[]={ '0 ',' 1 ',' 2 ',' 3 ',' 4 ',' 5 ',' 6 ',' 7 ',' 8 ',' 9 ',
6、 a ',' b ',' c ',' d ',' e ',' f ' };
7、 尝试{
8、 byte[]strTemp=s . getbytes();
9、 //使用MD5创建MessageDigest对象
10、 message digest MD temp=message digest . getinstance(' MD5 ');
11、 MD temp . update(strTemp);
12、 byte[]MD=MD temp . digest();
13、 int j=md.length
14、 char str[]=new char[j * 2];
15、 int k=0;
16、 for(int I=0;I j;i ) {
17、 字节b=MD[I];
18、 //system . out . println((int)b);
19、 //将对数字(int) B进行双字节加密。
20、 str[k]=hex digits[b 40xf];
21、 str[k]=hex digits[b0xf];
22、 }
23、 返回新字符串(str);
24、 } catch(异常e){返回null}
25、 }
26、 //测试
27、 公共静态void main(String[] args) {
28、 System.out.println('caidao的' caidao MD5是加密的:\n' Test_MD5。MD5('财道');
29、 system . out . println(');
30、 }
31、 }
32、 MD5的典型应用是在消息(字节串)上生成指纹,以防止它被“篡改”。例如,您在一个名为readme.txt的文件中编写一个段落,并为这个readme.txt生成一个MD5值并记录下来。然后,您可以将该文件传播给其他人。如果其他人修改了文件中的任何内容,当您重新计算该文件的MD5时,您会发现它。如果有第三方认证机构,MD5还可以防止文档作者的‘否认’,这就是所谓的数字* * * *应用。
33、 MD5也广泛用于加密和解密技术。在很多操作系统中,用户的密码是以MD5值的形式保存的(或者类似的其他算法)。当用户登录时,系统将用户输入的密码计算成MD5值,然后与系统中保存的MD5值进行比较,但系统并不‘知道’用户的密码是什么。
34、 MD5理论上是单向哈希,一些黑客通过一种叫做‘运行字典’的方法破解这个密码。字典的获取方式有两种,一种是日常收集的用作密码的字符串表,另一种是通过排列组合生成的。这些字典项的MD5值首先由MD5程序计算,然后在这个字典中查找目标的MD5值。
35、 即使密码的最大长度是8,并且密码只能是字母和数字,总共26 ^ 26 ^ 10=62个字符,排列组合词典中的条目数也是P (62,1) P (62,2).P (62,8),这已经是非常天文数字了。需要TB级磁盘组来存储这个字典和这个方法
36、 方法二,
37、 导入Java . security . spec . *;
38、 MD5_test类{
39、 公共最终静态字符串MD5(字符串s) {
40、 char hexDigits[]={ '0 ',' 1 ',' 2 ',' 3 ',' 4 ',' 5 ',' 6 ',' 7 ',' 8 ',' 9 ',
41、 甲、乙、丙、丁、戊
42、 try {
43、 byte[] strTemp = s.getBytes();
44、 MessageDigest mdTemp = MessageDigest.getInstance("MD5");
45、 mdTemp.update(strTemp);
46、 byte[] md = mdTemp.digest();
47、 int j = md.length;
48、 char str[] = new char[j * 2];
49、 int k = 0;
50、 for (int i = 0; i < j; i++) {
51、 byte byte0 = md[i];
52、 str[k++] = hexDigits[byte0 >>> 4 & 0xf];
53、 str[k++] = hexDigits[byte0 & 0xf];
54、 }
55、 return new String(str);
56、 } catch (Exception e) {
57、 return null;
58、 }
59、 }
60、 public static void main(String[] args) {
61、 // MD5_Test aa = new MD5_Test();
62、 System.out.print(MD5_test.MD5("b"));
63、 }
64、 }
65、 加密,解密
66、 import java.security.MessageDigest;
67、 public class MD5andKL {
68、 // MD5加码。32位
69、 public static String MD5(String inStr) {
70、 MessageDigest md5 = null;
71、 try {
72、 md5 = MessageDigest.getInstance("MD5");
73、 } catch (Exception e) {
74、 System.out.println(e.toString());
75、 e.printStackTrace();
76、 return "";
77、 }
78、 char[] charArray = inStr.toCharArray();
79、 byte[] byteArray = new byte[charArray.length];
80、 for (int i = 0; i < charArray.length; i++)
81、 byteArray[i] = (byte) charArray[i];
82、 byte[] md5Bytes = md5.digest(byteArray);
83、 StringBuffer hexValue = new StringBuffer();
84、 for (int i = 0; i < md5Bytes.length; i++) {
85、 int val = ((int) md5Bytes[i]) & 0xff;
86、 if (val < 16)
87、 hexValue.append("0");
88、 hexValue.append(Integer.toHexString(val));
89、 }
90、 return hexValue.toString();
91、 }
92、 // 可逆的加密算法
93、 public static String KL(String inStr) {
94、 // String s = new String(inStr);
95、 char[] a = inStr.toCharArray();
96、 for (int i = 0; i < a.length; i++) {
97、 a[i] = (char) (a[i] ^ 't');
98、 }
99、 String s = new String(a);
100、 return s;
101、 }
102、 // 加密后解密
103、 public static String JM(String inStr) {
104、 char[] a = inStr.toCharArray();
105、 for (int i = 0; i < a.length; i++) {
106、 a[i] = (char) (a[i] ^ 't');
107、 }
108、 String k = new String(a);
109、 return k;
110、 }
111、 // 测试主函数
112、 public static void main(String args[]) {
113、 String s = new String("a");
114、 System.out.println("原始:" + s);
115、 System.out.println("MD5后:" + MD5(s));
116、 System.out.println("MD5后再加密:" + KL(MD5(s)));
117、 System.out.println("解密为MD5后的:" + JM(KL(MD5(s))));
118、 }
119、 }
120、方法三、
121、package endecrypt;
122、 import java.io.UnsupportedEncodingException;
123、 import java.security.MessageDigest;
124、 import java.security.NoSuchAlgorithmException;
125、 /**
126、 * 采用MD5加密解密
127、 * @author tfq
128、 * @datetime 2011-10-13
129、 */
130、 public class MD5Util {
131、 /***
132、 * MD5加码 生成32位md5码
133、 */
134、 public static String string2MD5(String inStr){
135、 MessageDigest md5 = null;
136、 try{
137、 md5 = MessageDigest.getInstance("MD5");
138、 }catch (Exception e){
139、 System.out.println(e.toString());
140、 e.printStackTrace();
141、 return "";
142、 }
143、 char[] charArray = inStr.toCharArray();
144、 byte[] byteArray = new byte[charArray.length];
145、 for (int i = 0; i < charArray.length; i++)
146、 byteArray[i] = (byte) charArray[i];
147、 byte[] md5Bytes = md5.digest(byteArray);
148、 StringBuffer hexValue = new StringBuffer();
149、 for (int i = 0; i < md5Bytes.length; i++){
150、 int val = ((int) md5Bytes[i]) & 0xff;
151、 if (val < 16)
152、 hexValue.append("0");
153、 hexValue.append(Integer.toHexString(val));
154、 }
155、 return hexValue.toString();
156、 }
157、 /**
158、 * 加密解密算法 执行一次加密,两次解密
159、 */
160、 public static String convertMD5(String inStr){
161、 char[] a = inStr.toCharArray();
162、 for (int i = 0; i < a.length; i++){
163、 a[i] = (char) (a[i] ^ 't');
164、 }
165、 String s = new String(a);
166、 return s;
167、 }
168、 // 测试主函数
169、 public static void main(String args[]) {
170、 String s = new String("tangfuqiang");
171、 System.out.println("原始:" + s);
172、 System.out.println("MD5后:" + string2MD5(s));
173、 System.out.println("加密的:" + convertMD5(s));
174、 System.out.println("解密的:" + convertMD5(convertMD5(s)));
175、 }
176、 }
这篇文章到此就结束,希望能帮助到大家。
扫描二维码推送至手机访问。
版权声明:文章内容摘自网络,如果无意之中侵犯了您的版权,请联系本站,本站将在3个工作日内删除。谢谢!