摘要(MD5\SHA1\MAC)、对称加密(DES\AES)、非对称加密(DSA\RSA)签名在JAVA中应用

本文详细介绍了JAVA安全领域的核心组件,包括JCA、JCE、JSSE和JAAS,并探讨了摘要算法如MD5、SHA1和MAC,对称加密如DES和AES,以及非对称加密如DSA和RSA在JAVA中的应用。通过实例展示了如何进行加密、解密以及签名操作。
摘要由CSDN通过智能技术生成

引言:去年阅读了《JAVA加密与解密的艺术》草草总结了一些概念,实际在JAVA里的代码应用迟迟没有记录、更新、总结。今天重新梳理一下,温故一下应用知识。

本文主要介绍内容:
1、JAVA安全领域的组成部分
2、摘要、对称加密、非对称加密的区别
3、具体实现代码

JAVA安全领域的组成部分

Java安全领域总共分为四个部分:

  • JCA(Java加密体系结构):基本的加密框架,如证书、数字签名、消息摘要、密钥对产生器。
  • JCE(Java加密扩展包):在JCA的基础上进行拓展,提供了各种加密算法、消息摘要算法和密钥管理等功能。包括DES\AES\RSA\DSA等等算法,都是由JCE来提供的,JCE的实现主要在javax.cryptpo包(及其子包)中。
  • JSSE(Java安全套接字扩展包):提供了基于SSL(安全套接字层)的加密功能。在网络的传输过程中,信息会经过多个主机(很可能其中一台被窃听),最终传送给接受者,这是不安全的。这种确保网络通信安全的服务就是由JSSE来提供的。
  • JAAS(Java鉴别与安全服务):提供了在Java平台上进行用户身份鉴别的功能。

JAC和JCE是Java平台提供用于安全和加密服务的两组API。它们不执行任何算法,他们只是连接应用和实际算法实现程序的一直接口。软件开发商可以根据JCE接口将各种算法实现后,打包成一个Provider(安全提供者),动态地加载到Java运行环境。下面展示一下如何查看JDK自带的一些提供者以及其提供的算法。

public void provider() {
        for (Provider provider : Security.getProviders()) {
            System.out.println(provider);
            for (Map.Entry<Object, Object> entry : provider.entrySet()) {
                System.out.println("\t" + entry.getValue());
            }
        }
    }

这里写图片描述

Java安全体系安全不仅支持来自Sun官方的提供者,同时也可以配置第三方安全提供者以扩展相应的算法实现。

安全提供者实现了两个抽象的概念:引擎和算法。引擎可以理解为操作,如加密、解密等。算法则定义了如何操作如何执行,如一个算法可以理解为引擎的具体实现。当然,一个算法可以有多种实现方式,这就意味着同一个算法可以和多个引擎具有不同的实现。

摘要、对称加密、非对称加密的区别

  • 摘要:采用单向加密算法,比如MD5\SHA\MAC等,这是一种数据完整性的加密,这种单向加密一般我们称为摘要,而不是纯意义上的加密。防止数据在传输过程中被篡改,因为摘要不可逆的,比较常见的场景,某会员系统里,会员密码信息都是通过摘要入库的,验证密码是否一致,也是通过对比摘要,这保护了用户密码的安全性。

  • 对称加密:对称加密体制要求加密与解密使用同一个共享密钥,解密是加密的逆运算,由于双方共享同一个密钥,就要求必须在通信前商定该密钥,并妥善保管。我们在网络中传输密钥时,往往为了密钥的安全性,再对密钥进行一次非对称加密。对称加密有两种方式,一种是基于固定密钥的加密与解密,另一种是基于随机源密钥的加密与解密。这两种方式在后面均会以代码形式讲解。常用的一些对称加密如DES\AES\三重DES等。从底层加密原理角度,

  • 非对称加密:非对称加密体制的加密密钥和解密密钥不同,一个公开,称为公钥;一个保密,称为私钥。因此,通信双方都有一对自己的公私钥,私钥自己保管好,公钥提供给对方。非对称加密一般有两种
    其一,进行数据认证(鉴权)服务校验,即对发送数据方是否是我们所期望的那个做验证。私钥加签,公钥验签。
    其二,对数据进行加密,公钥加密,私钥解密。由于非对称加密算法的低效,所以各密码机构主张对称加 密算法和非对称加密算法结合,用对称加密算法加密内容,用非对称加密算法加密对称算法的密钥。在算法设计上,非对称加密算法对待加密数据长度要求极为苛刻。比如,RSA算法要求待加密数据长度不得超过53个字节。所以,非对称加密主要用于交换对称加密的秘密密钥,而非数据内容上的加密。

常用的一些非对称加密如DSA\RSA\ECDSA等。

具体实现代码

1、摘要实现

public void messageDigest() throws Exception {
        //初始化摘要引擎,指定provider来源及摘要算法
        MessageDigest messageDigest = MessageDigest.getInstance("MD5", "SUN");
        byte[] bytes = new String("comeonboby").getBytes();
        messageDigest.update(bytes);
        //执行消息摘要
        byte[] bytesFinal = messageDigest.digest();
        System.out.println("摘要:" + Arrays.toString(bytesFinal));
        messageDigest.update(bytesFinal);
        //转换成十六进制字符串
        int j = 0;
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值