public static AsymmetricEncrypt getEncryptProvider(
      String providerClassName, String providerParameter) {
    if (asymmetricEncrypt.get() == null) {
      synchronized (AsymmetricEncrypt.class) {
        if (asymmetricEncrypt.get() == null) {

          try {
            Class<?> providerClass =
                getClassLoaderForClass(AsymmetricEncrypt.class).loadClass(providerClassName);
            asymmetricEncrypt.set(
                (AsymmetricEncrypt) providerClass.getDeclaredConstructor().newInstance());
            asymmetricEncrypt.get().init(providerParameter);
          } catch (ClassNotFoundException
              | NoSuchMethodException
              | InstantiationException
              | IllegalAccessException
              | InvocationTargetException e) {
            throw new EncryptDecryptException(e);
          }
        }
      }
    }
    return asymmetricEncrypt.get();
  }
load encrypt provider class for encrypt or decrypt password.

@param providerClassName encrypt class name
@param providerParameter provider parameter
@return AsymmetricEncrypt instance
iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/security/encrypt/AsymmetricEncryptFactory.java