有必要的,md5就是为了防止人偷窥,而当密码很短的时候,利用暴力搜索也比较容易搜索到,只有密码强度足够的情况下才有意义,你想转换也就没那么容易了。md5类hash算法的设计初衷就是单向,即不可逆。
2. java中md5加密
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class md5 {
public String str;
public void md5s(String plainText) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(plainText.getBytes());
byte b[] = md.digest();
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
str = buf.toString();
System.out.println("result: " + buf.toString());// 32位的加密
System.out.println("result: " + buf.toString().substring(8, 24));// 16位的加密
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String agrs[]) {
md5 md51 = new md5();
md51.md5s("4");//加密4
}
}
3. java 中怎么使用md5加密
楼主您好
JDK里面有一个java.security.MessageDigest类,这个类就是用来加密的。
String token = System.currentTimeMillis()+new Random().nextInt()+"";<img id="selectsearch-icon" src="https://gss0.bdstatic.com/70cFsjip0QIZ8tyhnq/img/iknow/qb/select-search.png" alt="搜索" class="selectsearch-hide">
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] md5 = md.digest(token.getBytes());
} catch (Exception e) {
throw new RuntimeException(e);
}
4. JAVA做一个简单的MD5加密...
常用的MD5加密类
package org.tool;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5_Encoding
{
private MessageDigest md = null;
private static MD5_Encoding md5 = null;
private static final char[] hexChars = { '0', '1', '2', '3', '4', '5', '6',
'7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
/**
* Constructor is private so you must use the getInstance method
*/
private MD5_Encoding() throws NoSuchAlgorithmException
{
md = MessageDigest.getInstance("MD5");
}
/**
* This returns the singleton instance
*/
public static MD5_Encoding getInstance() throws NoSuchAlgorithmException
{
if (md5 == null)
{
md5 = new MD5_Encoding();
}
return (md5);
}
/* 将字符串使用md5加密的方法*/
public static String hashCode(String dataToHash)
throws NoSuchAlgorithmException
{
return getInstance().hashData(dataToHash.getBytes());
}
public static String hashCode(byte[] dataToHash)
throws NoSuchAlgorithmException
{
return getInstance().hashData(dataToHash);
}
public String hashData(byte[] dataToHash)
{
return hexStringFromBytes((calculateHash(dataToHash))).toLowerCase();
}
private byte[] calculateHash(byte[] dataToHash)
{
md.update(dataToHash, 0, dataToHash.length);
return (md.digest());
}
public String hexStringFromBytes(byte[] b)
{
String hex = "";
int msb;
int lsb = 0;
int i;
// MSB maps to idx 0
for (i = 0; i < b.length; i++)
{
msb = ((int) b[i] & 0x000000FF) / 16;
lsb = ((int) b[i] & 0x000000FF) % 16;
hex = hex + hexChars[msb] + hexChars[lsb];
}
return (hex);
}
public static void main(String args[]) throws Exception{
//举例对1进行加密
System.out.println(MD5_Encoding.hashCode("1"));
}
}
5. java md5加密怎么实现源码 视频介绍下
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5 {
private MessageDigest md;
private static MD5 md5;
private MD5()
{
try {
md=MessageDigest.getInstance("md5");
} catch (NoSuchAlgorithmException e) {
System.out.println("没有这种算法");
}
}
//产生一个MD5实例
public static MD5 getInstance()
{
if(null!=md5)
return md5;
else
{
makeInstance();
return md5;
}
}
//保证同一时间只有一个线程在使用MD5加密
private static synchronized void makeInstance()
{
if(null==md5)
md5=new MD5();
}
public String createMD5(String pass)
{
md.update(pass.getBytes());
byte[] b=md.digest();
return byteToHexString(b);
}
private String byteToHexString(byte[] b)
{
StringBuffer sb=new StringBuffer();
String temp="";
for(int i=0;i<b.length;i++)
{
temp=Integer.toHexString(b[i]&0Xff);
if(temp.length()==1)
temp="0"+temp;
sb.append(temp);
}
return sb.toString();
}
public static void main(String[] args) {
System.out.println(MD5.getInstance().createMD5("123")); }}
6. javaweb关于客户端密码md5加密后被抓包工具抓取的问题
你描述的问题有点像CSRF攻击,而且你提出来的办法有一定的局限性,比如说如果黑客是同一个局域网的人,这种判断ip地址的方法可能会失效。
其实只要使用https就不存在这种问题,就算是中间被人截取了加密的密码,然后用加密的密码提交表单,最后与后台数据库匹配成功也没有用。因为匹配成功之后,服务端给黑客发送的信息也是经过加密的,但是黑客是不知道密钥,不知道如何对这段信息进行解密,所以不会登陆成功的。这把密钥只有客户端和服务端知道,所有题主担心的问题用https能够解决,这是我的一点见解。
7. 如何在java中实现md5加密和解密
package endecrypt;
02.
03.import java.io.UnsupportedEncodingException;
04.import java.security.MessageDigest;
05.import java.security.NoSuchAlgorithmException;
06.
07./**
08. * 采用MD5加密解密
09. * @author tfq
10. * @datetime 2011-10-13
11. */
12.public class MD5Util {
13.
14. /***
15. * MD5加码 生成32位md5码
16. */
17. public static String string2MD5(String inStr){
18. MessageDigest md5 = null;
19. try{
20. md5 = MessageDigest.getInstance("MD5");
21. }catch (Exception e){
22. System.out.println(e.toString());
23. e.printStackTrace();
24. return "";
25. }
26. char[] charArray = inStr.toCharArray();
27. byte[] byteArray = new byte[charArray.length];
28.
29. for (int i = 0; i < charArray.length; i++)
30. byteArray[i] = (byte) charArray[i];
31. byte[] md5Bytes = md5.digest(byteArray);
32. StringBuffer hexValue = new StringBuffer();
33. for (int i = 0; i < md5Bytes.length; i++){
34. int val = ((int) md5Bytes[i]) & 0xff;
35. if (val < 16)
36. hexValue.append("0");
37. hexValue.append(Integer.toHexString(val));
38. }
39. return hexValue.toString();
40.
41. }
42.
43. /**
44. * 加密解密算法 执行一次加密,两次解密
45. */
46. public static String convertMD5(String inStr){
47.
48. char[] a = inStr.toCharArray();
49. for (int i = 0; i < a.length; i++){
50. a[i] = (char) (a[i] ^ 't');
51. }
52. String s = new String(a);
53. return s;
54.
55. }
8. java 有哪些jar包直接提供了获得md5值的方法
需要导入一个jar包:commons-codec
代码如下:
import org.apache.commons.codec.digest.DigestUtils;
public class ToMain {
public static void main(String[] args) {
System.out.println(DigestUtils.md5Hex(".com"));
}
}
9. java web md5加密的使用
1、Java中你可以用MD5 util工具类,网上有md5工具类的,你下载一个,在数据入库时候,进行密文md5一下在存入数据库就行
2、非重要性数据使用md5是没有意义的
3、以上个人观点,如果还有什么不懂的可以在继续追问
10. java 中如何进行md5加密
JDK里面有一个java.security.MessageDigest类,这个类就是用来加密的。
加密代码如下:
Stringtoken=System.currentTimeMillis()+newRandom().nextInt()+"";
try{
MessageDigestmd=MessageDigest.getInstance("MD5");
byte[]md5=md.digest(token.getBytes());
}catch(Exceptione){
thrownewRuntimeException(e);
}
这个byte类型的数组就是使用MD5加密后的结果