int CSslClientSocket::Rand(const char *file,int dont_warn,char * outMsg) { int consider_randfile = (file == NULL); char buffer[200]; #ifdef WINDOWS // BIO_flush(bio_e); RAND_screen(); #endif if (file == NULL) file = R...
文章作者:Rainbow程序中在web页面上生成证书请求的方法有两种,分别通过调用enumProviders接口和OpenSSL接口来实现。本文为您详细介绍这两种方法并提供相应的实例源代码。 一、在web页面上生成证书请求 在本地生成的证书请求的方式适用于CA不备份私钥或者说该私钥用于签名的情况。 1、枚举CSP 生成私钥的时候是通过枚举本地的CSP进行的,这个功能只需要通过调用xenroll.dll的enumProviders接口来实现。举例如下: EnumProviders function EnumProviders()nCSPIndex=0ON ERROR resume next...
Interactive logon
Windows 2000 interactive logon
CryptAcquireContext
Acquire a handle to the default container on the card
The calling process specifies the CRYPT_MACHINE_KEYSET and CRYPT_SILENT flags
Returns handle to default container context (#C1)
CryptSetProvParam
Present t...
随着互联网和电子商务的发展,USB Key作为网络用户身份识别和数据保护的"电子钥匙",正在被越来越多的用户所认识和使用。本文对USB Key的产生和未来的发展趋势作了一个简单的介绍。
目前市场上见到的USB Key 按照硬件芯片不同可以分为使用智能卡芯片的和不使用智能卡芯片两种,按照CPU是否内置加密算法又可以分为带算法和不带算法的USB Key。一般我们把不带加密算法的称为存储型USB Key,带加密算法的称为加密型USB Key。
软件保护思想的发展催生了USB Key
USB Key 这个概念最早是由加密锁厂家提出来的,加密锁是用来防止软件盗版的硬件产品,加密锁的概念...
PKCS7_ENVELOPE. enveloped在openssl中的定义如下:
typedef struct pkcs7_enveloped_st
{
ASN1_INTEGER *version; /* version 0 */
STACK_OF(PKCS7_RECIP_INFO) *recipientinfo;
PKCS7_ENC_CONTENT *enc_data;
} PKCS7_ENVELOPE;
enveloped-data内容类型由任意类型的加密内容和加密的一个/多个接收者的内容加密...
PKCS7_SIGNED.sign在openssl中的定义如下:
typedef struct pkcs7_signed_st
{
ASN1_INTEGER *version; /* version 1 */
STACK_OF(X509_ALGOR) *md_algs; /* md used */
STACK_OF(X509) *cert; /* [ 0 ] */
STACK_OF(X509_CRL) *crl; /* [ 1 ] */
STACK_OF(PKCS7_SIGNER_INFO) *signer_info;
struct pkcs7_st *contents;...
openssl之EVP系列之3---EVP_Encrypt支持的对称加密算法列表 ---根据openssl doc\crypto\EVP_EncryptInit.pod和doc\ssleay.txt cipher.doc部分翻译和自己的理解写成作者:DragonKing
Mail: wzhah@263.net
发布于:http://openssl.126.com 之openssl专业论坛
版本:openssl-0.9.7 openssl对称加密算法的格式都以函数形式提供,其实该函数返回一个该算法的结构体,其形式一般如下: EVP_CIPHER* EVP_*(vo...
为什么要学习C#和.NET? .NET能带来许多新的机会和挑战,这也是促使我们通过阅读好书而尽快掌握.NET相关技术的源动力。也许,软件技术发展史上的很多经典时刻,我们都没能亲身经历或融入。比如DOS、Windows 3.0、Visual Basic、Windows 95等软件的首次发布。但现在,却适逢这样一个机会,我们能亲身体验互联网时代的一个具有重大历史意义的时刻:Visual Studio.NET的正式发布。微软的消息表明,在2002年2月13日于旧金山举行的VSLive开发者大会上,Visual Studio.NET将正式发布。届时会由Bill Gates做主题演讲,C#、ADO...
c#电子文档:
http://download.chinaitlab.com/special/csharpebook.htm
书名:
1 c#2.0程序设计教程----清华大学出版社 (打基础的) c#高级编程 ----清华大学出版社(提高的) 这都是我学C#时用的 感觉不错!
<<c#入门经典>> <<C# Primer 中文版>> c#完全手册+c#高级编程你会对c#有全面的理解然后可以做手做项目从项目中得到经验动手才会好的体会好的想法,好的灵性!
<C#入门经典><C#高级编程><C#技术内幕>
NET Framework 类库 Stack 类 全部显示 表示对象的简单的后进先出集合。 有关此类型所有成员的列表,请参阅 Stack 成员。 System.Object System.Collections.Stack [Visual Basic] <Serializable> Public Class Stack Implements ICollection, IEnumerable, IClon...
1) 在建立C#工程之后必须要给类一个强名称。要创建强名称,可以使用 sn 工具。此命令行工具有许多选项,在命令提示符处键入 sn /? 可以查看所有选项。对程序集签名所需的选项是“-k”,它将创建一个密钥文件。默认情况下,该文件使用 .snk 作为扩展名。例如,要创建一个名为 MyCom.snk 的密钥文件,可以使用以下命令行: sn -k MyCom.snk然后在工程中引用这个强名称方法如下:(1):注释掉AssemblyInfo.cs中的[assembly: AssemblyKeyFile("")]和[assembly: AssemblyKeyName("")](2): 在组件类中...
在实际的多用户并发访问的生产环境里边,我们经常要尽可能的保持数据的一致性。而其中最典型的例子就是我们从表里边读取数据,检查验证后对数据进行修改,然后写回到数据库中。在读取和写入的过程中,如果在多用户并发的环境里边,其他用户已经把你要修改的数据进行了修改是非常有可能发生的情况,这样就造成了数据的不一致性。解决这样的办法,SQL SERVER提出了乐观锁定和悲观锁定的概念,下边我以一个实例来说明如何使用乐观锁定和悲观锁定来解决这样的问题。/* 建立测试表:Card,代表一个真实的卡库,供用户注册.用户要从里边选出一个未使用的卡,也就是F_Flag=0的卡,给用户注册:更新F...
openssl之EVP系列之4---EVP_Encrypt系列函数详解(一) ---根据openssl doc\crypto\EVP_EncryptInit.pod和doc\ssleay.txt cipher.doc部分翻译和自己的理解写成 (作者:DragonKing, Mail: wzhah@263.net ,发布于:http://openssl.126.com 之openssl专业论坛,版本:openssl-0.9.7) EVP_Cipher系列包含了很多函数,我将他们大概分成两部分来介绍,一部分是基本函数系列,就是本文要介绍的,另一个部分是设置函数系列,将在后面...
当有多个线程的时候,经常需要去同步这些线程以访问同一个数据或资源。例如,假设有一个程序,其中一个线程用于把文件读到内存,而另一个线程用于统计文件中的字符数。当然,在把整个文件调入内存之前,统计它的计数是没有意义的。但是,由于每个操作都有自己的线程,操作系统会把两个线程当作是互不相干的任务分别执行,这样就可能在没有把整个文件装入内存时统计字数。为解决此问题,你必须使两个线程同步工作。 存在一些线程同步地址的问题,Win32提供了许多线程同步的方式。在本节你将看到使用临界区、 互斥、信号量和事件来解决线程同步的问题。 1. 临界区 临界区是一种最直接的线程同步方式。所谓临界区,就是一次只能由...
临界区的互斥控制 一、前言我正在研究线程的通讯,无奈有关这方面的资料实在太少,没办法我只好去啃MSDN,但是MSDN好像说得也不太清楚。所以那我就写了这么一个例子,以望对学习多线程编程起到引玉抛砖的作用。有个易懂的例子学起来总是容易很多。近来我正在复习那几个排序算法,于是就把这些算法写到了这里来作为线程的例子。同时也对几个通用的排序算法思想作了一些说明。这个例子利用多线程使用不同的排序算法对数据进行排序,每一个线程使用不同的算法。主线程里使用快速排序QuickSort,其他四个算法分别建立四个子线程,在子线程中进行排序。因为每一个线程都要调用函数PrintResult把结果输出到显示器上...
UploadFiles/2006-8/818614211.rar
Visual C++6.0(5.0)开发工具功能非常强大,但是对于初学者来说,却有很多细节的问题需要注意。作者搜集整理了以下一些实用小技巧,希望对初学者有所帮助。 1:使用vc开发项目时,常会遇到这种情况: 即明明只改动了一个文件,却要把整个项目全部重新编译连接一次。刚刚连接好,一运行,又提示重新编译连接一次,非常讨厌。这是因为出现了未来文件的缘故。 解决方法: 找出对应文件夹下的debug目录,将未来文件全部delete, 再rebuild all一次。(未来 文件即其创建和修改时间都比系统时间靠后) 2:有时,workspace中的classview显...
关键词: openss RSA
RSA基本结构struct{int pad;long version;const RSA_METHOD *meth;ENGINE *engine;BIGNUM *n; n=p*qBIGNUM *e; 公开的加密指数,经常为65537(ox10001)BIGNUM *d; 私钥BIGNUM *p; 大素数pBIGNUM *q; 大素数qBIGNUM *dmp1; d mod (p-1)BIGNUM *dmq1; d mod (q-1)BIGNUM *iqmp; (i...
在计算机软件开发世界中,编程语言种类极多,数据在各种语言的表现形式可能有所差异,但数据本身的处理可能,或者说本质上是完全一样的;比如数据在某个算法中的运算过程是一样的。在这里,我以加密与解密来作为例子说明。
在C++下,我使用OPENSSL库生成了RSA的公私钥对与DES加密之用的会话密钥,并将这三者及加密结果写入文件以备在Java环境下使用。
在C++程序中,我使用使用公钥来加密了DES的会话密钥,然后在Java下使用私钥来解密会话密钥;在运算结果中,我未做其它方面的码制转换,即按密钥的初始格式DER编码,数学运算结果也是按DER编码来实现。
...
主要介绍Openssl中的有关大数运算函数,这个对于以后的RSA研究和实现比较有价值1.初始化函数 BIGNUM *BN_new(void); 新生成一个BIGNUM结构 void BN_free(BIGNUM *a); 释放一个BIGNUM结构,释放完后a=NULL; void BN_init(BIGNUM *); 初始化所有项均为0,一般为BN_ init(&c) void BN_clear(BIGNUM *a); 将a中所有项均赋值为0,但是内存并没有释放 void BN_clear_free(BIGNUM *a); 相当与将BN_free和BN_...