Bouncy Castle使用(一)【开始】
bouncy castle(轻量级密码术包)是一种用于 Java 平台的开放源码的轻量级密码术包;它支持大量的密码术算法,并提供JCE 1.2.1的实现。
保持Bouncy Castle项目进行
随着各种算法的更改,更新,协议中的安全问题,以及不得不为诸如CERT等组织编写供应商声明,保持Bouncy Castle项目的进行正在变成一个全职工作,我们中的几个人现在已经放弃了稳定的工作,以释放上班时间。如果您正在使用我们的软件,并且有兴趣确保在需要我们时总是在这里,有两种主要的方式可以帮助您。
第一个是通过获得支持合同或通过赞助项目的具体工作。不仅你会得到Bouncy Castle开发商的热线,咨询时间,如果需要的话可以发布警报,但是如果你愿意,我们也会公开承认你的支持。您可以在Crypto Workshop找到有关支持合同和咨询的更多信息。
其次, Bouncy Castle APIs现已由一个注册澳大利亚慈善组织,Bouncy Castle Inc,ABN 84 166 338 567正式拥有。在不考虑实际做我们做的事情的成本的同时,我们也在筹集资金允许我们获得诸如API的FIP等认证。我们可以通过PayPal,比特币或直接转账接受捐款。
当前功能列表:
- 生成和解析
PKCS-12
文件。 - X.509:V1和V3证书的生成器和解析器,V2 CRLs和属性证书。
- 由PbeUtilities支持的PBE算法:PBEwithMD2andDES-CBC, PBEwithMD2andRC2-CBC,
PBEwithMD5andDES-CBC, PBEwithMD5andRC2-CBC, PBEwithSHA1andDES-CBC,
PBEwithSHA1andRC2-CBC, PBEwithSHA-1and128bitRC4,
PBEwithSHA-1and40bitRC4, PBEwithSHA-1and3-keyDESEDE-CBC,
PBEwithSHA-1and2-keyDESEDE-CBC, PBEwithSHA-1and128bitRC2-CBC,
PBEwithSHA-1and40bitRC2-CBC, PBEwithHmacSHA-1, PBEwithHmacSHA-224,
PBEwithHmacSHA-256, PBEwithHmacRIPEMD128, PBEwithHmacRIPEMD160, and
PBEwithHmacRIPEMD256 - 由
SignerUtilities
支持的签名算法:MD2withRSA, MD4withRSA, MD5withRSA,
RIPEMD128withRSA, RIPEMD160withECDSA, RIPEMD160withRSA,
RIPEMD256withRSA, SHA-1withRSA, SHA-224withRSA,
SHA-256withRSAandMGF1, SHA-384withRSAandMGF1, SHA-512withRSAandMGF1,
SHA-1withDSA, and SHA-1withECDSA. - 对称密钥算法: AES, Blowfish, Camellia, CAST5, CAST6, ChaCha, DES, DESede,
GOST28147, HC-128, HC-256, IDEA, ISAAC, Noekeon, RC2, RC4, RC5-32,
RC5-64, RC6, Rijndael, Salsa20, SEED, Serpent, Skipjack, TEA/XTEA,
Threefish, Tnepres, Twofish, VMPC and XSalsa20. - 对称密钥模式:CBC,CFB,CTS,GOFB,OFB,OpenPGPCFB和SIC(或CTR)。
- 对称密钥填充: ISO10126d2, ISO7816d4, PKCS-5/7, TBC, X.923, and Zero Byte.
- 不对称密钥算法: ElGamal, DSA, ECDSA, NaccacheStern and RSA (with blinding).
- 非对称密钥填充/编码:ISO9796d1, OAEP, and PKCS-1.
- AEAD块密码模式:CCM,EAX,GCM和OCB。
- 摘要:GOST3411,Keccak,MD2,MD4,MD5,RIPEMD128,RIPEMD160,RIPEMD256,RIPEMD320,SHA-1,SHA-224,SHA-256,SHA-384,SHA-512,SHA3,Tiger和Whirlpool。
- XOFs:SHAKE。
- 签名机制:DSA,ECDSA,ECGOST3410,ECNR,GOST3410,ISO9796d2,PSS,RSA,X9.31-1998。
- 密钥协议:Diffie-Hellman,EC-DH,EC-MQV,J-PAKE,SRP-6a。
- Macs: CBCBlockCipher, CFBBlockCipher, CMAC, GMAC, GOST28147, HMac,
ISO9797 Alg. 3, Poly1305, SipHash, SkeinMac, VMPCMAC. - PBE生成器:
PKCS-12
和PKCS-5
- 方案1和2。 - OpenPGP(RFC 4880)
- 加密消息语法(CMS,RFC 3852),包括流式API。
- 在线证书状态协议(OCSP,RFC 2560)。
- 时间戳协议(TSP,RFC 3161)。
- TLS / DTLS客户端/服务器,最高版本1.2,支持最常见的密码和扩展,以及许多较不常见的密码。非阻塞API可用。
- 椭圆曲线密码:支持通用的
F2m
和Fp
曲线,用于许多标准化曲线的高性能定制实现。 - 读/写PEM文件,包括RSA和DSA密钥,具有各种加密功能。
- PKIX证书路径验证
编程方式读取X.509证书吊销列表(CRL)(一)应用Bouncy Castle Crypto
X.509 结构的证书被吊销后,序列号会出现在Certificate Revocation List (CRL) 中,我们可以将它另存为一个.crl的文件,就能够查看被吊销的证书信息,但.NET Framework并没有提供可对Crl进行属性访问的类(Java中提供了X509Crl),要实现这样的功能,我们得借助.NET框架之外的技术:Bouncy Castle Crypto或者Mono SDK。
先介绍如何使用Bouncy Castle Crypto(Version 1.4)读取X.509证书及吊销列表。
首先加入X.509证书所在的命名空间:
using Org.BouncyCastle.X509;
其中的几个有关的类:
X509CrlParser 用于构建一个crl对象,支持从字节数组和内存流中获取数据。
X509Crl crl对象,包含证书吊销组织、吊销证书列表、时间戳等信息。
X509CrlEntry crl对象中被吊销的证书对象。
ISet 在Org.BouncyCastle.Utilities.Collections下,X509Crl中被读取所有证书对象放在HashSet中,以ISet接口类型返回,HashSet支持迭代器。
下面是读取Crl的示例:
//获取obj
List<int> numbers = new List<int>();X509CrlParser parser = new X509CrlParser();
X509Crl crl = parser.ReadCrl((byte[])obj);
//获取所有的吊销证书
ISet crlSet = crl.GetRevokedCertificates();
if (crlSet != null && crlSet.Count > 0)
{foreach (object o in crlSet){X509CrlEntry crlEntry = (X509CrlEntry)o;int serialNumber = crlEntry.SerialNumber.IntValue;if (!numbers.Contains(serialNumber)){numbers.Add(serialNumber);}}
}
X509CrlEntry.SerialNumber.IntValue将16进制的证书序列号以10进制的Int32类型输出。
另外再提一下BC Crypto的X509Certificate类和.NET Framework下的X509Certificate2类的区别:
X509Certificate2输出证书DN信息时,属性SubjectName是将个人信息按照从小到大(姓名-组织-市-省-国家)排列,而BC Crypto的X509Certificate使用SubjectDN属性,将个人信息从大到小排列,市的标识是ST,.NET是S。如果需要根据证书生成组织结构,这个需要特别注意。
Bouncy Castle使用(一)【开始】相关推荐
- ecies算法c语言实现,Bouncy Castle算法库中ECIES算法调用示例
JRE8 + jce_policy-8, Bouncy Castle 1.50环境下调试通过 import java.security.KeyPair; import java.security.Ke ...
- Bouncy Castle Crypto API c# port
Bouncy Castle 是一种用于 Java 平台的开放源码的轻量级密码术包.它支持大量的密码术算法,并提供 JCE 1.2.1 的实现.现在有了C#的版本.下面是网站上的介绍 This port ...
- Bouncy Castle 加密库修复高危的认证绕过漏洞
聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 最近,Bouncy Castle 加密库修复了一个高危的认证绕过漏洞. 该项目建立于2000年,表示 Java 和 C# 加密中使用的 ...
- android 公钥pem编码,如何将PEM编码的Elliptic Curve公钥加载到Bouncy Castle中?
我有一个PEM编码的Elliptic Curve公钥,我正试图加载到Bouncy Castle中,到目前为止我尝试的所有内容都失败了.这是我正在尝试加载的密钥的示例: -----BEGIN PUBLI ...
- java pgp加密_基于Java Bouncy Castle的PGP加密解密示例
# re: 基于Java Bouncy Castle的PGP加密解密示例 回复 更多评论 2016-03-02 10:32 by 毛小龙 对文件进行加密 在测试类里面已经跑通了 抽取出来调用就报这 ...
- Bouncy Castle 密码包实现加解密
Bouncy Castle 介绍 Bouncy Castle API目前包括以下内容: 适用于Java和C#的轻量级加密API. Java加密扩展(JCE)和Java加密体系结构(JCA)的提供程序. ...
- 用Bouncy Castle的C#版API产生公钥和私钥
开源API链接地址:The Legion of the Bouncy Castle Bouncy Castle,简称为BC,原本是java的一个开源JCE提供者,后来也提供了C#版本的API,我下载其 ...
- 在C#中保存Bouncy Castle生成的密钥对
在用Bouncy Castle的C#版API产生公钥和私钥 中产生了一对密钥对,可以用bouncy caslte提供的API进行保存 公钥方面的3个类,具体代码根据命名空间自行查看其源代码: Org. ...
- Java 加密库 Bouncy Castle安装使用教程
Bouncy Castle 简介 Bouncy Castle 是一个流行的开源加密库,提供了丰富的密码学算法和安全性服务的实现.它以 Java 语言为基础,并支持许多不同的平台和编程语言. Bounc ...
- Bouncy Castle的Java JCE安装方法
Bouncy Castle的Java JCE安装方法 1.去官方站点下载Bouncy Castle的JCE Provider包 bcprov-ext-jdk15-145.jar 2.把 jar文件复制 ...
最新文章
- mysql布隆过滤器源码_通过实例解析布隆过滤器工作原理及实例
- python如何把两个dataframe合并成一个
- mysql怎么防止误操作_MySQL数据库防止人为误操作的实例讲解
- python的pandas库内的函数_python 中NumPy和Pandas工具包中的函数使用笔记(方便自己查找)...
- 闭包函数python_Python--函数对象闭包函数
- 大白话5分钟带你走进人工智能-第二十六节决策树系列之Cart回归树及其参数(5)...
- Spring和JSF集成:选择项目
- 前端开发攻城狮必须知道的开发环境和插件
- python 京东签到在哪里_python 使用selenium登陆京东签到哪京豆
- 在线JSON美化格式化工具
- 助焊剂各成分作用浅析
- 数据分析--PEG策略(选股)
- 关于n维和n-1维欧式空间的理解(转)
- 【ansys】如何隐藏网格?不显示网格?在仿真结果中隐藏网格?
- jsp_servle(3)
- Android persist类property 知识点
- 微信小程序的左右布局
- 2022年机器人工程毕业设计选题情况
- DNS优化工具 namebench
- ucore lab4
热门文章
- centos配置虚拟主机(站点)
- 安装 adobe 软件 photoshop 遇到 81错误 mac
- 计算机安全的最后一道防线,网络安全的第一道防线是(图文)
- 巨星故事之永恒答案:强者才能生存!斗士艾弗森
- Excel 录制宏 - 制作工资条
- 【冷启动】快手《POSO: Personalized Cold Start Modules for Large-scale Recommender Systems》
- 3月第1周易盾业务风控关注 | 治理升级,让“标题党”、流量造假等网络乱象走开
- 判断char*是否为utf8编码
- 2021-12-23 714. 买卖股票的时机含手续费(动态规划)
- dmp(数据管理平台)是什么?