最近初步接触了下Java加密和数字签名的相关内容,我学习的过程大概分五步:
1)消息摘要
2)私钥加密
3)公钥加密
4)数字签名
5)数字证书
我个人认为学习编程最快的方法就是实际结合理论(即先实际在理论)代码自己跑跑看,调一调,发现问题或奇怪的地方在去找相关资料查查。比从头到尾看一堆理论然后再理论结合实际(先理论再实际)要好。当然了,纯个人观点,嘿嘿。
网上相关的说明和代码有很多,我也只是东抄西抄,然后再加点注释(没人教,都是自己瞎理解的,也不知道理解的对不对,还需要朋友们多多指正),代码如下(这是1消息摘要部分),直接就能跑,希望能为刚刚接触这个的朋友们省点事
package security;
import java.security.MessageDigest;
/**
* 消息摘要是一种与消息认证码结合使用以确保消息完整性的技术
* 目前广泛使用的算法有MD4、MD5、SHA-1
* 在java中进行消息摘要很简单, java.security.MessageDigest提供了一个简易的操作方法,如下
* 注意:消息摘要是单向的
*/
public class MessageDigestExample {
public static void main(String[] args) throws Exception {
String beforeDegist = "asdf";
System.out.println("摘要前:"+beforeDegist);
//初始信息要转换成字节流的形式
byte[] plainText = beforeDegist.getBytes("UTF8");
//使用getInstance("算法")来获得消息摘要,这里使用SHA-1的160位算法
// MessageDigest messageDigest = MessageDigest.getInstance("SHA-1");
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
// System.out.println("\n" + messageDigest.getProvider().getInfo());
//开始使用算法
messageDigest.update(plainText);
//输出算法运算结果
String afterDegist = new String(messageDigest.digest(),"UTF8");
System.out.println("摘要后:"+afterDegist);
}
}
分享到:
相关推荐
java通信安全主要包括:md5 密码加密与验证 对称加密与解密 非对称加密以解密 基于MD5信息摘要算法实现密码加密与验证 凯撒加密算法 数字签名与验证 消息验证码 消息摘要 所有程序都经过了测试
Java加密和数字签名编程是Java开发中的重要领域,主要用于数据安全和身份验证。在这个快速入门教程中,我们将探讨Java如何实现这些功能,并提供基础实践。 一、Java加密 1. 密码学基础:了解对称加密(如AES)和非...
java关于加密的算法demo代码(Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法) JAVA安全实现三种方式: 1.JDK 2.Commons Codec 3.Bouncy Castle 一。非对称加密算法: 1.DH 2.RSA 3.ELGamal 二。...
Java加密和数字签名编程是信息安全领域中的重要技术,它们在软件开发中扮演着不可或缺的角色,尤其是在保护数据安全、验证信息完整性和确保身份真实性方面。在Java中,这些功能主要通过Java Cryptography ...
数字签名是使用私钥加密和消息摘要来确保消息的完整性和机密性。Java 中提供了 `java.security.Signature` 类来实现数字签名。 JDK 1.5 的安全性改进 JDK 1.5 中对安全性方面进行了很大的改进,提供了对 RSA 算法...
数字签名算法是指使用非对称加密算法和消息摘要算法结合的算法,用于生成和验证数字签名。 1. 消息摘要算法:消息摘要算法是指将任意长度的消息压缩成固定长度的摘要信息的算法。常见的消息摘要算法有 SHA-1、MD5 ...
数字签名是公钥密码学的一个关键概念,它结合了非对称加密和消息摘要技术,用于验证消息的完整性和发送者的身份。在Java中,`java.security.Signature`类用于处理数字签名。以下是一个简单的RSA数字签名示例: ``...
### Java 环境下IDEA加密算法及数字签名编程详解 #### 一、加密的必要性和可探究性 随着互联网技术的飞速发展,尤其是电子商务和电子政务的普及,安全加密技术的应用变得越来越广泛。在这样的背景下,对加密技术的...
总结起来,Java提供了丰富的加密和数字签名功能,包括消息摘要、私钥加密、公钥加密以及数字签名。这些技术在保护数据安全、确保消息完整性和验证发送者身份等方面发挥着重要作用。开发者可以根据具体需求选择合适的...
在实际应用中,这些国密算法和相关功能通常会结合使用,例如,使用SM2生成公私钥对,用SM3计算消息的哈希值,然后用SM2的私钥进行数字签名,最后用SM2的公钥和SM3的哈希值验证签名。同时,数字证书可以用来封装和...
SHA1是一种广泛使用的哈希函数,它在信息安全领域扮演着重要的角色,特别是在数据校验、密码存储和数字签名等方面。在Java中实现SHA1加密,是确保数据安全性和完整性的一个常见做法,尤其在与微信支付接口交互时,...
签名加密是一种常见的安全措施,它结合了数字签名和加密技术,用于验证数据的完整性和来源。 首先,我们来理解一下什么是MD5签名。MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,可以将任意长度的...
Java加密算法和数字签名在IT领域中扮演着至关重要的角色,尤其在网络安全、数据保护以及身份验证方面。本文将深入探讨这些概念,并结合提供的标签MD5、Base64、RSA和DES,阐述它们在实际应用中的工作原理和使用场景...
(2)发送方用自己的私钥加密生成的信息生成发送方的数字签名,发送方把这个数字签名作为发送信息的附件和明文信息,一同用接收方的公钥进行加密,将加密后的密文一同发送给接收方; (3)接收方首先把接收到的密文...
通过理解和实践这个Java数字签名程序,我们可以更深入地了解数字签名的实现细节,这对于从事信息安全、区块链、加密通信等领域的工作至关重要。同时,对于Java程序员来说,熟悉这些安全相关的库和工具也能够提升他们...
数字签名是一种带有密钥(公钥、私钥)的消息摘要算法。其主要功能是验证数据完整性、认证数据来源、抗否认。在数字签名中,私钥用于签名,而公钥用于验证。常用的数字签名算法有RSA、DSA、ECDSA等。 RSA介绍 RSA...
接收方收到消息和数字签名后,使用发送方的公钥解密数字签名,再对原始消息计算MD5值,如果两者一致,则证明消息未被篡改且来自可信来源。 C语言实现MD5数字签名通常涉及到以下步骤: 1. 引入MD5库,如`openssl`库...