在上午写了一篇《网站入侵的攻击方法与原理》 我在那篇博客讲了一些我们现网络中常用的攻击方法原理,让大家不再于只把这些不安全因素归于一词“电脑中毒了”;其实有很多人,包括从事计算机的程序员,他们对网络管理也不太理解,也许是没有接触过,因此对网络攻击原理不太懂。
曾有一次我看过一个笑话——小红有一个程序员男朋友,有一天,小红的几个同事来到他们家玩,得知小红的男票是程序员,外行人对于程序员都很好奇,他们虽然不懂程序员具体是做什么,但一定是计算机很厉害的。于是开始请教起了计算机方面的事。A同事问"我最近想买台电脑,不知怎么样的配置好呢?";B同事问“最近我电脑越来越卡,不知是不是中毒了,可杀毒软件又杀不出来”;C同事也说“对对对,我的电脑偶尔还只能上QQ,不能打开网站,这是怎么回事呢?”。。。。。一人一句一大堆的问题出来,小红的男票的脸越来越红,脸色越来越难看。大家看到后怕怕的,偷偷问小红“你男票脾气不太好吧,我们请教一下问题,看他样子要发脾气了。”;可没想到的是结果小红的男票来一句话让大家愣住了,“我只会写程序,其他的我都不会,不要问我这些”
上面的故事我有改过,因为只是大概意思是那样的,也许有人看过此故事。但原理一样,这故事也告诉我们程序员,术有专攻没有错,但也要了解一些计算机其他知识,扩展自己的见识,有时候抽空了解一下计算机硬件与网络知识在生活与工作中还是很有用的,毕竟外行人真觉得我们程序员==计算机很厉害的那种概念。可别像故事那样出现尴尬情景,我自己以前在学校时也有学过一些硬件方面的知识和局域网的搭建,虽然几年过去了,我依然还记得网线插头上水晶头各颜色线的打发,所以我们了解一下计算机其他方面的知识,还是有必要的。当然,我们最主要的还是程序开发和网络知识;
我的每篇博客总是闲话太多,呵呵,谁让我不是那种内向又不爱说话的程序员呢。大家请包容啊,因为我是JAVA程序员,那接下来我都会讲一些JAVA加密体系方面的知识,我会分几篇来讲,以免太乱
Java加密体系
JCA——Java Cryptography Architecture
- 数字签名
- 信息摘要
JCE——Java Cryptography Extension
- MD5(消息摘要算法)
- SHA(安全散列算法)
- DES(数据加密算法)
- 初始化MessageDigest信息摘要对象
- 传入需要计算的字条串更新摘要对象
- 计算信息摘要
- 将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);
}
}