遗传算法可用什么算法代替

您如何了解可用的密码算法? Java规范列出了几种必需的密码,摘要等,但是提供程序通常提供的不止这些。

幸运的是,这很容易了解我们系统上的可用内容。

public class ListAlgorithms {public static void main(String[] args) {// Security.addProvider(new// org.bouncycastle.jce.provider.BouncyCastleProvider());// get a list of services and their respective providers.final Map<String, List<Provider>> services = new TreeMap<>();for (Provider provider : Security.getProviders()) {for (Provider.Service service : provider.getServices()) {if (services.containsKey(service.getType())) {final List<Provider> providers = services.get(service.getType());if (!providers.contains(provider)) {providers.add(provider);}} else {final List<Provider> providers = new ArrayList<>();providers.add(provider);services.put(service.getType(), providers);}}}// now get a list of algorithms and their respective providersfor (String type : services.keySet()) {final Map<String, List<Provider>> algs = new TreeMap<>();for (Provider provider : Security.getProviders()) {for (Provider.Service service : provider.getServices()) {if (service.getType().equals(type)) {final String algorithm = service.getAlgorithm();if (algs.containsKey(algorithm)) {final List<Provider> providers = algs.get(algorithm);if (!providers.contains(provider)) {providers.add(provider);}} else {final List<Provider> providers = new ArrayList<>();providers.add(provider);algs.put(algorithm, providers);}}}}// write the results to standard out.System.out.printf("%20s : %s\n", "", type);for (String algorithm : algs.keySet()) {System.out.printf("%-20s : %s\n", algorithm,Arrays.toString(algs.get(algorithm).toArray()));}System.out.println();}}
}

系统管理员可以覆盖标准密码库。 在实践中,最安全的方法是始终加载自己的加密库并如上所述手动注册,或者最好在创建新对象时将其作为可选参数传递。

演算法

有几十种标准算法。 我们最可能感兴趣的是:

对称密码

  • KeyGenerator –创建对称密钥
  • SecretKeyFactor –在对称密钥和原始字节之间转换
  • 密码 -加密密码
  • AlgorithmParameters –算法参数
  • AlgorithmParameterGernerator –算法参数

非对称密码

  • KeyPairGenerator –创建公用/专用密钥
  • KeyFactor –在密钥对和原始字节之间转换
  • 密码 -加密密码
  • 签名 –数字签名
  • AlgorithmParameters –算法参数
  • AlgorithmParameterGernerator –算法参数

文摘

  • MessageDigest –摘要(MD5,SHA1等)
  • Mac – HMAC。 像消息摘要一样,但也需要加密密钥,因此攻击者无法伪造它

证书和密钥库

  • 密钥库 – JKS,PKCS等
  • CertStore –类似于密钥库,但仅存储证书。
  • CertificateFactory –在数字证书和原始字节之间转换。

重要的是要记住,大多数算法都是为了向后兼容而提供的,不应在未开发的领域中使用。 在我撰写本文时,普遍接受的建议是:

  • 使用AES的变体。 仅在绝对确定知道不会加密一个以上的块大小(16字节)的数据时,才使用AES-ECB。
  • 即使使用AES-CBC,也应始终使用良好的随机IV。 不要使用相同的IV或容易预测的IV。
  • 不要在不对称密钥中使用少于2048位。
  • 使用SHA-256或更高版本。 MD-5被视为已损坏,SHA-1将在不久的将来被视为已损坏。
  • 使用PBKDF2WithHmacSHA1从密码/密码短语创建AES密钥。 (另请参见创建基于密码的加密密钥 。)

有些人可能想使用其他AES候选密码之一(例如, twofish )。 这些密码可能是安全的,但是如果与其他方共享文件,则可能会遇到问题,因为它们不在所需的密码套件中。

当心美国出口限制

最后,重要的是要记住,由于美国的出口限制,标准的Java发行版已经瘫痪了。 您可以通过在系统上安装标准的仅限美国的文件来获得全部功能,但是对于开发人员来说,要确认这一点已经完成就很难了。 实际上,即使不是大多数人,许多人也会使用BouncyCastle之类的第三方加密库。 许多没有经验的开发人员对此一无所知,并无意中使用了残缺的功能。

翻译自: https://www.javacodegeeks.com/2014/08/getting-a-list-of-available-cryptographic-algorithms.html

遗传算法可用什么算法代替

遗传算法可用什么算法代替_获取可用密码算法的列表相关推荐

  1. 存储器的分配与回收算法实现_垃圾内存回收算法

    (给算法爱好者加星标,修炼编程内功) 来源:施懿民 https://zhuanlan.zhihu.com/p/20712073 常见的垃圾回收算法有引用计数法(Reference Counting). ...

  2. 先来先服务算法代码_一致性哈希算法编写

    今天我想先给大家科普下一致性哈希算法这块,因为我下一篇文章关于缓存的高可用需要用到这个,但是又不能直接在里面写太多的代码以及关于一致性hash原理的解读,这样会失去对于缓存高可用的理解而且会造成文章很 ...

  3. java动态分区分配算法,操作系统_动态分区分配算法课程设计_java版

    <操作系统_动态分区分配算法课程设计_java版>由会员分享,可在线阅读,更多相关<操作系统_动态分区分配算法课程设计_java版(13页珍藏版)>请在人人文库网上搜索. 1. ...

  4. 进程handle获取线程_获取进程中的线程列表

    进程handle获取线程 The System.Diagnostics namespace contains functions that allow you to manage processes, ...

  5. java 哈希算法_选择Java密码算法第1部分-哈希

    java 哈希算法 抽象 这是涵盖Java加密算法的三部分博客系列文章的第1部分. 该系列涵盖如何实现以下功能: 使用SHA–512散列 使用AES–256的单密钥对称加密 使用RSA–4096的公钥 ...

  6. 操作系统hpf算法事例_操作系统中常见算法汇总

    一.常见作业调度(高级调度)算法 1.先来先服务调度算法(FCFS):就是按照各个作业进入系统的自然次序来调度作业.这种调度算法的优点是实现简单,公平.其缺点是没有考虑到系统中各种资源的综合使用情况, ...

  7. fifo算法模拟_我是怎样学习算法的?(V1.0)

    我相信很多人都是因为找工作才去看数据结构与算法,我自己也是出于这个目的.我自己在学习数据结构和算法上走了很多弯路,原因就是没有系统地的去学习.看了很多书,刷了很多题,浪费了不少时间,所以希望看到这篇文 ...

  8. java获取文件目录列表_获取目录中的文件列表

    我正在开发一个C项目,我需要获取目录中的文件列表 . 我正在使用dirent.h但是在使用它时遇到了一些问题,我正在Linux下构建程序 . 当我尝试构建程序时,我收到以下错误 myClass:err ...

  9. java算法学不会_怪不得我学不会算法,原来是姿势不对!

    大家好,今天给大家推荐一个算法可视化网站. 我们都知道,在人体的直接感官体验上,动画与图形相对于文字代码往往能带来更有冲击感的视觉效果,也更容易加深大脑对某项事物的认知程度. 而像算法这类,拥有完整逻 ...

最新文章

  1. clob存base64文件存不进去_Kafka 和 RocketMQ 底层存储之那些你不知道的事
  2. GCD介绍(三): Dispatch Sources
  3. 推荐系统中的召回算法--协同过滤
  4. boost::python::pointee相关的测试程序
  5. android 推送的小图标,android - 推送通知中没有声音并且没有自定义的小图标 - 堆栈内存溢出...
  6. kubernetes常用命令整理
  7. ASP.NET---动态生成Word文档
  8. hdu 1213 “How Many Tables”(并查集基本到优化)
  9. DDD领域驱动设计实战(四)-值对象
  10. 珍藏30年的网站都在这了,自媒体运营必不可少
  11. Python语言程序设计基础_答案_前言_通识教育必修课程_上海师范大学
  12. JDBC(Java数据库连接)
  13. 狗生活在陆地上 java,第四晚,生活在陆地上的鱼
  14. 湖北武汉劳务员培训劳务员的现场管理建筑七大员培训
  15. java超级计算器,jdk自带类
  16. 统计学第四周-概率分布
  17. 【ModuleNotFoundError 与 ImportError】之 most likely due to a circular import
  18. 自动化测试框架详解【2022】
  19. 公共钥匙盒 Java算法
  20. 线性代数 --- 投影Projection与Cauthy-Schwarz柯西不等式(个人学习笔记)

热门文章

  1. 数数题(计数类 DP)做题记录
  2. 【图论】Tree之最小方差树(bzoj 3754)
  3. HDU1812 - Count the Tetris
  4. 微服务为什么选Spring Cloud
  5. JavaScript学习总结(九)——Javascript面向(基于)对象编程
  6. JVM-对象的存活与死亡
  7. jdk和cglib简单理解
  8. PhotoShop基础知识
  9. jQuery动画与事件概念以及语法
  10. hibernate正向生成数据库表以及配置——hibernate.cfg.xml