返回顶部

收藏

列举使用各种加密解密算法

更多
package outofmemory.cn.snippets.core;

import java.security.Provider;
import java.security.Security;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

public class ListAvailableEncryptionDecryptionAlgorithms {

    public static void main(String[] args) {

        // get an array containing all the installed providers
        Provider[] providers = Security.getProviders();

        for (int i=0; i<providers.length; i++) {

            // get a view of the property keys contained in this provider
            Set<Object> keys = providers[i].keySet();

            for (Iterator<Object> it=keys.iterator(); it.hasNext();) {

                String key = it.next().toString();
                key = key.split(" ")[0];

                if (key.startsWith("Alg.Alias.")) {
                    // strip the alias
                    key = key.substring(10);
                }
                int index = key.indexOf('.');

                String serviceType = key.substring(0, index);

                Set<String> algorithms = getAlgorithms(serviceType);

                System.out.println(serviceType);

                for (Iterator<String> iter=algorithms.iterator(); iter.hasNext();) {
                    System.out.println("\t" + iter.next());
                }

            }

        }

    }

    private static Set<String> getAlgorithms(String serviceType) {

        Set<String> algorithms = new TreeSet<String>();

        // get an array containing all the installed providers
        Provider[] providers = Security.getProviders();

        for (int i=0; i<providers.length; i++) {

            // get a view of the property keys contained in this provider
            Set<Object> keys = providers[i].keySet();

            for (Iterator<Object> it=keys.iterator(); it.hasNext();) {

                String key = it.next().toString();
                key = key.split(" ")[0];

                if (key.startsWith(serviceType+".")) {
                    algorithms.add(key.substring(serviceType.length()+1));
                }
                else if (key.startsWith("Alg.Alias."+serviceType+".")) {
                    algorithms.add(key.substring(serviceType.length()+11));
                }

            }

        }

        return algorithms;

    }

}

标签:java,加密

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. 博主 发表 2016-08-19 04:16:14 RSA 加密解密算法 Java 实现
  2. 博主 发表 2008-01-05 08:00:00 如何用Java进行3DES加密解密
  3. 博主 发表 2008-01-05 08:00:00 如何用Java进行DES加密解密
  4. 博主 发表 2015-07-22 08:07:29 使用Java进行文本加密
  5. 博主 发表 2016-08-19 04:16:14 RSA 加密解密算法 Java 实现
  6. daimin 发表 2013-11-23 00:00:00 使用RSA在Java端私钥加密,PHP端公钥验证
  7. dormy 发表 2013-10-14 02:14:46 新浪微博Rsa2加密方式,登录
  8. daimin 发表 2013-11-23 00:00:00 使用RSA在Java端私钥加密,PHP端公钥验证
  9. Chen Zhidong 发表 2011-12-26 13:56:36 Android MD5加密类和Base64编解码类
  10. 博主 发表 2015-12-15 02:48:50 java使用apache commons codec来进行Base64加密解密
  11. zhiwei 发表 2013-04-18 23:49:19 Java基于口令的加密(PBE)
  12. Terry Zhang 发表 2014-05-19 01:33:30 [NIO.2] 同步 I/O 对比异步 I/O

发表评论