BouncyCastle - Java加密与安全
BouncyCastle什么是BouncyCastle?1. 它是第三方提供的一组加密提供方2. 他提供了JDK没有提供的算法,例如RipeMD160哈希算法3. 他的官方网站是: http://www.bouncycastle.org/
我们如何使用第三方提供的算法呢?例如我们要使用RipeMD160算法1. 首先我们要把第三方jar包添加到classpath,然后我们通过Security.addProvider,提供BouncyCastleProvider这个实例,这样我们就可以注册一个第三方提供方,紧接着我们就可以使用JDK提供的使用接口,来使用各种算法,例如我们只要使用MessageDigest.getInstance,然后传入RipeMD160,我们就可以使用BouncyCastle提供的摘要算法
package com.learn.securl;import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.Security;import org.bouncycastle.jce.provider.BouncyCastleProvider;public class DigestDemo {public static byte[] digest(String hashAlgorithm, byte[] input) {MessageDigest md = null;try {md = MessageDigest.getInstance(hashAlgorithm);} catch (NoSuchAlgorithmException e) {e.printStackTrace();}md.update(input);return md.digest();}public static String bytesToHexString(byte... src) {StringBuilder stringBuilder = new StringBuilder();if (src == null || src.length <= 0) {return null;}for (int i = 0; i < src.length; i++) {int v = src[i] & 0xFF;String hv = Integer.toHexString(v);if (hv.length() < 2) {stringBuilder.append(0);}stringBuilder.append(hv);}return stringBuilder.toString();}/*** MD5,SHA1,SHA-256都是JDK自带的摘要算法* 而RipeMD160不是JDK自带的* 所以他会报错* NoSuchAlgorithmException: RipeMD160 MessageDigest not available* BouncyCastle他提供了RipeMD160的算法* 如果我们要使用BouncyCastle的话* 首先我们要把BouncyCastle的jar包bcprov-jdk15on-1.55.jar放到classpath中* <dependency>* <groupId>org.bouncycastle</groupId>* <artifactId>bcprov-jdk15on</artifactId>* <version>1.56</version>* </dependency>* @param args* @throws Exception*/public static void main(String[] args) throws Exception {/*** 把BouncyCastle作为Provider添加到java.security* 我们在Security.addProvider中把BouncyCastle添加为Provider* 20: 31a78b8a9aa93f70dd225e52eaaf67d942e44ce9* 这个时候我们就可以看到RipeMD160摘要可以被正确的计算出来*/Security.addProvider(new BouncyCastleProvider());String s = "Java摘要算法测试";byte[] input = s.getBytes("UTF-8");byte[] r1 = digest("MD5",input);System.out.println(r1.length + ": " + bytesToHexString(r1));byte[] r2 = digest("SHA-1",input);System.out.println(r2.length + ": " + bytesToHexString(r2));byte[] r3 = digest("SHA-256",input);System.out.println(r3.length + ": " + bytesToHexString(r3));byte[] r4 = digest("RipeMD160",input);System.out.println(r4.length + ": " + bytesToHexString(r4));}
}
最后我们总结一下:1. BouncyCastle是第三方算法提供商2. 他提供了JDK没有提供的算法3. 我们在使用第三方算法前,需要通过Security.setProvider进行注册
BouncyCastle - Java加密与安全相关推荐
- java加密框架_Java加密解密(一)Java加密体系基础
标签: Java加密解密(一)Java加密体系基础 1. JCA(Java Cryptography Architecture) 提供基本的加密框架,如证书,数字签名,消息摘要和密钥对生成器.其主要实 ...
- Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA
[最简单的加密] 1.简单的概念 明文:加密前的信息 密文:机密后的信息 算法:加密或解密的算法 密钥:算法使用的钥匙(读作miyao,正确应该是miyue,但是大家都读miyao) 2.简单的例子 ...
- Java加密与解密笔记(三) 非对称加密
非对称的特点是加密和解密时使用的是不同的钥匙.密钥分为公钥和私钥,用公钥加密的数据只能用私钥进行解密,反之亦然. 另外,密钥还可以用于数字签名.数字签名跟上文说的消息摘要是一个道理,通过一定方法对数据 ...
- Java 加密 AES 对称加密算法
版权声明:本文为博主原创文章,未经博主允许不得转载. [AES] 一种对称加密算法,DES的取代者. 加密相关文章见:Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES R ...
- Java加密解密入门
一 概述 Java加密解密概述 Java安全领域分为四个部分:JCA-Java加密体系结构:JCE-Java加密扩展包:JSSE-Java安全套接字扩展包:JAAS-Java鉴别与安全服务. JCA提 ...
- java中解密技术是什么_详解Java 加密解密技术的分类和归纳
这篇文章主要介绍了Java加密解密基础分类方法汇总的相关资料,需要的朋友可以参考下 Java 加密解密基础: 密码学是研究编制密码和破译密码的技术科学.研究密码变化的客观规律,应用于编制密码以保守通信 ...
- java 加密解密编程,java 加密解密容易实现
当前位置:我的异常网» 编程 » java 加密解密容易实现 java 加密解密容易实现 www.myexceptions.net 网友分享于:2013-10-27 浏览:3次 java 加密解密 ...
- 安卓逆向_25 --- 密码学 之 《Java加密与解密的艺术》
<Java加密与解密的艺术>中文 PDF版 :https://www.jb51.net/books/65048.html 1. 密码学应用 :https://www.bilibili.co ...
- Java 加密解密之对称加密算法PBE
JAVA 加密解密系列 Java 加密解密基础 Java byte数组与十六进制字符串互转 Java BASE64加密解密 Java 加密解密之消息摘要算法(MD5 SHA MAC) Java 加密 ...
最新文章
- STC89C52RC片内资源介绍
- 为了不再颓废,不再堕落......转操作系统为ubuntu,转语言环境为java...
- 垃圾收集 java_关于Java垃圾收集
- 队列/优先队列的应用问题
- ubuntu系统DD对拷还原报废笔记本
- 【英语之夜】遇见--Peter
- jwt如何防止token被窃取_如何使用 NodeJS 实现 JWT 原理
- 【转】SQLServer 行列互换
- jad反编译成java,Jad java反编译指令
- H3CSE园区-NTP
- 3ds Max: Substance to V-Ray Workflows 3ds Max教程:从Substance到V-Ray工作流程 Lynda课程中文字幕
- 自己总结的ITTO规律-PMP
- minus用法c语言,Minus-C 一个最小化的C语言规范
- 【STM32】OOK软解码
- 我们期待自己成为一个优秀的软件模型设计者
- c++primer plus 6 读书笔记 第四章 复合类型
- 微信小程序实现瀑布流,如何实现!
- Py2neo安装(未完待续)
- Python:1-3、注释
- 鸿蒙是另一种安卓吗,鸿蒙不是另一个安卓或者iOS!鸿蒙2.0上线倒计时