![]() |
1
11
高级抽象?我想在Bouncy Castle图书馆中,最高层次的抽象包括:
我最熟悉的是Java版本的库。也许这段代码片段可以为您提供足够高的抽象度(例如使用AES-256加密):
编辑 哎呀,我刚刚看了你链接的文章。听起来他在谈论比我想象的更高层次的抽象(例如,“发送机密消息”)。恐怕我不太明白他在说什么。 |
![]() |
2
3
假设您在Java中编写应用程序,我建议您不要使用特定的提供者,而是在Sun的JCE(Java加密扩展)之上开发应用程序。这样做可以使您独立于任何底层提供者,也就是说,只要您使用广泛实现的密码,就可以轻松地切换提供者。它确实为您提供了一定程度的抽象,因为您不必知道实现的所有细节,并且可能会稍微保护您不使用错误的类(例如,使用没有适当填充的原始加密等),此外,Sun还提供了大量的文档和代码示例。 |
![]() |
3
2
BouncyCastle中高(ER)级别API的一个示例是CMS( Cryptographic Message Syntax )包装。这将从提供者本身发送到一个单独的JAR(bcmail)中,并写入JCE(但是,C版本是针对轻量级API编写的)。 大致来说,“发送机密消息”是由cmsendevelopedDataGenerator类实现的,您真正需要做的就是给它消息,选择加密算法(内部处理的所有细节),然后指定收件人能够读取消息的一种或多种方式:这可以基于公钥/证书Cate、共享机密、密码,甚至密钥协议协议。一封邮件可以有多个收件人,并且可以混合和匹配收件人类型。 您可以使用cmssignedatagenerator类似地发送可验证的消息。如果要签名和加密,CMS结构是可嵌套/可组合的(但顺序可能很重要)。还有cmscompresseddatagenerator和最近添加的cmsauthenticateddatagenerator。 |
![]() |
4
1
实际上,我发现这个示例使用默认的128位加密而不是256位加密。我做了一些改变:
现在变成:
它与我的客户端应用程序C++AES256加密一起工作 |
![]() |
5
1
您可以使用:
见: https://github.com/wernight/decrypt-toolbox/blob/master/dtDecrypt/Program.cs |
![]() |
6
0
JCE不能为我工作,因为我们需要256位的强度,并且不能改变系统上的Java配置以允许它。太糟糕了,BouncyCastle没有JCE那样的高级API。 “但是请注意,bouncycastle由两个库组成,即轻量级加密库和JCE提供者接口库。键大小限制由JCE层强制执行,但您不需要使用该层。如果您只是直接使用轻量级加密API,那么无论安装或未安装什么策略文件,都没有任何限制。” http://www.coderanch.com/t/420255/Security/AES-cryptoPerms-Unlimited-Cryptography |
![]() |
7
0
书 Beginning Cryptography with Java 包含基于BouncyCastle库的非常有用的示例和解释 |