网站安全之Java加密体系(MD5算法)

在上午写了一篇《网站入侵的攻击方法与原理》 我在那篇博客讲了一些我们现网络中常用的攻击方法原理,让大家不再于只把这些不安全因素归于一词“电脑中毒了”;其实有很多人,包括从事计算机的程序员,他们对网络管理也不太理解,也许是没有接触过,因此对网络攻击原理不太懂。

曾有一次我看过一个笑话——小红有一个程序员男朋友,有一天,小红的几个同事来到他们家玩,得知小红的男票是程序员,外行人对于程序员都很好奇,他们虽然不懂程序员具体是做什么,但一定是计算机很厉害的。于是开始请教起了计算机方面的事。A同事问"我最近想买台电脑,不知怎么样的配置好呢?";B同事问“最近我电脑越来越卡,不知是不是中毒了,可杀毒软件又杀不出来”;C同事也说“对对对,我的电脑偶尔还只能上QQ,不能打开网站,这是怎么回事呢?”。。。。。一人一句一大堆的问题出来,小红的男票的脸越来越红,脸色越来越难看。大家看到后怕怕的,偷偷问小红“你男票脾气不太好吧,我们请教一下问题,看他样子要发脾气了。”;可没想到的是结果小红的男票来一句话让大家愣住了,“我只会写程序,其他的我都不会,不要问我这些”

上面的故事我有改过,因为只是大概意思是那样的,也许有人看过此故事。但原理一样,这故事也告诉我们程序员,术有专攻没有错,但也要了解一些计算机其他知识,扩展自己的见识,有时候抽空了解一下计算机硬件与网络知识在生活与工作中还是很有用的,毕竟外行人真觉得我们程序员==计算机很厉害的那种概念。可别像故事那样出现尴尬情景,我自己以前在学校时也有学过一些硬件方面的知识和局域网的搭建,虽然几年过去了,我依然还记得网线插头上水晶头各颜色线的打发,所以我们了解一下计算机其他方面的知识,还是有必要的。当然,我们最主要的还是程序开发和网络知识;

我的每篇博客总是闲话太多,呵呵,谁让我不是那种内向又不爱说话的程序员呢。大家请包容啊,因为我是JAVA程序员,那接下来我都会讲一些JAVA加密体系方面的知识,我会分几篇来讲,以免太乱

Java加密体系

大家都知道,JAVA是安全的,比如自动内存管理;自动数组溢出检查;字节代码的验证机制;独特的安全类加载。。。。。JAVA都是需要编译成.class格式后再执行,其他人看不到项目的源代码,在代码的安全性就很高。JAVA平台已经实现好了加密算法只要调用类就可以了,在JAVA加密体系中JCA和JCE是JAVA中的两个重要的框架:

JCA——Java Cryptography Architecture

  • 数字签名
  • 信息摘要

JCE——Java Cryptography Extension

  • MD5(消息摘要算法)
  • SHA(安全散列算法)
  • DES(数据加密算法)
理论知识我就再啰嗦了,有兴趣多了解的可以去查询相关方面的知识进行学习;接下来我来执行使用JAVA进行MD5加密,步骤简单
  1. 初始化MessageDigest信息摘要对象
  2. 传入需要计算的字条串更新摘要对象
  3. 计算信息摘要
  4. 将byte[]转换为长度为32位的16进制字符串

源代码如下:

package com.qzh.test;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Scanner;

public class MD5Test {

	public void TestMD5(String input) throws NoSuchAlgorithmException, UnsupportedEncodingException{
		//1.初始化MessageDigest信息摘要对象
		MessageDigest md = MessageDigest.getInstance("md5");
		//2.传入需要计算的字条串更新摘要对象
		md.update(input.getBytes("UTF-8"));
		//3.计算信息摘要
		byte[] hashCode = md.digest();
		//4.将byte[]转换为长度为32位的16进制字符串
		StringBuffer sb = new StringBuffer();
		for(byte b:hashCode){
			sb.append(Character.forDigit((b>>4) & 0xf, 16));
			sb.append(Character.forDigit(b & 0xf, 16));
		}
		System.out.println("加密后:" + sb.toString());
	}
	public static void main(String[] args) throws NoSuchAlgorithmException, UnsupportedEncodingException {
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入你要加密的数据......");
		String input = scanner.nextLine();
		MD5Test md5 = new MD5Test();
		md5.TestMD5(input);
	}

}

执行后如下图:



可以看出,“邱子豪”三个字,经过JAVA中MD5算法加密后是:3670cfbab80f4888d59a04d2a3daf3f9  ;当你拿到加密后的这个乱码,你是否还能想得出原来只是三个中文的加密数据吗?很有意思吧,大家可以自己试试。至于MD5加密的破解问题,那与我们并没有太大的关联,我们只要会用,拿这个进行网络安全方面进入更深的研究,还是有必要了解的。接下来的博客,我会抽时间再分享一些其他安全方面的介绍,请关注本人博客,记得评价点赞哦,我会一一回复评价的,祝大家周末愉快。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值