一个完整的类用来生成RSACryptoServiceProvider单例类(.NET)

 1 internal class CcbRsaCryptProvider
 2 {
 3         private static RSACryptoServiceProvider _providerForSign;
 4         private static RSACryptoServiceProvider _providerForVerifySign;
 5         private static readonly object SignObj = new object();
 6         private static readonly object VerifySignObj = new object();
 7
 8         internal static RSACryptoServiceProvider GetInstanceForSign(string privateKeyFile)
 9         {
10             if (null != _providerForSign) return _providerForSign;
11             lock (SignObj)
12             {
13                 if (null != _providerForSign) return _providerForSign;
14                 var provider = new RSACryptoServiceProvider();
15                 provider.FromXmlString(GetXmlContent(privateKeyFile));
16                 _providerForSign = provider;
17             }
18             return _providerForSign;
19         }
20
21         internal static RSACryptoServiceProvider GetInstanceForVerifySign(string publicKeyFile)
22         {
23             if (null != _providerForVerifySign) return _providerForVerifySign;
24             lock (VerifySignObj)
25             {
26                 if (null != _providerForVerifySign) return _providerForVerifySign;
27                 var provider = new RSACryptoServiceProvider();
28                 provider.FromXmlString(GetXmlContent(publicKeyFile));
29                 _providerForVerifySign = provider;
30             }
31             return _providerForVerifySign;
32         }
33
34         private static string GetXmlContent(string filePath)
35         {
36             return File.ReadAllText(filePath);
37         }
38
39         private CcbRsaCryptProvider()
40         {
41         }
42     }
时间: 2024-10-11 05:50:57

一个完整的类用来生成RSACryptoServiceProvider单例类(.NET)的相关文章

单例类多线程

作为设计模式理论中的Helloworld,相信学习java语言的人,都应该听说过单例模式.单例模式作为对象的一种创建模式,它的作用是确保某一个类在整个系统中只有一个实例,而且自行实例化并向整个系统提供这个实例. 由此可见,单例模式具有以下的特点: 单例类只能有一个实例. 单例类必须自己创建自己的唯一的实例. 单例类必须给所有其他对象提供这一实例. 由于Java语言的特点,使得单例模式在Java语言的实现上有自己的特点.这些特点主要表现在单例类如何将自己实例化. 饿汉式单例类 饿汉式单例类是在Ja

设计模式中饿汉式单例类和懒汉式单例类

单例模式的特点为: *单例类只有一个实例. *单例类必须自己创建自己的唯一实例. *单例类必须给所有其他对象提供这一实例. 饿汉式单例类: 而饿汉式单例类则在java语言中是最为简单的单例类,这是一个描述饿汉式单例类的类图的实现. 此类图中,此类已经将自己实例化. 源码为: package singleton; public class EagerSingleton { private static EagerSingleton instance=new EagerSingleton(); /*

C++单例模式与单例类模板

1.单例模式 (1)需求的提出:在架构设计时,某些类在整个系统生命周期中最多只能有一个对象存在(Single,Instance) (2)问题:如何定义一个类,使得这个类最多只能创建一个对象? 要控制类的对象数目,必须对外隐藏构造函数 思路: @1:将构造函数的访问属性设置为private,将拷贝构造函数,赋值操作符都声明成private的,防止对象的赋值操作,因为这个类的对象只能有一个. @2:定义instance并初始化为NULL.在类中用static type* instance的方式声明一

创建一个单例类

关于单例的概念此处不做表述,直接上代码演示如何创建一个单例类. 1 #import <Foundation/Foundation.h> 2 3 @interface MJDemo : NSObject 4 5 + (instancetype)sharedDemo; 6 7 @end 8 9 10 #import "MJDemo.h" 11 12 @implementation MJDemo 13 14 //在iOS中所有对象分配内存空间,最终都会调用allocWithZon

关于java写一个单例类(面试手写题)

package com.shundong.javacore; /** * java写一个简单的单例类 * @author shundong * */ class Singleton { //使用一个类变量来缓存曾经创建的实例 private static Singleton instance; //对构造进行隐藏(private) private Singleton(){} /** * 提供一个静态方法 * 该方法加入了自定义控制 保证只产生一个Singleton对象 * @return 返回S

SpringMVC框架Controller类就是一个单例类

Springmvc框架Controller类就是一个单例类,所以他在速度和性能上是比较优越的. 这里需要特别注意的一点是:如果一个类已经是单例类了,你就不要在手动的创建类的对象了,这种做法是不可取的,会对系统造成较大的开销.最致命的一点就是,在并发环境下,会导致查询出来的数据错乱. 一般情况下,controller中只会有service对象,因为service是接口,不会存在成员变量一说,接口嘛,只会有常量和方法,不会存在资源的抢夺问题. 原文地址:https://www.cnblogs.com

atitit.guice3&#160;绑定方式打总结生成非单例对象toInstance&#160;toProvider区别&#160;v2&#160;pb29

atitit.guice3 绑定方式打总结生成非单例对象toInstance toProvider区别 v2 pb29 1. 三 绑定方式的介绍1 2. To接口,链式绑定,用的最多的1 3. toConstructor1 4. toInstance生成的都是单例对象的...3 5. toProvider生成非单例对象3 5.2. 注解(Annotations)绑定3 5.3. 实例绑定(str,int绑定)4 5.4. 无目标绑定4 6. 参考5 重大的描述 1. 三 绑定方式的介绍 1. 在

登记式单例实现单例模式的继承(限定一个抽象类的所有子类都必须是单例)

一直都在想如何在Java写一个抽象类,让该抽象类的所有子类都限定为单例模式,一个类需要设计成单例时直接继承该抽象类,而单例的限定与实例获取交给抽象类来完成.一个传统的单例类形如一下形式: 1 public class Singleton { 2 private static final Singleton singleton = new Singleton(); 3 4 //限制产生多个对象 5 private Singleton(){ 6 } 7 8 //通过该方法获得实例对象 9 publi

C++之单例类模板

单例类模板:一个类只能有一个对象,比如超市收银系统中清点物品的仪器只有一个 设计思路: 1.构造函数,拷贝构造函数必须设计为private,防止自己生成新的对象 2.且类的指针要设计为static类型,并初始化为NULL 3.当需要使用对象时(即访问类指针) 空值:则重新分配对象 非空值:返回当前所指向的对象 代码如下 1 #include<iostream> 2 3 using namespace std; 4 5 //扫描物品的工具类 6 class SObject 7 { 8 priva