热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java中的SecureRandomgetInstance()方法,带示例

Java中的SecureRandomgetInstance()方法,带示例

Java 中的 SecureRandom getInstance()方法,带示例

原文:https://www . geesforgeks . org/secureandom-getinstance-method-in-Java-with-examples/


字符串算法

Java . security . SecureRandom类的 getInstance() 方法用于返回实现指定随机数生成器(RNG)算法的 secureandom 对象。

此方法遍历注册的安全提供程序列表,从最首选的提供程序开始。返回一个新的安全对象,该对象封装了来自第一个支持指定算法的提供程序的安全对象。

语法:

public static SecureRandom
getInstance( String algorithm )
throws NoSuchAlgorithmException

参数:该方法以标准 RNG 算法为参数。

返回值:这个方法返回新的 SecureRandom 对象。

异常:如果没有提供程序支持指定算法的 SecureRandomSpi 实现,此方法将引发nosuchalgorithm 异常

注:


  1. 这些程序不会在联机集成开发环境中运行。

  2. 每次安全随机类都会产生随机输出。

以下是说明 getInstance() 方法的示例:

例 1:

// Java program to demonstrate
// nextBytes() method
import java.security.*;
import java.util.*;
public class GFG1 {
    public static void main(String[] argv)
    {
        try {
            // creating the object of SecureRandom and getting instance
            // By using getInstance() method
            SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
            // Declaring the string variable
            String str = "Tajmahal";
            // Declaring the byte Array
            // converting string into byte
            byte[] b = str.getBytes();
            // printing the byte array
            System.out.println("Byte array before operation : "
                               + Arrays.toString(b));
            // generating user-specified number of random bytes
            // using nextBytes() method
            sr.nextBytes(b);
            // printing the new byte array
            System.out.println("Byte array after operation : "
                               + Arrays.toString(b));
        }
        catch (NoSuchAlgorithmException e) {
            System.out.println("Exception thrown : " + e);
        }
        catch (ProviderException e) {
            System.out.println("Exception thrown : " + e);
        }
    }
}

输出:

Byte array before operation : [84, 97, 106, 109, 97, 104, 97, 108]
Byte array after operation : [124, -66, -62, -5, -71, -4, 30, 16]

例 2:

// Java program to demonstrate
// getInstance() method
import java.security.*;
import java.util.*;
public class GFG1 {
    public static void main(String[] argv)
    {
        try {
            // creating the object of SecureRandom and getting instance
            // By using getInstance() method
            System.out.println("Trying to get the instance of TAJMAHAL");
            SecureRandom sr = SecureRandom.getInstance("TAJMAHAL");
            // Declaring the string variable
            String str = "Tajmahal";
            // Declaring the byte Array
            // converting string into byte
            byte[] b = str.getBytes();
            // printing the byte array
            System.out.println("Byte array before operation : "
                               + Arrays.toString(b));
            // generating user-specified number of random bytes
            // using nextBytes() method
            sr.nextBytes(b);
            // printing the new byte array
            System.out.println("Byte array after operation : "
                               + Arrays.toString(b));
        }
        catch (NoSuchAlgorithmException e) {
            System.out.println("Exception thrown : " + e);
        }
        catch (ProviderException e) {
            System.out.println("Exception thrown : " + e);
        }
    }
}

输出:

Trying to get the instance of TAJMAHAL
Exception thrown : java.security.NoSuchAlgorithmException: TAJMAHAL SecureRandom not available


getInstance(字符串算法,提供程序提供程序)

Java . security . SecureRandom类的 getInstance() 方法用于返回实现指定随机数生成器(RNG)算法的 secureandom 对象。
返回一个新的安全对象,该对象封装了来自指定提供程序对象的安全对象接口实现。请注意,指定的提供程序对象不必在提供程序列表中注册。

返回的安全对象尚未植入。若要为返回的对象设定种子,请调用 setSeed 方法。如果不调用 setSeed,对 nextBytes 的第一次调用将强制 SecureRandom 对象对自身进行种子化。如果之前调用了 setSeed,则不会发生这种自播种。

语法:

public static SecureRandom
getInstance( String algorithm, Provider provider )
throws NoSuchAlgorithmException

参数:该方法将以下参数作为参数


  • 算法–RNG 算法的名称。

  • 提供商–提供商。

返回值:该方法返回新的 SecureRandom 对象

异常:该方法抛出以下异常


  • no suchalgorithm exception–如果指定的提供程序对象中没有指定算法的 SecureRandomSpi 实现,则为。

  • IllegalArgumentException – if the specified provider is null.

    注:


    1. 这些程序不会在联机集成开发环境中运行。

    2. 每次安全随机类都会产生随机输出。

    以下是说明 getInstance() 方法的示例:

    例 1:

    ```java
    // Java program to demonstrate
    // getInstance() method

    import java.security.;
    import java.util.
    ;

    public class GFG1 {
        public static void main(String[] argv)
        {
            try {
                // creating SecureRandom object
                SecureRandom sr1 = new SecureRandom(new byte[] { 1, 2, 3, 4 });

    // creating Provider object
                Provider pd = sr1.getProvider();

    // creating the object of SecureRandom and getting instance
                // By using getInstance() method

    SecureRandom sr = SecureRandom.getInstance("SHA1PRNG", pd);

    // Declaring the string variable
                String str = "Tajmahal";

    // Declaring the byte Array
                // converting string into byte
                byte[] b = str.getBytes();

    // printing the byte array
                System.out.println("Byte array before operation : "
                                   + Arrays.toString(b));

    // generating user-specified number of random bytes
                // using nextBytes() method
                sr.nextBytes(b);

    // printing the new byte array
                System.out.println("Byte array after operation : "
                                   + Arrays.toString(b));
            }

    catch (NoSuchAlgorithmException e) {

    System.out.println("Exception thrown : " + e);
            }
            catch (ProviderException e) {

    System.out.println("Exception thrown : " + e);
            }
        }
    }
    ```

    输出:

    java
    Byte array before operation : [84, 97, 106, 109, 97, 104, 97, 108]
    Byte array after operation : [109, 55, 116, -15, -83, 126, -128, 88]

    注意:以下程序在联机 IDE 中产生以下异常
    抛出异常:Java . security . providerexception:init 失败

    例 2:

    ```java
    // Java program to demonstrate
    // getInstance() method

    import java.security.;
    import java.util.
    ;

    public class GFG1 {
        public static void main(String[] argv)
        {
            try {
                // creating SecureRandom object
                SecureRandom sr1 = new SecureRandom(new byte[] { 1, 2, 3, 4 });

    // creating Provider object
                Provider pd = sr1.getProvider();

    // creating the object of SecureRandom and getting instance
                // By using getInstance() method
                System.out.println("Trying to getting the instance of TAJMAHAL ");
                SecureRandom sr = SecureRandom.getInstance("TAJMAHAL", pd);

    // Declaring the string variable
                String str = "Tajmahal";

    // Declaring the byte Array
                // converting string into byte
                byte[] b = str.getBytes();

    // printing the byte array
                System.out.println("Byte array before operation : "
                                   + Arrays.toString(b));

    // generating user-specified number of random bytes
                // using nextBytes() method
                sr.nextBytes(b);

    // printing the new byte array
                System.out.println("Byte array after operation : "
                                   + Arrays.toString(b));
            }

    catch (NoSuchAlgorithmException e) {

    System.out.println("Exception thrown : " + e);
            }
            catch (ProviderException e) {

    System.out.println("Exception thrown : " + e);
            }
        }
    }
    ```

    输出:

    java
    Trying to getting the instance of TAJMAHAL
    Exception thrown : java.security.NoSuchAlgorithmException: no such algorithm: TAJMAHAL for provider SUN

    getInstance(字符串算法,字符串提供程序)

    Java . security . SecureRandom类的 getInstance() 方法用于返回实现指定随机数生成器(RNG)算法的 secureandom 对象。

    返回一个新的安全对象,该对象封装了来自指定提供程序的安全对象接口实现。指定的提供程序必须在安全提供程序列表中注册。

    语法:

    java
    public static SecureRandom
    getInstance( String algorithm, String provider )
    throws NoSuchAlgorithmException, NoSuchProviderException

    参数:该方法将以下参数作为参数


    • 算法–RNG 算法的名称。有关标准 RNG 算法名称的信息,请参见 Java 加密体系结构标准算法名称文档中的安全域部分。

    • 提供者–提供者的名称。

    返回值:该方法返回新的 SecureRandom 对象

    异常:该方法抛出以下异常


    • no suchalgorithm exception–如果指定的提供程序无法提供指定算法的 SecureRandomSpi 实现。

    • NoSuchProviderException–如果指定的提供商未在安全提供商列表中注册。

    • IllegalArgumentException–如果提供程序名称为空。

    注:


    1. 这些程序不会在联机集成开发环境中运行。

    2. 每次安全随机类都会产生随机输出。

    以下是说明 getInstance() 方法的示例:

    例 1:

    ```java
    // Java program to demonstrate
    // getInstance() method

    import java.security.;
    import java.util.
    ;

    public class GFG1 {
        public static void
            main(String[] argv)
                throws NoSuchAlgorithmException,
                       NoSuchProviderException
        {
            try {
                // creating SecureRandom object
                SecureRandom sr1 = new SecureRandom(new byte[] { 1, 2, 3, 4 });

    // creating Provider object
                Provider pd = sr1.getProvider();

    // getting provider name
                // by using method getname()
                String provider = pd.getName();

    // getting algorithm name
                // by using     getAlgorithm() mathod
                String algo = sr1.getAlgorithm();

    // creating the object of SecureRandom and getting instance
                // By using getInstance() method
                SecureRandom sr = SecureRandom.getInstance(algo, provider);

    // Declaring the string variable
                String str = "Tajmahal";

    // Declaring the byte Array
                // converting string into byte
                byte[] b = str.getBytes();

    // printing the byte array
                System.out.println("Byte array before operation : "
                                   + Arrays.toString(b));

    // generating user-specified number of random bytes
                // using nextBytes() method
                sr.nextBytes(b);

    // printing the new byte array
                System.out.println("Byte array after operation : "
                                   + Arrays.toString(b));
            }

    catch (NoSuchAlgorithmException e) {

    System.out.println("Exception thrown : " + e);
            }
            catch (ProviderException e) {

    System.out.println("Exception thrown : " + e);
            }
        }
    }
    ```

    输出:

    java
    Byte array before operation : [84, 97, 106, 109, 97, 104, 97, 108]
    Byte array after operation : [-11, 81, 39, 67, -95, -51, 115, -18]

    例 2:

    ```java
    // Java program to demonstrate
    // getInstance() method

    import java.security.;
    import java.util.
    ;

    public class GFG1 {
        public static void
            main(String[] argv)
                throws NoSuchAlgorithmException,
                       NoSuchProviderException
        {
            try {
                // creating SecureRandom object
                SecureRandom sr1 = new SecureRandom(new byte[] { 1, 2, 3, 4 });

    // creating Provider object
                Provider pd = sr1.getProvider();

    // getting provider name
                // by using method getname()
                String provider = pd.getName();

    // creating the object of SecureRandom and getting instance
                // By using getInstance() method
                System.out.println("Trying to take TAJMAHAL as a algorithm");
                SecureRandom sr = SecureRandom.getInstance("TAJMAHAL", provider);

    // Declaring the string variable
                String str = "Tajmahal";

    // Declaring the byte Array
                // converting string into byte
                byte[] b = str.getBytes();

    // printing the byte array
                System.out.println("Byte array before operation : "
                                   + Arrays.toString(b));

    // generating user-specified number of random bytes
                // using nextBytes() method
                sr.nextBytes(b);

    // printing the new byte array
                System.out.println("Byte array after operation : "
                                   + Arrays.toString(b));
            }

    catch (NoSuchAlgorithmException e) {

    System.out.println("Exception thrown : " + e);
            }
            catch (ProviderException e) {

    System.out.println("Exception thrown : " + e);
            }
        }
    }
    ```

    输出:

    java
    Trying to take TAJMAHAL as a algorithm
    Exception thrown : java.security.NoSuchAlgorithmException: no such algorithm: TAJMAHAL for provider SUN

    例 3:

    ```java
    // Java program to demonstrate
    // getInstance() method

    import java.security.;
    import java.util.
    ;

    public class GFG1 {
        public static void
            main(String[] argv)
                throws NoSuchAlgorithmException,
                       NoSuchProviderException
        {
            try {
                // creating SecureRandom object
                SecureRandom sr1 = new SecureRandom(new byte[] { 1, 2, 3, 4 });

    // getting algorithm name
                // by using     getAlgorithm() mathod
                String algo = sr1.getAlgorithm();

    // creating the object of SecureRandom and getting instance
                // By using getInstance() method
                System.out.println("Trying to taking MOON as a provider");
                SecureRandom sr = SecureRandom.getInstance(algo, "MOON");

    // Declaring the string variable
                String str = "Tajmahal";

    // Declaring the byte Array
                // converting string into byte
                byte[] b = str.getBytes();

    // printing the byte array
                System.out.println("Byte array before operation : "
                                   + Arrays.toString(b));

    // generating user-specified number of random bytes
                // using nextBytes() method
                sr.nextBytes(b);

    // printing the new byte array
                System.out.println("Byte array after operation : "
                                   + Arrays.toString(b));
            }

    catch (NoSuchAlgorithmException e) {

    System.out.println("Exception thrown : " + e);
            }
            catch (NoSuchProviderException e) {

    System.out.println("Exception thrown : " + e);
            }
        }
    }
    ```

    输出:

    java
    Trying to taking MOON as a provider
    Exception thrown : java.security.NoSuchProviderException: no such provider: MOON



推荐阅读
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 深入解析SpringMVC核心组件:DispatcherServlet的工作原理
    本文详细探讨了SpringMVC的核心组件——DispatcherServlet的运作机制,旨在帮助有一定Java和Spring基础的开发人员理解HTTP请求是如何被映射到Controller并执行的。文章将解答以下问题:1. HTTP请求如何映射到Controller;2. Controller是如何被执行的。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 本文介绍 Java 中如何使用 Year 类的 atMonth 方法将年份和月份组合成 YearMonth 对象,并提供代码示例。 ... [详细]
  • 本文深入探讨了 Java 中 LocalTime 类的 isSupported() 方法,包括其功能、语法和使用示例。通过具体的代码片段,帮助读者理解如何检查特定的时间字段或单位是否被 LocalTime 类支持。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • Java 实现二维极点算法
    本文介绍了一种使用 Java 编程语言实现的二维极点算法。该算法用于从一组二维坐标中筛选出极点,适用于需要处理几何图形和空间数据的应用场景。文章不仅详细解释了算法的工作原理,还提供了完整的代码示例。 ... [详细]
  • 我有一个SpringRestController,它处理API调用的版本1。继承在SpringRestControllerpackagerest.v1;RestCon ... [详细]
  • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
  • 并发编程 12—— 任务取消与关闭 之 shutdownNow 的局限性
    Java并发编程实践目录并发编程01——ThreadLocal并发编程02——ConcurrentHashMap并发编程03——阻塞队列和生产者-消费者模式并发编程04——闭锁Co ... [详细]
author-avatar
招聘HR
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有