java rc2加密_Java加密:我应该使用哪些算法?

我正在研究一个需要存储静态加密的二进制信息的程序.不幸的是,我似乎无法找到一种资源来解释哪种加密方案最适合不同的应用程序.

由于加密很复杂而且我不是专家,所以我决定使用一个名为Jasypt的库来包装Java的内置加密函数.为了弄清楚我可以使用哪些算法,我写了一些单元测试.

第一个测试调用Jasypt的AlgorithmRegistry.getAllPBEAlgorithms()函数并列出所有可用的加密算法:

PBEWITHHMACSHA1ANDAES_128

PBEWITHHMACSHA1ANDAES_256

PBEWITHHMACSHA224ANDAES_128

PBEWITHHMACSHA224ANDAES_256

PBEWITHHMACSHA256ANDAES_128

PBEWITHHMACSHA256ANDAES_256

PBEWITHHMACSHA384ANDAES_128

PBEWITHHMACSHA384ANDAES_256

PBEWITHHMACSHA512ANDAES_128

PBEWITHHMACSHA512ANDAES_256

PBEWITHMD5ANDDES

PBEWITHMD5ANDTRIPLEDES

PBEWITHSHA1ANDDESEDE

PBEWITHSHA1ANDRC2_128

PBEWITHSHA1ANDRC2_40

PBEWITHSHA1ANDRC4_128

PBEWITHSHA1ANDRC4_40

在运行时,如果您尝试使用由于某种原因不支持或违反Java加密规则的算法,Jasypt将抛出EncryptionOperationNotPossibleException.有趣的是,如果我尝试使用每个“可用”算法来加密然后解密某些任意数据,并且只打印掉那些没有抛出异常的数据,我会得到这个精简列表:

PBEWITHMD5ANDDES

PBEWITHSHA1ANDDESEDE

PBEWITHSHA1ANDRC2_128

PBEWITHSHA1ANDRC2_40

PBEWITHSHA1ANDRC4_128

PBEWITHSHA1ANDRC4_40

可以通过拉入BouncyCastle JCE并通过执行Security.addProvider(new BouncyCastleProvider())来注册它来扩展可用算法列表.如果我在执行此操作后重复上一个测试,我会得到一个更大的算法列表供您选择:

PBEWITHMD2ANDDES

PBEWITHMD5AND128BITAES-CBC-OPENSSL

PBEWITHMD5AND192BITAES-CBC-OPENSSL

PBEWITHMD5AND256BITAES-CBC-OPENSSL

PBEWITHMD5ANDDES

PBEWITHMD5ANDRC2

PBEWITHSHA1ANDDES

PBEWITHSHA1ANDDESEDE

PBEWITHSHA1ANDRC2

PBEWITHSHA1ANDRC2_128

PBEWITHSHA1ANDRC2_40

PBEWITHSHA1ANDRC4_128

PBEWITHSHA1ANDRC4_40

PBEWITHSHA256AND128BITAES-CBC-BC

PBEWITHSHA256AND192BITAES-CBC-BC

PBEWITHSHA256AND256BITAES-CBC-BC

PBEWITHSHAAND128BITAES-CBC-BC

PBEWITHSHAAND128BITRC2-CBC

PBEWITHSHAAND128BITRC4

PBEWITHSHAAND192BITAES-CBC-BC

PBEWITHSHAAND2-KEYTRIPLEDES-CBC

PBEWITHSHAAND256BITAES-CBC-BC

PBEWITHSHAAND3-KEYTRIPLEDES-CBC

PBEWITHSHAAND40BITRC2-CBC

PBEWITHSHAAND40BITRC4

PBEWITHSHAANDIDEA-CBC

PBEWITHSHAANDTWOFISH-CBC

不幸的是,现在我不知道这些算法中哪一个最适合我的应用程序.我有一个暗示AES是正确的方法,看起来PBEWITHSHA256AND256BITAES-CBC-BC是具有最长密钥长度的AES实现,但我不知道去哪里确认这种怀疑.

哪些方案提供最高安全级别并且具有明显的安全问题?

编辑:我希望能够分发我的代码,而无需最终用户安装无限加密文件,因为这几乎肯定超出了不那么精通技术的用户的能力.我真正想要的是在不使用无限强度管辖权文件的情况下获得的最强加密.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值