sjtu_chenchen
硕士毕业于上海交通大学,先后就职于各类大厂,在java、devops、大数据实时计算方向有深入的研究
展开
-
openssl中dh算法Demo
/*下面程序利用openssl库,实现了dh算法,产生密钥以及计算sessionkey*/#include <openssl/dh.h>#include <memory.h>int main() { DH *d1,*d2; BIO *b; int ret,size,i,len1,len2; char sharekey1[128],sharekey2[128];原创 2015-06-08 22:07:58 · 6359 阅读 · 8 评论 -
openssl开源程序dh算法解析之dh_gen.c
/*----------------实现了生成 DH 密钥参数------------*///DH_generate_parameters_ex#include <stdio.h>#include "cryptlib.h"#include <openssl/bn.h>#include <openssl/dh.h>#ifdef OPENSSL_FIPS# include <openssl/f原创 2015-06-08 22:00:54 · 2786 阅读 · 0 评论 -
openssl开源程序dh算法解析之dh_ameth.c
#include <stdio.h>#include "cryptlib.h"#include <openssl/x509.h>#include <openssl/asn1.h>#include <openssl/dh.h>#include <openssl/bn.h>#include "asn1_locl.h"#ifndef OPENSSL_NO_CMS# include <ope原创 2015-06-08 21:48:01 · 3829 阅读 · 0 评论 -
CSP开发基础--加密通信过程中CryptAPI函数的调用流程
应用程序使用Crypto API进行加密通信的一般步骤如下:1,include wincrypt.h2,调用CryptAcquireContext()获得某个CSP模块中的密钥容器(key container)的一个句柄;3,发送方使用CryptImportKey()将接受方的证书导入CSP中,从而获得接收方的公钥;4,发送方式用CryptGenKey()随机产生一个会话密钥,且用对方的公钥对会话密转载 2015-07-01 13:57:17 · 1172 阅读 · 0 评论 -
CSP编程基础--CryptAPI基本函数含参介绍
一: Creating a Key Container and Generating Keys创建一个密钥容器,在进行加密,解密文件,并且签名的时候,必须需要一个公/私钥对,下面我们就来创建默认的密钥容器,要注意的是创建密钥容器并不会自动产生公/私钥对.下面是我们程序的任务:1,假如密钥容器不存在则创建一个。2,假如签名密钥不存在则在密钥容器里创建一个。3,假如交换密钥不存在则在密钥容器里创建一个。转载 2015-07-01 14:01:18 · 1823 阅读 · 0 评论 -
dll签名两种方法
下面两种签名方法,都是对csp.dll签名,都不是CA颁发的,且效果不同, 一:通过自建证书签名 下载windows sdk,安装成功后,包含makecert.exe, cert2spc.exe, pvk2pfx.exe, signtool.exe工具,将要签名的csp.dll也放入工具目录,cmd命令切换到工具目录,再执行以下命令 1.生成签名证书: makecert -sv cs原创 2015-07-08 14:59:25 · 11428 阅读 · 0 评论 -
dll注册加载失败解决方法
当输入命令regsvr32 A.dll注册时,跳出下面错误提示:模块C:\windows\System32\A.dll加载失败。 请确保该二进制存储在指定的路径中,或者调试它检查该二进制或相关的 .DLL文件是否有问题查了很多资料,总而言之是64位系统的system32与syswow64的混淆原因,解决方法就是到syswow64目录下使用regsvr32 命令。但我根据这种解决方法,还是不能解原创 2015-07-08 17:45:54 · 96426 阅读 · 9 评论 -
openssl开源程序dh算法解析之p1024.c
#include <stdio.h>#include <openssl/bn.h>#include <openssl/asn1.h>#include <openssl/dh.h>#include <openssl/pem.h>/*8*16*8=1024,1024代表密钥长度(二进制位数)*/unsigned char data[] = { 0x97, 0xF6, 0x42, 0x61原创 2015-06-14 14:19:48 · 2896 阅读 · 0 评论 -
openssl开源程序dh算法解析之dh_key.c
/*实现openssl 提供的默认的DH_METHOD,实现了根据密钥参数生成DH公私钥,以及根据DH 公钥(一方)以及DH 私钥(另一方)来生成一个共享密钥,用于密钥交换*/#include <stdio.h>#include "cryptlib.h"#include <openssl/bn.h>#include <openssl/rand.h> //实现了伪随机数生成,支持用户自定义原创 2015-06-08 22:04:55 · 4824 阅读 · 0 评论 -
openssl开源程序dh算法解析之dh_check.c
/*检查dh自身参数,dh公钥大小是否合适*/#include <stdio.h>#include "cryptlib.h"#include <openssl/bn.h> //自定义OpenSSL 实现大数管理的结构及其函数#include <openssl/dh.h>/*- * Check that p is a safe prime and * if g is 2, 3 or 5, c原创 2015-06-08 21:56:32 · 2504 阅读 · 0 评论 -
openssl中dh算法实现
Openssl的DH实现在crypt/dh目录中,各个源码如下:(1) dh.h 定义了 DH 密钥方法数据结构以及各种函数。(2) dh_asn1.c DH密钥参数的DER 编解码实现。(3) dh_lib.c 实现了通用的 DH 函数,设计层面的。(4) dh_gen.c 实现了生成 DH 密钥参数。(5) dh_key.c 实现openssl 提供的默认的DH_METHOD,实原创 2015-06-07 22:13:30 · 3600 阅读 · 0 评论 -
DH算法
1、通信方A和通信方B约定一个初始数g,如g=5,一个质数p,如p=23,g和p是公开的,且1< g < p2、A生成一个随机数a,a是保密的,如a=63、A计算g^a%p发送给B,g^a%p=5^6%23=84、B生成一个随机数b,b是保密的,如b=155、B计算g^b%p发送给A,g^b%p=5^15%23=196、A接收到g^b%p后,再使用保密的a,计算(g^b%p)^a%p=19^6%23原创 2015-06-05 14:36:01 · 6219 阅读 · 0 评论 -
OpenCSP开源程序解析之OPENCSP_AuthUI.cpp
#include ".\opencsp_authui.h"#include ".\resource.h"extern HINSTANCE g_hModule; // 当前实例MY_DATA_BLOB OPENCSP_AuthUI::_authData; //MY_DATA_BLOB二进制容器INT_PTR OPENCSP_AuthUI::showAuthUI() {//在3原创 2015-06-05 22:58:42 · 1047 阅读 · 0 评论 -
OpenCSP开源程序解析之OPENCSP_Hash.cpp
#include ".\opencsp_hash.h" //HASH函数主要用于完整性校验和提高数字签名的有效OPENCSP_M$CSP* OPENCSP_Hash::_csp;//hKey如果哈希算法是密钥哈希,如HMAC或MAC 算法,就用此密钥句柄传递密钥。对非密钥算法,此参数为NULLOPENCSP_Hash::OPENCSP_Hash(ALG_ID Algid, HC原创 2015-06-05 23:03:42 · 1077 阅读 · 0 评论 -
OpenCSP开源程序解析之OPENCSP_Key.cpp
#include ".\opencsp_key.h" #include ".\opencsp_m$csp.h" #include ".\opencsp_alg.h" OPENCSP_M$CSP* OPENCSP_Key::_csp; OPENCSP_Key::OPENCSP_Key(ALG_ID algId, DWORD dwFlags) :_hKey(0), _原创 2015-06-05 23:13:16 · 1321 阅读 · 0 评论 -
OpenCSP开源程序解析之OPENCSP_Mutex.cpp
#include ".\opencsp_mutex.h"unsigned long OPENCSP_UsrMutex::_ulLockCnt(0);DWORD OPENCSP_UsrMutex::_dwProcessId(0);OPENCSP_Mutex OPENCSP_UsrMutex::_dscs;OPENCSP_Mutex::OPENCSP_Mutex() //线程同步:_sec原创 2015-06-05 23:25:19 · 904 阅读 · 0 评论 -
OpenCSP开源程序解析之OPENCSP_Alg.cpp
#include ".\opencsp_alg.h"DWORD OPENCSP_Alg::_index = 0;BOOL OPENCSP_Alg::isAlgSupported(ALG_ID algId) //判断algId是否是支持的算法{ for (DWORD i = 0; i < M_OPENCSP_ALG_INFO_NUM; i++) //M_OPENCSP_AL原创 2015-06-05 22:54:42 · 1056 阅读 · 0 评论 -
OpenCSP开源程序解析之OPENCSP_M*CSP.cpp
#include ".\opencsp_m$csp.h"OPENCSP_M$CSP* OPENCSP_M$CSP::_instance;OPENCSP_M$CSP::OPENCSP_M$CSP(void){ BOOL fOK = FALSE; fOK = CryptAcquireContext(&_hProv, TEXT("Keyset in MSCSP used by OpenC原创 2015-06-05 23:19:40 · 1472 阅读 · 0 评论 -
OpenCSP开源程序解析之OPENCSP_Main.cpp
#include "OPENCSP_define.h"#include "OPENCSP_Keyset.h"#include "OPENCSP_Provider.h"#include ".\opencsp_cardaccess.h"#pragma data_seg("_OPENCSP_SHARED")/* Two variables are used to OPENCSP_UserM原创 2015-06-05 23:24:00 · 1459 阅读 · 0 评论 -
OpenCSP开源程序解析之OPENCSP_Keyset.cpp
#include ".\opencsp_keyset.h"#include ".\opencsp_provider.h"#include ".\opencsp_alg.h"#include ".\opencsp_hash.h"#include ".\opencsp_key.h"#include ".\opencsp_mutex.h"#include ".\opencsp_cardacce原创 2015-06-05 23:14:52 · 968 阅读 · 0 评论 -
各种系统下CSP开发免签名调试方法
我们开发的CSP.dll要调试的话,不能每次都给微软付费签名认证吧,而在内核调试模式下,微软windows系统不验证签名,还有一种方法是修改系统文件屏蔽微软签名验证,下面说明方法步骤。1. windows xp SP2系统在C:\Windows\System32下找到advapi32.dll,用UltraEdit 打开advapi32.dll (version 5.1.2600.2180) 。 1原创 2015-07-21 23:20:17 · 2067 阅读 · 2 评论