
在各种应用系统的开发中 经常需要存储用户信息 很多地方都要存储用户密码 而将用户密码直接存储在服务器上显然是不安全的 本文简要介绍工作中常用的 MD 加密算法 希望能抛砖引玉
(一)消息摘要简介
一个消息摘要就是一个数据块的数字指纹 即对一个任意长度的一个数据块进行计算 产生一个唯一指印(对于SHA 是产生一个 字节的二进制数组) 消息摘要是一种与消息认证码结合使用以确保消息完整性的技术 主要使用单向散列函数算法 可用于检验消息的完整性 和通过散列密码直接以文本形式保存等 目前广泛使用的算法有MD MD SHA
消息摘要有两个基本属性
两个不同的报文难以生成相同的摘要难以对指定的摘要生成一个报文 而可以由该报文反推算出该指定的摘要代表 美国国家标准技术研究所的SHA 和麻省理工学院Ronald Rivest提出的MD
(二)对字符串进行加密
/ //利用MD 进行加密 @param str 待加密的字符串 @return 加密后的字符串 @throws NoSuchAlgorithmException 没有这种产生消息摘要的算法 @throws UnsupportedEncodingException / public String EncoderByMd (String str) throws NoSuchAlgorithmException UnsupportedEncodingException { //确定计算方法 MessageDigest md =MessageDigest getInstance( MD ); BASE Encoder base en = new BASE Encoder(); //加密后的字符串 String newstr=base en encode(md digest(str getBytes( utf ))); return newstr; }调用函数 String str=
System out println(EncoderByMd (str))
输出 eB eJF ptWaXm bijSPyxw==
(三)验证密码是否正确
/ //判断用户密码是否正确 @param newpasswd 用户输入的密码 @param oldpasswd 数据库中存储的密码--用户密码的摘要 @return @throws NoSuchAlgorithmException @throws UnsupportedEncodingException / public boolean checkpassword(String newpasswd String oldpasswd) throws NoSuchAlgorithmException UnsupportedEncodingException { if(EncoderByMd (newpasswd) equals(oldpasswd)) return true; else return false; } lishixinzhi/Article/program/Java/hx/201311/26374
如果jdbc和mysql都支持SSL那通过配置就可以了\x0d\如果不支持,那也可以自己来实现。\x0d\实现思路:\x0d\1、在数据库的主机上运行一个java服务,用来转发数据这个服务我们成为A服务\x0d\2、客户端并不直接访问数据库,而访问A服务,客户端和A服务之间的传输代码由用户自己完成,当然可以加密。走套接字,走>
你的问题很不清晰。
java jdbc连接mysql数据库
如何实现用户名密码以及传输数据的加密
你是要加密保存的数据,还是加密连接信息?
如果是连接串中的用户名与密码进行加密。恐怕用起来很不方便。
我就当你是要把入库的信息加密。
下边是DES加密的方法。将数据进行DES加密,将加密内容转为16进制内容表示。
--------------------------------------------------------------------------------------------
import javaxcryptoCipher;
import javaxcryptospecSecretKeySpec;
public class DesTest {
public static void main(String[] args) throws Exception {
// 要加密的数据
String str = "123456";
// 密钥
String strKey = "86337898";
SecretKeySpec key = new SecretKeySpec(strKeygetBytes(), "DES");
Cipher cipher = CiphergetInstance("DES");
cipherinit(CipherENCRYPT_MODE, key);
byte[] byteFina = cipherdoFinal(strgetBytes());
String strFinal = byte2Hex(byteFina);
Systemoutprintln(strFinal);
cipherinit(CipherDECRYPT_MODE, key);
byte[] decByte = hex2Byte(strFinal);
byte[] result = cipherdoFinal(decByte);
Systemoutprintln(new String(result));
}
public static String byte2Hex(byte[] buff) {
String hs = "";
for (int i = 0; i < bufflength; i++) {
String stmp = (IntegertoHexString(buff[i] & 0XFF));
if (stmplength() == 1)
hs = hs + "0" + stmp;
else
hs = hs + stmp;
}
return hs;
}
public static byte[] hex2Byte(String str) {
int len = strlength() / 2;
byte[] buff = new byte[len];
int index = 0;
for (int i = 0; i < strlength(); i += 2) {
buff[index++] = (byte) Integer
parseInt(strsubstring(i, i + 2), 16);
}
return buff;
}
}
以上就是关于java中使用MD5加密算法进行加密全部的内容,包括:java中使用MD5加密算法进行加密、javajdbc连接mysql数据库如何实现用户名密码以及传输数据的加密、java jdbc连接mysql数据库 如何实现用户名密码以及传输数据的加密等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)