设置别名+监听网络 -- 第二十二章、邮件服务器: Postfix
2013-11-12 19:10
288 查看
来想用MD5做散列来做密码传输的,无奈现在字典满天飞,而且已经被碰撞破解了。后打算用SHA1,但是到MD5.JS 上一看,人家作者推荐用SHA256或者更强的。好吧,那就改用SHA256好了。服务器端JAVA的MessageDigest类直接可以做SHA散列,不过散列完以后是Byte[]类型数据,所以还要再处理一下,使用apache的commons-codec库来做,就不自己写了。commons-codec库的下载地址:http://commons.apache.org/proper/commons-codec/download_codec.cgi代码是:(标红的是关键语句)
感谢原作者!
import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import org.apache.commons.codec.binary.Hex; public class TestSHA { public static void main(String args[]){ String text = "123456123456"; MessageDigest digest; try { digest = MessageDigest.getInstance("SHA-256"); byte[] hash = digest.digest(text.getBytes("UTF-8")); String output = Hex.encodeHexString(hash); System.out.println(output); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); }catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }试了几个字符串:123456123456SHA-256: 958d51602bbfbd18b2a084ba848a827c29952bfef170c936419b0922994c0589hello worldSHA-256: b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9客户端客户端用现成的sha256.js做。下载地址:http://www.bichlmeier.info/sha256.html测试页面HTML代码:
<html> <head></head> <body> <script type="text/javascript" src="sha256_2.js"> </script> <script type="text/javascript"> document.write(sha256_digest("hello world")); </script> </body> </html>页面输出:b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9可以看到跟上面的是匹配的。小结散列算法本身只能防止由截获的信息逆推回密码明文,但是无法保证密码传输时候的安全性。所以,在使用时,最好还是使用加盐的方式并且加上从服务器端传来的随机数作为验证码,防止黑客使用被截获的用户ID+密码来通过验证。加入随机验证码后,散列后产生的字串就变成了一次性的校验密码,例如:SHA256(SHA256(userID+password) + 验证码)验证码通过session传输,难逃session劫持的危险。所以,如果要保证完全的传输安全性,还要做防session劫持的处理,比如将cookieID绑定为MAC地址等。但是以上的所有做法都无法避免键盘记录器的盗窃方式。所以不适合用在跟钱打交道的场合。只能防止普通应用网站客户密码信息的暴露。本文转自:/article/4906121.html
感谢原作者!
相关文章推荐
- pfSense 单IP、网络、别名管道限速的设置
- 当手工成功建库并设置好服务器的监听后,使用网络连接方式失败原因分析:
- 使用TCP协议编写一个网络程序,设置服务器端的监听端口是8002,当与客户端建立连接后,服务器端向客户端发送数据“Hello, world”,客户端收到数据后打印输出
- 使用UDP协议编写一个网络程序,设置接收端程序的监听端口是8001,发送端发送的数据是“Hello, world”。
- RHEL 5服务篇—部署Postfix邮件系统(四)设置SMTP发信认证及别名机制
- Android进阶之路 - 网络状态监听与跳转网络设置
- Ubuntu下Postfix邮件服务器安装及基本的设置
- Ubuntu下Postfix邮件服务器安装及基本的设置
- 使用UDP协议编写一个网络程序,设置接收端程序监听端口为8001,发送端发送的数据是“hello world”
- 使用TCP协议编写一个网络程序,设置服务器端的监听端口是8002,当与客户端建立连接后,服务器端向客户端发送数据“Hello, world”,客户端收到数据后打印输出。
- 使用UDP协议编写一个网络程序,设置接收端程序的监听端口是8001,发送端发送的数据是“Hello, world”。
- oracle服务端和客户端之间的网络监听设置
- RHEL 5服务篇—部署Postfix邮件系统(四)设置SMTP发信认证及别名机制
- Ubuntu下Postfix邮件服务器安装及基本的设置
- 使用TCP协议编写一个网络程序,设置服务器端的监听端口是8002,当与客户端建立连接后,服务器端向客户端发送数据“Hello, world”,客户端收到数据后打印输出。
- postfix别名转发的设置
- Ubuntu下Postfix邮件服务器安装及基本的设置
- oracle服务端和客户端之间的网络监听设置
- Android工具之判断uri字符串是否网络资源同时设置进度条第二进度,同时监听播放卡顿
- Android 超简单音乐播放器(十三)监听网络状态的变化,设置移动网络是否可以播放。