遗传算法可用什么算法代替_获取可用密码算法的列表
遗传算法可用什么算法代替
您如何了解可用的密码算法? 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
遗传算法可用什么算法代替
遗传算法可用什么算法代替_获取可用密码算法的列表相关推荐
- 存储器的分配与回收算法实现_垃圾内存回收算法
(给算法爱好者加星标,修炼编程内功) 来源:施懿民 https://zhuanlan.zhihu.com/p/20712073 常见的垃圾回收算法有引用计数法(Reference Counting). ...
- 先来先服务算法代码_一致性哈希算法编写
今天我想先给大家科普下一致性哈希算法这块,因为我下一篇文章关于缓存的高可用需要用到这个,但是又不能直接在里面写太多的代码以及关于一致性hash原理的解读,这样会失去对于缓存高可用的理解而且会造成文章很 ...
- java动态分区分配算法,操作系统_动态分区分配算法课程设计_java版
<操作系统_动态分区分配算法课程设计_java版>由会员分享,可在线阅读,更多相关<操作系统_动态分区分配算法课程设计_java版(13页珍藏版)>请在人人文库网上搜索. 1. ...
- 进程handle获取线程_获取进程中的线程列表
进程handle获取线程 The System.Diagnostics namespace contains functions that allow you to manage processes, ...
- java 哈希算法_选择Java密码算法第1部分-哈希
java 哈希算法 抽象 这是涵盖Java加密算法的三部分博客系列文章的第1部分. 该系列涵盖如何实现以下功能: 使用SHA–512散列 使用AES–256的单密钥对称加密 使用RSA–4096的公钥 ...
- 操作系统hpf算法事例_操作系统中常见算法汇总
一.常见作业调度(高级调度)算法 1.先来先服务调度算法(FCFS):就是按照各个作业进入系统的自然次序来调度作业.这种调度算法的优点是实现简单,公平.其缺点是没有考虑到系统中各种资源的综合使用情况, ...
- fifo算法模拟_我是怎样学习算法的?(V1.0)
我相信很多人都是因为找工作才去看数据结构与算法,我自己也是出于这个目的.我自己在学习数据结构和算法上走了很多弯路,原因就是没有系统地的去学习.看了很多书,刷了很多题,浪费了不少时间,所以希望看到这篇文 ...
- java获取文件目录列表_获取目录中的文件列表
我正在开发一个C项目,我需要获取目录中的文件列表 . 我正在使用dirent.h但是在使用它时遇到了一些问题,我正在Linux下构建程序 . 当我尝试构建程序时,我收到以下错误 myClass:err ...
- java算法学不会_怪不得我学不会算法,原来是姿势不对!
大家好,今天给大家推荐一个算法可视化网站. 我们都知道,在人体的直接感官体验上,动画与图形相对于文字代码往往能带来更有冲击感的视觉效果,也更容易加深大脑对某项事物的认知程度. 而像算法这类,拥有完整逻 ...
最新文章
- clob存base64文件存不进去_Kafka 和 RocketMQ 底层存储之那些你不知道的事
- GCD介绍(三): Dispatch Sources
- 推荐系统中的召回算法--协同过滤
- boost::python::pointee相关的测试程序
- android 推送的小图标,android - 推送通知中没有声音并且没有自定义的小图标 - 堆栈内存溢出...
- kubernetes常用命令整理
- ASP.NET---动态生成Word文档
- hdu 1213 “How Many Tables”(并查集基本到优化)
- DDD领域驱动设计实战(四)-值对象
- 珍藏30年的网站都在这了,自媒体运营必不可少
- Python语言程序设计基础_答案_前言_通识教育必修课程_上海师范大学
- JDBC(Java数据库连接)
- 狗生活在陆地上 java,第四晚,生活在陆地上的鱼
- 湖北武汉劳务员培训劳务员的现场管理建筑七大员培训
- java超级计算器,jdk自带类
- 统计学第四周-概率分布
- 【ModuleNotFoundError 与 ImportError】之 most likely due to a circular import
- 自动化测试框架详解【2022】
- 公共钥匙盒 Java算法
- 线性代数 --- 投影Projection与Cauthy-Schwarz柯西不等式(个人学习笔记)