继续 漫谈Java加密技术(一)
HMAC
HMAC(Hash Message Authentication Code,散列消息鉴别码,基于密钥的Hash算法的认证协议。消息鉴别码实现鉴别的原理是,用公开函数和密钥产生一个固定长度的值作为认证标识,用这个标识鉴别消息的完整性。使用一个密钥生成一个固定大小的小数据块,即MAC,并将其加入到消息中,然后传输。接收方利用与发送方共享的密钥进行鉴别认证等。
通过java代码实现如下:
/** *//**
* 初始化HMAC密钥 http://www.guihua.org http://www.feng123.com
*
* @return
* @throws Exception
*/
public static String initMacKey() throws Exception {
KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_MAC);
SecretKey secretKey = keyGenerator.generateKey();
return encryptBASE64(secretKey.getEncoded());
}
/** *//**
* HMAC加密
*
* @param data
* @param key
* @return
* @throws Exception
*/
public static byte[] encryptHMAC(byte[] data, String key) throws Exception {
SecretKey secretKey = new SecretKeySpec(decryptBASE64(key), KEY_MAC);
Mac mac = Mac.getInstance(secretKey.getAlgorithm());
mac.init(secretKey);
return mac.doFinal(data);
}
给
相关文档:
最近读完<Java并发编程实践>,无疑这是一本好书,它使得我对线程,锁,以及与并发相关的
一些知识体系更加完备,闲话不多说,下面我系统梳理了下里面的一些理论要点,相信实践上
面,大家或多或少都会有体会,那么用理论的知识点将实践体会笼络起来,将会形成更加牢固
和完备的知识体系,至少我这么认为,写这一篇笔记也是用以 ......
转载自:http://chenpingtai2008.javaeye.com/blog/253339
早在Java
1.2推出之时,Java平台中就引入了一个新的支持:java.lang.ThreadLocal,给我们在编写多线程程序时提供了一种新的选择。使用
这个工具类可以很简洁地编写出优美的多线程程序,虽然ThreadLocal非常有用,但是似乎现在了解它、使用它的朋友还不多。
......
多线程环境中,比较掌握的事情之一就是如何返回线程的信息。因为run和start方法并不返回任何值。
假设现在有两个线程,主线程和一个子线程,子线程读文件,主线程需要对文件的结果进行操作,当然,最简单的方法就是读文件和处理读出的文件全部都在主线程中进
行。
......
最近看到论坛里有个帖子在讨论接口和抽象类的区别和作用,这其实也是很多面试官喜欢问的问题,这里我就说说我的总结,顺便说说内部类的作用,当是给刚入门,或者想学习java的同学们能更好的理解它们的用法。
1.接口(interface),接口被用来建立类与类之间关联的标准。
Java code
public interface ITest{
public ......
今天一天学了异常处理这一章。
首先异常是Java程序在运行期出现的错误,非编译期(javac)出现的错误。
然后再给异常分类,异常分为三种,第一为error,这种异常不可以处理,是系统的内部错误,第二为Exception,这种可以被处理,Exception里面又有个RuntimeException的类,而RuntimeException又是可以不被捕获处理的,因 ......