自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 资源 (1)
  • 收藏
  • 关注

原创 针对口令的暴力破解攻击方式

用户名加口令(也就是常说的密码)仍然是目前最常用的身份验证方式。在身份识别一文中,我们介绍了几种常用的针对口令验证的攻击和防范技术。今天这篇着重讲一下其中的暴力破解。暴力破解暴力破解的基本思想很朴素:通过不断重试来猜测口令。不过现在的系统都有防止自动化登录的机制,如验证码、多次输入错误口令后用户受限等;同时系统基本都是采用存储和对比口令摘要的方式进行验证。而前面讲过,摘要运算是单向加密,也就是无法从摘要计算出原文。因此不断重试并不是指采用尝试不同的口令直接登录系统的方式,而是通过尝试计算不同原文的摘要,

2020-12-04 17:10:31 4257

原创 终于还是要讲到这一篇——RSA算法原理

RSA原理其实没有想象的那么难。对于这篇文章,有数论的基础更好,没有的话只要不纠结具体的数学定理如何证明,应该也可以看懂。一、数学准备首先要准备一下如下数学概念和原理。1.质数:只能分解成1和它自身乘积的,大于1的自然数。2.互质:最大公因数是1的多个自然数之间就是互质关系。注意,互质的整数不一定都是质数。3.模运算:mod,即计算余数的运算,如x mod yn,表示x除以y的余数是n。上述数学概念都是中学学过的,下面的定理就进入数论部分了。4.欧拉函数:对于自然数n,计算在小于等于n的自然数

2020-12-04 17:04:18 571

原创 SM2签名的预处理过程

SM2签名及验证过程中,并不是直接计算被签名数据的摘要,而是要经过专门的预处理过程得到摘要。此过程包含两个阶段的摘要计算:1)Z = SM3(ENTL || ID || a || b || x_G || y_G || x_A || y_A)ENTL || ID || a || b || x_G || y_G || x_A || y_A表示签名元素数据的拼接(级联)。其中,ENTL 是签名者 ID 的位长度,占两个字节;ID是签名者ID,国密标准里定义的缺省签名者ID用UFT_8字符串表示是“12345

2020-11-15 11:01:23 1665 5

原创 提供一个软件版本管理规则的模板

软件产品的版本管理是软件开发企业发展到一定阶段后,必然要面对的问题,本文是我根据工作经验,总结的一个管理规则模板,供大家参考。此规则用于指导规范开发工程师打包软件产品安装文件时的版本设置行为。此规则中的“版本”是指由相关开发工程师所提交的安装文件的版本,比如xxx.msi的版本。此规则涉及“软件”包括且不限于公司下列产品(可根据实际情况填写)以及相关补丁。软件的版本由相关开发工程师负责打包及设置。此规则适用于标准产品打包及项目型产品打包。软件版本号规则,分为:主版本号、次版本号、修订版本号。例:

2020-11-15 10:56:27 617

原创 一个有效减少注册控件时360弹窗警告的方案

我们自己开发的COM控件,在注册或反注册时可能会被360等安全软件拦截,如下图:甚至会被认为是木马程序。出现上述情况,我们可以选择“允许程序所有操作”并“不再提醒”,让控件程序继续正常注册或反注册。但如果一个安装程序里有大量的COM控件需要注册,安装过程中就会多次弹出窗口需要用户手动点击确认,这种使用体验效果可想而知。而且如果当中不小心点击错一个,那么相应的控件将注册失败,整个安装过程可能也会失败。针对上述问题,你当然可以让用户先退出360等安全软件再安装,但从目前360在桌面电脑的占有率来看,这同样

2020-10-17 21:10:42 576

原创 X509证书结构解析

X509证书是采用DER编码的ASN1结构数据:Certificate::=SEQUENCE{tbsCertificate TBSCertificate,signatureAlgorithm AlgorithmIdentifier,signatureValue BIT STRING}整体X509证书是SEQUENCE类型,包括三个元素。其中,tbsCertificate是证书数据本身, TBSCertificate类型,是整个X509证书数据的主体。所谓”TBS”就是“To be signed”

2020-10-17 21:04:00 4342 9

原创 CryptoAPI调用指南(四)——数字签名及验证

数字签名和非对称加密类似,数字签名通过调用CryptSignMessage这一个方法即可实现,这一个方法里将摘要运算和私钥加密摘要两步都包含进去了。BOOL CryptSignMessage(PCRYPT_SIGN_MESSAGE_PARA pSignPara,BOOL fDetachedSignature,DWORD cToBeSigned,const BYTE * [] rgpbToBeSigned,DWORD [] rgcbToBeSigned,BYTE *pbSignedBlob,

2020-10-11 15:39:34 671 1

原创 CryptoAPI调用指南(三)——数字信封

非对称加密前面讲过,实际应用中非常对加解密都是以数字信封的方式出现的。CryptAcquireContextBOOL CryptEncryptMessage(PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara,DWORD cRecipientCert,PCCERT_CONTEXT [] rgpRecipientCert,const BYTE *pbToBeEncrypted,DWORD cbToBeEncrypted,BYTE *pbEncrypt

2020-10-11 15:36:14 185 2

原创 CryptoAPI调用指南(二)

证书操作在CryptoAPI里,一般使用CERT_CONTEXT类型,即证书上下文,对数字证书进行操作,定义如下。typedef struct _CERT_CONTEXT {DWORD dwCertEncodingType;BYTE *pbCertEncoded;DWORD cbCertEncoded;PCERT_INFO pCertInfo;HCERTSTORE hCertStore;} CERT_CONTEXT, *PCERT_CONTEXT在这其中dwCertEncodingType

2020-10-11 15:34:13 232 1

原创 CryptoAPI调用指南(一)

前文已经介绍过,CryptoAPI是Win32平台下实现密码运算的一整套接口(当然你在Windows 64也可以用),在Windows下做密码运算基本绕不过它。今天就开始介绍一下如何调用CryptoAPI实现几个主要的密码运算功能。摘要可以按照如下顺序调用接口实现摘要:BOOL CryptAcquireContext (HCRYPTPROV* phProv,LPCTSTR pszContainer,LPCTSTR pszProvider,DWORD dwProvType,DWORD dw

2020-10-11 15:26:04 313

原创 Word的COM加载项开发指南

所谓程序插件(add-in),是指根据主程序的SDK制作出的程序模块。这个模块必须做到以下两点:实现主程序SDK定义的某种接口(不一定是COM接口);必须以某种形式注册,如写入特定注册表信息或者存放在主程序规定的特定路径下。实现上述两点后,主程序运行时,就会根据注册方式找到插件模块,并根据实现的接口加载它。这样,程序插件就插入到主程序的运行进程中,并可以实现自己的功能了。之前介绍的基于Word客户端的电子印章系统,就是典型的程序插件,它被加载到Word的进程,在Word的编辑环境中加入了自己的菜单,并实现

2020-10-03 17:26:13 3736 5

原创 非IE浏览器下ActiveX技术的替代方案

ActiveX是我们在做Web开发使经常使用的浏览器端技术,通过ActiveX控件,Web页面可以实现与计算机本地资源交互,实现特定功能。但实际上ActiveX控件技术是微软自家独有的Web页面扩展技术,它并不包含在W3C制定的HTML标准里面,所以也只有IE或使用IE内核的浏览器才支持它。。究其原因,ActiveX本质上是与Web应用的设计初衷相违背的,它模糊了客户端与服务端的边界,带来安全性、稳定性、兼容性和执行效率等问题。这也是IE在主流浏览器性能排名中总是排在后面的重要原因。但没有办法,由于Win.

2020-10-03 17:20:37 7413 3

原创 什么是跨站点脚本攻击

各位在做软件漏扫,尤其是Web应用系统漏扫时,可能会遇到系统存在跨站点脚本攻击(XSS)漏洞的警告,那今天就聊一下它。概述跨站点脚本攻击(Cross Site Scripting简称XSS)是一种常见的攻击行为,它是指恶意攻击者在应用系统的Web页面里插入恶意代码,当用户浏览该页面时,嵌入其中Web里面的恶意代码会被执行,从而达到攻击的目的。从原理上讲,跨站点脚本攻击与前面讲的SQL注入攻击一样,都是利用系统对用户输入检查不严格的漏洞,将用户数据变成了可执行的代码。一个完整的XSS过程是这样的:攻击者

2020-09-26 13:43:31 905

原创 小公司也能做出漂亮的软件——界面设计开发规范

1.概述软件界面经常是中小型软件企业开发产品的一个弱项。小企业出于成本的考虑,在界面设计上往往投入有限,不少公司甚至没有专职的界面设计人员。其实,制定好一套合理的界面设计开发规范并且坚持执行,在不需要增加太大投入的情况下,同样会使你的软件界面上一个新台阶。因此本文不是教你具体怎么设计,而是建议你在设计时应该遵循什么样的流程,并指出一些要注意的地方和实用的技巧。2.界面设计遵循的原则与规范2.1基本原则总述:无论是控件使用,提示信息措辞,还是颜色、窗口布局风格,遵循统一的标准,做到真正的一致。这样得

2020-09-26 13:37:39 667

原创 ATL窗体与对话框的开发应用

作者 陈华涛一.简单窗体1.创建窗口类,从CWindowImpl类派生;例子如下:(代码:myChild.h)1.1创建一个窗口类1.1.1弹出式窗口类(myPopup.h)class CMyPopup :public CWindowImpl<CMyPopup, CWindow, CFrameWinTraits >//typedef CWinTraits<WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN//| WS_CLIPSIBLINGS, W

2020-09-26 13:35:49 1180

原创 初级开发者经常忽视的问题——SQL注入攻击

一般来讲,刚入行的开发者容易忽视这个问题,随着经验的累积和良好开发习惯的养成,成熟的开发工程师写的代码里很少会有SQL注入攻击的错误。概念及原理SQL注入攻击是一种比较常见的攻击方式,其原理也比较简单:就是利用系统在执行数据库操作的环节,通过构造出特定参数,改变执行数据库操作SQL语句的逻辑和功能,达到攻击的目的。举个最简单也最容易理解的例子,如登录系统时,在后台做用户口令的验证这样写:"select id from users where username =‘"+USERNAME +"’ and

2020-09-16 20:27:23 196

原创 “神秘的”0day漏洞

我们在一些涉及到安全、黑客的文章里经常会看到“0day漏洞”这个词。今天就来介绍一下什么是0day漏洞。概念首先要说明的是,“0day”并不是某一种技术的名称,因此0day漏洞也不是指某一种特定技术的漏洞,它是指软件或系统中已经被发现,但官方还不知道或还没有发布相应补丁的漏洞。那为什么叫0day漏洞呢?缘由有两个,比较正统的说法是0day的概念最早来源于软件和游戏破解,即一款新发布的软件或游戏,不到一天就被破解,用户玩家可以免费使用。当然,不一定真的是当天,0day强调的是以最快的时间内破解。后来,这

2020-09-16 20:21:50 1307

原创 冷门但每天都用到的安全技术:数据执行保护

数据执行保护概述前面的文章谈谈著名的缓冲区溢出介绍过,缓冲区溢出存在的根本原因是系统无法分辨出内存中哪些是数据,哪些是执行的代码。而数据执行保护(Data Execution Prevention,以下简称 DEP)就是针对这一问题提出的解决技术。DEP 能够自动在程序执行时将其可执行代码所占用的区域标记出来,支持 DEP 的 CPU 利用一种叫做“No execute 不执行”的技术识别标记出来的区域。如果发现当前执行的代码没有明确标记为可执行(例如程序执行后由病毒溢出到代码执行区的那部分代码)..

2020-09-16 20:18:55 2267

原创 COM组件和注册表的关系

技术摘要:讲述COM组件和注册表的关系,了解COM的原理并提供高级编程的方法阅读对象:COM及调用程序开发人员1.概述COM组件从开发者和调用者的角度来说,都存在一定的方便性,就是部署方便。开发者一般由开发框架(VB/MFC/ATL)提供了COM组件的注册方法,而调用者更是无视其开发者部署方法按照COM标准使用编程ID或者类ID去调用。但是这所谓的便利性有时因为环境遭到损坏的原因而变得很麻烦。所以我们要知道这便利性的原理,出问题的时候好知道如何排错。2.类型库类型库注册在HKEY_CLASSES

2020-09-05 16:57:14 987 2

原创 COM和ATL的工作原理简介

1 概述这里讲的不是COM的实现原理,而是工作原理。即COM组件是如何工作,整个生命周期是如何的。这里只讲述两种COM组件,即进程内组件和本地组件。2 知识基础动态链接库(Dynamic-Link Library)DLL。Windows系统的进程-线程模型。3 两个角度看COM组件从调用者(功能使用者)的角度来看COM组件,COM组件是一个抽象的功能对象。你知道它提供了什么功能,但是不需要知道它在哪里提供这些功能的,反正系统会将功能交到你手上。反过来从实现者(功能提供者)的角度来看就不一样了,

2020-09-05 16:47:24 435 2

原创 摘要运算在工作量证明中的应用

区块链中的工作量证明(Proof Of Work,简称POW),简单理解就是一份用来确认你做过一定量的工作的证明。因为监测工作的整个过程通常是极为低效的,而通过对工作的结果进行认证来证明完成了相应的工作量,则是一种非常高效的方式。比如现实生活中的毕业证、驾驶证等等,也是通过检验结果的方式(通过相关的考试)所取得的证明。前文《区块链中的密码学》介绍过,POW的技术基础是摘要运算,即给定一个输入x,它会算出相应的输出H(x)。哈希函数的主要特征是:1.输入x可以是任意长度的字符串;2.输出结果即H(x)的长.

2020-08-23 15:21:40 108

原创 谈谈著名的缓冲区溢出

缓冲区溢出也是大家耳熟能详的一种软件漏洞了,我们经常会看到“某某软件系统存在缓冲区溢出漏洞,攻击者可能依据此漏洞获得系统权限,请尽快下载安装最新版本……”这样的新闻。其实,缓冲区溢出的基本原理并不复杂。缓冲区就是操作系统为函数执行专门划分出的一段内存,包括栈(自动变量)、堆(动态内存)和静态数据区(全局或静态)。其中缓冲区溢出发生在栈里,栈存放了函数的参数、返回地址、EBP(EBP是当前函数的存取指针,即存储或者读取数时的指针基地址,可以看成一个标准的函数起始代码)和局部变量。结构如下:当函数中对局.

2020-08-23 15:16:22 388

原创 个人版程序代码编写规范

今天分享一篇程序编码规范,希望对各位同行有帮助。一、命名规范标识符的名字应当直观且可以拼读,可望文生义,不必进行“解码”。最好采用英文单词或其组合,便于记忆和阅读。切忌使用汉语拼音来命名。程序中的英文单词一般不要太复杂,用词应当准确。标识符的长度应当符合“min-length&max-information”原则。如果标识符采用的英文单词太长,几个单词组合后会更长,此时应该采用一些通用而合理的缩写或者应用领域专业术语的缩写。例如:Program :<----> Pro .

2020-08-23 15:04:46 217

原创 实用贴——分组加密的常用工作模式

对称加密中的]组加密,也叫块加密,即将明文按一定的长度分组,每次加密明文中的一个分组,得到一个密文的分组,最后将密文分组合并成密文。解密时依次解密每个密文分组,得到对应的明文分组,再将分组合并还原成明文。在分组加密算法中,有不同的分组与加解密模式,常用的有ECB,CBC,CFB,OFB,CTR这几种。如果我们开发的系统涉及到了分组加密,就有一个如何选择模式的问题,今天就介绍一下上述模式,帮助大家在应用时选择合适的模式。1.ECB(Electronic Code Book)模式ECB是最简单的工作模式,

2020-08-18 22:31:26 319

原创 浅谈对称加密中的流加密

之前介绍的对称加密算法都是分组加密,如DES,3DES,SM4等。被加密的原文需要分成组,每组长度与密钥长度相同,再分别加密。实际上,对称加密里还有一种类型算法叫做流加密。所谓流加密,就是使用一个与原文同样长度的密钥,与原文数据按位进行异或操作,得到的结果就是密文。解密过程和加密类似,就是用同样的密钥,对密文在进行按位异或,得到明文。这和异或运算的原理有关,假设P是原文,K是密钥,E是密文,⊕代表异或运算,则有如下加密算式:E = P⊕K根据异或运算原理,相同的数异或结果为0,任何数与0异或得到的是它.

2020-08-18 22:11:35 987

原创 系统中如何做到实名认证

身份识别认证的是用户在应用系统中的身份,如果要验证用户在现实生活中的真实身份,就需要使用实名认证了。根据国家法规要求和伴随着移动互联网的飞速发展,实名认证已经成了很多(移动)互联网应用的标配。由于涉及到公民身份信息,实名认证都需要连接到一个第三方的实名身份数据源。常用的实名认证方式有以下几种:1.现场审核这是最传统的审核方式,用户需要在应用系统的业务办理场所现场提交相关身份证明材料,办理场所的工作人员审核用户真实身份。如传统的银行业务、政府行政服务、CA数字证书服务等,都采用这种线下审核方式。而我们现.

2020-08-15 21:01:22 2109

原创 身份识别技术简介

说到身份识别,最常见的就是我们每天都要用到的“登录密码”了。其实,在第一篇文章就说过,这里的密码更确切的叫法是口令。口令是一定长度的字符串,由数字、字母、特殊字符、控制字符等组成。用户名加口令的方法是应用最广的一种身份识别方式,它的原理也很简单,应用系统事先储存了用户名与对应的口令,身份识别时只要用户提交的用户名加口令与存储的匹配,应用系统就认证了当前用户的身份。口令是安全强度比较低身份识别的方式,它主要存在以下几个方面的风险:一是暴力破解,这是针对口令最常见的攻击方式。攻击者通过不断重试来猜测你的口令.

2020-08-15 20:49:51 1111

原创 PDF文档的电子印章功能探究(三)

签章后修改文档如果把一个有签过名的PDF文档进行修改,再验证时可能会有以上的提示:“由本签名控制的文档修订版次尚未被更改,但在其后,文档已被更改”。出现这种情况的原因来自于PDF文档独特的存储方式:增量存储,也就是对文档的任何修改编辑都作为增量附加在文档末尾。这里的修改是指使用Arcobat/Reader提供的功能进行修改,包括新增、删除、编辑等。如果你会用一些专门的工具(如UltraEdit)修改PDF文档数据则不在此列。可以把PDF文档想象成一个有很多层的三明治,还没有盖章时是一块面包片,第一次签

2020-08-14 16:38:29 2093

原创 PDF文档的电子印章功能探究(二)

验证盖章完成后,照例开始介绍如何验证了,验证签章就是PDF中的验证签名。操作很简单,可以通过鼠标单击或右键菜单验证签名,也可以通过“填写和签名”视图的“使用证书”——“验证所有签名”(Arcobat中是“高级”——“签名和验证”——“验证所有签名”)来验证。验证结果应该如下:点击“签名属性”,弹出属性窗体。这样的验证结果是一切正常的结果,内容都很好理解,就不用多说。下面讲一下“异常”却又很常见的几种验证结果。证书不被信任绿色的对勾变成可黄色的惊叹号,这是因为盖章用的签名证书没有被Reader

2020-08-14 16:35:39 749 1

原创 PDF文档的电子印章功能探究(一)

在电子印章一文(密码技术的典型应用——电子印章)中,介绍过不同文档格式有不同的电子印章实现方式。实际上,Adobe在PDF标准中已经集成了电子签名功能,今天就先学习一下如何在Adobe的PDF工具中,通过使用签名功能实现PDF文档的电子印章应用。大家都知道,Adobe的PDF工具分为Acrobat(收费)和Reader(免费)两大类,它们的电子签名功能的操作界面有所不同,但基本功能是一致的。这里使用Adobe Reader XI作为操作示例。盖章签名过程List item打开PDF文档后,在右边可以看

2020-08-14 16:31:26 1590 1

原创 区块链中的密码学应用

区块链中应用到的密码学主要包括以下几方面:数字摘要区块链本质上是一种分布式数据存储方式,每一个数据区块之间靠数字摘要建立起联系,比如比特币中每一个区块都包含了它前一个区块的摘要值。因此数字摘要是区块链中应用最广泛的密码学技术,也是区块链的核心技术之一。区块链中常用的数字摘要算法是SHA-256和RIPEMD160,其中SHA256是构造区块链所用的主要摘要算法。比如在比特币中,SHA256主要用于完成PoW(工作量证明)计算,也就是挖矿;在HyperLedger-Fabric区块链平台中,主要用于检.

2020-08-08 22:59:38 2088

原创 数字证书的那点事

今天继续介绍一下数字证书里一些重要的概念和知识点。双证书在实际应用中,证书颁发机构(CA)一般为用户颁发双证书,也就是为申请证书的用户同时颁发两张证书,并告知用户其中一张是用来加密,即加密证书,另一张用来签名,即签名证书。这两张证书的主要信息是一致的,如证书持有人,颁发机构,有效期等,但证书对应的密钥对和密钥用法不同。我们可以通过查看证书——详细信息——密钥用法查看证书是加密证书还是签名证书。加密证书对应的密钥对用于数据的非对称加解密;签名证书对应的密钥对用于数据的数字签名及验证。按理说,一对公

2020-08-08 22:55:34 185

原创 国密SKF库调用开发指南(二)

四、对称加解密一次完整对称加解密分为三个步骤:密钥交换、加密及解密,这样才能做到密钥不直接传递,并且一次一密。首先是数据传输双方进行密钥交换。1.SKF_GenerateAgreementDataWithECC(HCONTAINER hContainer, ULONG ulAlgId,ECCPUBLICKEYBLOB* pTempECCPubKeyBlob,BYTE* pbID, ULONG ulIDLen,HANDLE *phAgreementHandle);传输的发起方调用此方法进行密钥协商,.

2020-08-05 22:54:41 3196 1

原创 国密SKF库调用开发指南(一)

针对支持国密算法USB KEY设备的应用,国家颁布一个行业标准《智能密码钥匙应用接口规范》(GM/T0016-2012),市面上销售的国密算法的USB KEY设备也都(其实也是必须)支持这个接口规范。因此,只要根据这个规范开发的应用程序,就可以兼容使用不同厂家及品牌的USB KEY产品。由于此规范中函数名称都以SKF开头,所以我们一般把按照此规范提供的设备开发接口库叫做SKF库或SKF接口。一篇文章不可能介绍完SKF库里的所有接口,今天主要从开发的角度入手,按照实现几个主要功能的目的将涉及的接口和调用方.

2020-08-05 22:52:25 4862 11

原创 什么是数字水印

经常有文章把数字签名和数字水印“傻傻分不清”,那今天就介绍一下数字水印。一、数字水印技术原理数字水印是一种信息隐藏技术,它利用人体感官的限制,将数字信号,如图像、文字、符号、数字等一切可以作为标记、标识的信息与原始数据(如图像、音频、视频数据)紧密结合并隐藏其中,并可以经历一些不破坏源数据价值的操作而能保存下来。一般地,数字水印应具有如下的基本特性:(1)可证明性:水印应能为受到版权保护的信息产品的归属提供完全和可靠的证据。(2)不可感知性:不可感知包含两方面的意思,一个指视觉上的不可感知性(对听

2020-08-05 22:47:09 13385 3

原创 密码技术的典型应用——时间戳服务

我们在文件上签字盖章时,经常还需要签署上当前的日期时间。这是因为签署的时间是重要的签署特征,在法律上也有相应的作用和意义。与之相应的,进行数字签名时,签名发生的时间一样是重要要件,比如在电子医疗、电子病历应用中。那么数字签名的时间来自哪里呢?大部分开发工程师肯定会说取系统时间,这也是最简单快捷的方法。大部分情况下这样做没有问题,但在安全要求严格的场景下,系统时间是不牢靠的。主要有两个原因:一个是准确性,系统时间本身可能就有误差,时间数值在传递过程中也有可能被篡改;第二个是可信赖,签名时间既然如此重要,那签.

2020-08-05 22:18:25 1157

原创 技术实用帖——如何安装所信任的根证书

我们在日常使用软件和开发系统时,可能需要信任某个证书颁发机构(CA).根据之前(PKI的最后一公里——数字证书和CA)介绍的,也就是要将CA的根证书安装在系统的“受信任的根证书颁发机构”里。今天就介绍一下如何安装。一、手工安装将CA的根证书(cer文件)拷贝到计算机上,右键选中——选择“安装证书”,进入安装向导。选择“下一步”,弹出选择证书存储位置的对话框。选择“将所有的证书放入下列存储”,点击“浏览”,选择“受信任的根证书颁发机构”。如果需要计算机的所有用户都信任此根证书,则应勾选“显示物理.

2020-07-27 23:31:38 2551

原创 如何构造PKCS7签名(三)

所谓有来有往,前面介绍了如何拼装构造PKCS#7签名,今天就讲一下如何验证它。如果已经掌握了构造的方法,验证就相对容易很多。最核心的就是读取signerInfos(签名者信息)里的authenticatedAttributes(用户认证属性)和encryptedDigest(签名),然后进行验证。首先读取签名用的证书,这里用了遍历,也可以直接取索引值3去访问。//检查DER数据类型ASN1_TAG tag=TAG_UNIVERSAL;hr=signDer->get_Tag(&tag);

2020-07-26 16:20:01 540

原创 如何构造PKCS 7签名(二)

signerInfossignerInfos是每个签名者信息的集合。它是最复杂也是最重要的部分,其定义如下:SignerInfos:=Set of SignerInfoSet of SignerInfoSignerInfo::= SEQUENCE {version Version,issuerAndSerialNumber IssuerAndSerialNumber,digestAlgorithm DigestAlgorithmIdentifier,authenticatedAttrib.

2020-07-26 16:18:17 1100

原创 如何构造PKCS 7签名(一)

PKCS#7定义了加密消息的语法标准,也就是加密数据、数字信封、数字签名这些密码运算结果的数据格式标准。基于这一标准,使得不同密码体系之间交换数据成为可能。PKCS#7作为RSA安全体系的一部分,被广泛支持和使用,如CryptoAPI、OpenSSL、PDF加密签名等。但在某些情况下,如Java自带的加密库并不支持PKCS#7,或者使用PKCS#7不支持的国密算法时,就可能需要我们自己实现PKCS#7标准。今天先结合代码讲解一下如何创建使用最多的PKCS#7数字签名。说明的是,提供的代码示例只能是示例,因

2020-07-26 16:10:07 2342

PKCS7签名的ASN1格式

可使用此格式,通过ASN1C生成完整的PKCS7签名C语言代码,实现诸如SM2算法数字签名及验证。 注意,CertificateSerialNumber本来在PKCS7标准ASN1结构中定义为INTEGER类型,但由于ASN1C将INTEGER类型翻译成long,不支持大整数。故这里将CertificateSerialNumber定义成OCTET STRING类型。因此相应的在生成的C代码中,凡涉及到CertificateSerialNumber类型的地方,都还需要将其TAG从4&lt;&lt;2(OCTET STRING)改回成2&lt;&lt;2(INTEGER)

2021-02-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除