本文主要谈一下密码学中的加密和数字签名以及其在java中如何进行使用对密码学有兴趣的伙伴推荐看Bruce Schneier的着作Applied Crypotography在jdk的发行版本中安全性方面有了很大的改进也提供了对RSA算法的直接支持现在我们从实例入手解决问题(本文仅是作为简单介绍)
一密码学上常用的概念
)消息摘要
这是一种与消息认证码结合使用以确保消息完整性的技术主要使用单向散列函数算法可用于检验消息的完整性和通过散列密码直接以文本形式保存等目前广泛使用的算法有MDMDSHAjdk对上面都提供了支持在java中进行消息摘要很简单 javasecurityMessageDigest提供了一个简易的操作方法
Java代码
/**
*MessageDigestExamplejava
*Copyright
*/
import javasecurityMessageDigest;
/**
*单一的消息摘要算法不使用密码可以用来对明文消息(如密码)隐藏保存
*/
public class MessageDigestExample{
public static void main(String[] args) throws Exception{
if(argslength!=){
Systemerrprintln(Usage:java MessageDigestExample text);
Systemexit();
}
byte[] plainText=args[]getBytes(UTF);
//使用getInstance(算法)来获得消息摘要这里使用SHA的位算法
MessageDigest messageDigest=MessageDigestgetInstance(SHA);
Systemoutprintln(
+messageDigestgetProvider()getInfo());
//开始使用算法
messageDigestupdate(plainText);
Systemoutprintln(
Digest:);
//输出算法运算结果
Systemoutprintln(new String(messageDigestdigest()UTF));
}
}
还可以通过消息认证码来进行加密实现javaxcryptoMac提供了一个解决方案有兴趣者可以参考相关API文档本文只是简单介绍什么是摘要算法