电子签章系统源代码
电子认证签章系统源代码2013年03月/******************************* stdafx.h ***************************/#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers#include <afxctl.h> // MFC support for ActiveX Controls#include <afxext.h> // MFC extensions#include <afxdtctl.h> // MFC support for Internet Explorer 4 Comon Controls#ifndef _AFX_NO_AFXCMN_SUPPORT#include <afxcmn.h> // MFC support for Windows Common Controls#endif // _AFX_NO_AFXCMN_SUPPORT#include <atlconv.h> // MFC OLE classes#include "Atlbase.h"#define UNICODE#ifndef ULONG_PTR#define ULONG_PTR /*ULONG*/unsigned long*#endif#include "./gdiplus/include/Gdiplus.h"using namespace Gdiplus;#pragma comment (lib, "./gdiplus/lib/Gdiplus.lib")// Delete the two includes below if you do not wish to use the MFC// database classes#include <afxdb.h> // MFC database classes#include <afxdao.h> // MFC DAO database classes#include <afxwin.h>#import "msscript.ocx" no_namespace//{{AFX_INSERT_LOCA TION}}// Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif// !defined(AFX_STDAFX_H__8B528134_029F_4E9C_98FD_E8F297244773__INCLUDED_) /*************************** stdafx.cpp*******************************/#include "stdafx.h"/********************************************************************HtmlSignatu reAddInCtl.cpp : Implementation of the CHtmlSignatureAddInCtrl ActiveX Control class.*******************************************************************/#include "stdafx.h"#include "HtmlSignatureAddIn.h"#include "HtmlSignatureAddInCtl.h"#include "HtmlSignatureAddInPpg.h"#include "resource.h"#include "mshtml.h"#include <wingdi.h>#include ".\htmlsignatureaddinctl.h"//数字证书部分头文件#include <wincrypt.h>#include <cryptuiapi.h>#define MY_ENCODING_TYPE (PKCS_7_ASN_ENCODING | X509_ASN_ENCODING) //数字证书部分头文件#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif#pragma comment( lib, "Msimg32.lib" )IMPLEMENT_DYNCREATE(CHtmlSignatureAddInCtrl, COleControl)/////////////////////////////////////////////////////////////////////////////// Message mapBEGIN_MESSAGE_MAP(CHtmlSignatureAddInCtrl, COleControl)// ON_WM_CONTEXTMENU()//{{AFX_MSG_MAP(CHtmlSignatureAddInCtrl)ON_COMMAND(ID_MENU_BRANDINFO, OnMenuBrandinfo)ON_COMMAND(ID_MENU_CANCELSIG, OnMenuCancelsig)ON_COMMAND(ID_MENU_VIEWCERT, OnMenuViewcert)ON_COMMAND(ID_MENU_NUMSIGNA TURE, OnMenuNumsignature)ON_COMMAND(ID_MENU_CERTIFY, OnMenuCertify)ON_WM_ERASEBKGND()//}}AFX_MSG_MAPON_OLEVERB(AFX_IDS_VERB_PROPERTIES, OnProperties)ON_WM_LBUTTONDOWN()ON_WM_LBUTTONUP()ON_WM_RBUTTONDOWN()ON_WM_CONTEXTMENU()END_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// Dispatch mapBEGIN_DISPATCH_MAP(CHtmlSignatureAddInCtrl, COleControl)//{{AFX_DISPA TCH_MAP(CHtmlSignatureAddInCtrl)DISP_PROPERTY_EX(CHtmlSignatureAddInCtrl, "id", GetId, SetId, VT_BSTR)DISP_PROPERTY_EX(CHtmlSignatureAddInCtrl, "ocxLeft", GetOcxLeft, SetOcxLeft, VT_BSTR)DISP_PROPERTY_EX(CHtmlSignatureAddInCtrl, "ocxTop", GetOcxTop, SetOcxTop, VT_BSTR)DISP_PROPERTY_EX(CHtmlSignatureAddInCtrl, "ocxWidth", GetOcxWidth, SetOcxWidth, VT_BSTR)DISP_PROPERTY_EX(CHtmlSignatureAddInCtrl, "ocxHeight", GetOcxHeight, SetOcxHeight, VT_BSTR)DISP_PROPERTY_EX(CHtmlSignatureAddInCtrl, "sigPath", GetSigPath, SetSigPath, VT_BSTR)//}}AFX_DISPA TCH_MAPDISP_FUNCTION_ID(CHtmlSignatureAddInCtrl, "AboutBox", DISPID_ABOUTBOX, AboutBox, VT_EMPTY, VTS_NONE)DISP_PROPERTY_NOTIFY_ID(CHtmlSignatureAddInCtrl, "EnableMoveSig", dispidEnableMoveSig, m_EnableMoveSig, OnEnableMoveSigChanged, VT_BSTR) DISP_PROPERTY_NOTIFY_ID(CHtmlSignatureAddInCtrl, "DivId", dispidDivId, m_DivId, OnDivIdChanged, VT_BSTR)DISP_PROPERTY_NOTIFY_ID(CHtmlSignatureAddInCtrl, "DocumentId", dispidDocumentId, m_DocumentId, OnDocumentIdChanged, VT_BSTR)DISP_PROPERTY_NOTIFY_ID(CHtmlSignatureAddInCtrl, "FieldList", dispidFieldList, m_FieldList, OnFieldListChanged, VT_V ARIANT)DISP_PROPERTY_NOTIFY_ID(CHtmlSignatureAddInCtrl, "IEVersion", dispidIEVersion, m_IEVersion, OnIEVersionChanged, VT_BSTR)DISP_PROPERTY_NOTIFY_ID(CHtmlSignatureAddInCtrl, "UserName", dispidUserName, m_UserName, OnUserNameChanged, VT_BSTR)DISP_PROPERTY_NOTIFY_ID(CHtmlSignatureAddInCtrl, "PassWord", dispidPassWord, m_PassWord, OnPassWordChanged, VT_BSTR)DISP_PROPERTY_EX_ID(CHtmlSignatureAddInCtrl, "SignatureIP", dispidSignatureIP, GetSignatureIP, SetSignatureIP, VT_BSTR)DISP_PROPERTY_NOTIFY_ID(CHtmlSignatureAddInCtrl, "SignatureName", dispidSignatureName, m_SignatureName, OnSignatureNameChanged, VT_BSTR) DISP_PROPERTY_NOTIFY_ID(CHtmlSignatureAddInCtrl, "SignatureTime", dispidSignatureTime, m_SignatureTime, OnSignatureTimeChanged, VT_DATE) DISP_PROPERTY_NOTIFY_ID(CHtmlSignatureAddInCtrl, "SignatureSerialId", dispidSignatureSerialId, m_SignatureSerialId, OnSignatureSerialIdChanged, VT_I4) DISP_PROPERTY_NOTIFY_ID(CHtmlSignatureAddInCtrl, "SignatureCode", dispidSignatureCode, m_SignatureCode, OnSignatureCodeChanged, VT_BSTR)END_DISPATCH_MAP()/////////////////////////////////////////////////////////////////////////////// Event mapBEGIN_EVENT_MAP(CHtmlSignatureAddInCtrl, COleControl)//{{AFX_EVENT_MAP(CHtmlSignatureAddInCtrl)// NOTE - ClassWizard will add and remove event map entries// DO NOT EDIT what you see in these blocks of generated code !//}}AFX_EVENT_MAPEND_EVENT_MAP()/////////////////////////////////////////////////////////////////////////////// Property pages// TODO: Add more property pages as needed. Remember to increase the count!BEGIN_PROPPAGEIDS(CHtmlSignatureAddInCtrl, 1)PROPPAGEID(CHtmlSignatureAddInPropPage::guid)END_PROPPAGEIDS(CHtmlSignatureAddInCtrl)/////////////////////////////////////////////////////////////////////////////// Initialize class factory and guidIMPLEMENT_OLECREATE_EX(CHtmlSignatureAddInCtrl, "HTMLSIGNATUREADDIN.HtmlSignatureAddInCtrl.1",0x3b659a2f, 0xfacc, 0x4dcb, 0xb1, 0x67, 0x8d, 0x29, 0x49, 0x54, 0xfc, 0xbc)/////////////////////////////////////////////////////////////////////////////// Type library ID and versionIMPLEMENT_OLETYPELIB(CHtmlSignatureAddInCtrl, _tlid, _wVerMajor, _wVerMinor)/////////////////////////////////////////////////////////////////////////////// Interface IDsconst IID BASED_CODE IID_DHtmlSignatureAddIn ={ 0x7a75abe6, 0x7aa7, 0x4fc9, { 0x82, 0x4f, 0xd0, 0x75, 0x1c, 0, 0xa2, 0x50 } }; const IID BASED_CODE IID_DHtmlSignatureAddInEvents ={ 0x4dad4e54, 0xbc55, 0x4cef, { 0xac, 0x54, 0xcb, 0xe6, 0x95, 0x47, 0xa9, 0xd3 } };/////////////////////////////////////////////////////////////////////////////// Control type informationstatic const DWORD BASED_CODE _dwHtmlSignatureAddInOleMisc =OLEMISC_ACTIV ATEWHENVISIBLE |OLEMISC_SETCLIENTSITEFIRST |OLEMISC_INSIDEOUT |OLEMISC_CANTLINKINSIDE |OLEMISC_RECOMPOSEONRESIZE;IMPLEMENT_OLECTLTYPE(CHtmlSignatureAddInCtrl, IDS_HTMLSIGNATUREADDIN, _dwHtmlSignatureAddInOleMisc)/////////////////////////////////////////////////////////////////////////////// CHtmlSignatureAddInCtrl::CHtmlSignatureAddInCtrlFactory::UpdateRegistry -// Adds or removes system registry entries for CHtmlSignatureAddInCtrlBOOL CHtmlSignatureAddInCtrl::CHtmlSignatureAddInCtrlFactory::UpdateRegistry(BOOL bRegister){// TODO: Verify that your control follows apartment-model threading rules.// Refer to MFC TechNote 64 for more information.// If your control does not conform to the apartment-model rules, then// you must modify the code below, changing the 6th parameter from// afxRegApartmentThreading to 0.if (bRegister)return AfxOleRegisterControlClass(AfxGetInstanceHandle(),m_clsid,m_lpszProgID,IDS_HTMLSIGNATUREADDIN,IDB_HTMLSIGNATUREADDIN,afxRegApartmentThreading,_dwHtmlSignatureAddInOleMisc,_tlid,_wVerMajor,_wVerMinor);elsereturn AfxOleUnregisterClass(m_clsid, m_lpszProgID);}/////////////////////////////////////////////////////////////////////////////// CHtmlSignatureAddInCtrl::CHtmlSignatureAddInCtrl - Constructor CHtmlSignatureAddInCtrl::CHtmlSignatureAddInCtrl(){InitializeIIDs(&IID_DHtmlSignatureAddIn, &IID_DHtmlSignatureAddInEvents);// TODO: Initialize your control's instance data here.m_gdip.Initialize();// 初始化gdi+m_IsRbtnDown=false;//m_point=0;m_pSigBitmap=NULL;//初始化scriptcontrol;if(SUCCEEDED(m_iScriptControl.CoCreateInstance(__uuidof(ScriptControl)))){m_iScriptControl->PutLanguage(L"JScript");m_iScriptControl->PutAllowUI(VARIANT_TRUE);}}/////////////////////////////////////////////////////////////////////////////// CHtmlSignatureAddInCtrl::~CHtmlSignatureAddInCtrl - Destructor CHtmlSignatureAddInCtrl::~CHtmlSignatureAddInCtrl(){// TODO: Cleanup your control's instance data here.m_gdip.Deinitialize();// 卸载gdi+;m_iScriptControl=NULL;m_pSigBitmap=NULL;}/////////////////////////////////////////////////////////////////////////////// CHtmlSignatureAddInCtrl::OnDraw - Drawing functionHBITMAP CHtmlSignatureAddInCtrl::CopyScreenToBitmap(LPRECT lpRect,HWND hwnd) {HDC hscrdc, hmemdc;// 屏幕和内存设备描述HBITMAP hbitmap, holdbitmap; // 位图句柄int nx, ny, nx2, ny2; // 选定区域坐标int nwidth,nheight;// 位图宽度和高度int xscrn,yscrn;// 屏幕分辨率if (IsRectEmpty(lpRect)) // 确保选定区域不为空矩形return NULL;if (hwnd==NULL)return NULL;hscrdc=::GetDC(hwnd);//CreateDC("DISPLAY", NULL, NULL, NULL);//为屏幕创建设备描述表hmemdc=CreateCompatibleDC(hscrdc);//为屏幕设备描述表创建兼容的内存设备描述表nx=lpRect->left;ny=lpRect->top;nx2=lpRect->right;ny2=lpRect->bottom;// 获得屏幕分辨率xscrn = GetDeviceCaps(hscrdc,HORZRES);yscrn = GetDeviceCaps(hscrdc,VERTRES);if (nx<0)nx=0;if (ny<0)ny=0;if (nx2>xscrn)nx2=xscrn;if (ny2>yscrn)ny2=yscrn;nwidth=nx2-nx;nheight=ny2-ny;hbitmap = CreateCompatibleBitmap(hscrdc,nwidth,nheight);// 创建一个与屏幕设备描述表兼容的位图holdbitmap=(HBITMAP)SelectObject(hmemdc,hbitmap);// 把新位图选到内存设备描述表中BitBlt(hmemdc,0,0,nwidth,nheight,hscrdc,nx,ny,SRCCOPY);// 把屏幕设备描述表拷贝到内存设备描述表中hbitmap=(HBITMAP)::SelectObject(hmemdc,holdbitmap); //得到屏幕位图的句柄//清除//DeleteDC(hscrdc);::ReleaseDC(hwnd,hscrdc);DeleteDC(hmemdc);return hbitmap; // 返回位图句柄}void CHtmlSignatureAddInCtrl::PerChannelProcess(Bitmap *destImg, int destX, int destY, int destWidth, int destHeight,Bitmap *srcImg,int srcX, int srcY){BitmapData dstBD,srcBD;Rect dstRect(destX,destY,destWidth,destHeight),srcRect(srcX,srcY,destWidth,destHeight); destImg->LockBits(&dstRect,ImageLockModeRead|ImageLockModeWrite,PixelFormat24bppRG B,&dstBD);srcImg->LockBits(&srcRect,ImageLockModeRead|ImageLockModeWrite,PixelFormat24bppRG B,&srcBD);int dstStride = dstBD.Stride;int srcStride = srcBD.Stride;byte *pDst = (byte *)dstBD.Scan0;byte *pSrc = (byte *)srcBD.Scan0;for(int y = 0; y < destHeight; y++){for(int x = 0; x < destWidth * 3; x++){pDst[x + y * dstStride] = BlendDarken(pSrc[x + y * srcStride],pDst[x + y * dstStride]);}}srcImg->UnlockBits(&srcBD);destImg->UnlockBits(&dstBD);}byte CHtmlSignatureAddInCtrl::BlendDarken(byte & Src,byte & Dst){return ((Src < Dst) ? Src : Dst);}void CHtmlSignatureAddInCtrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid){Graphics graphics(pdc->m_hDC);if (m_pSigBitmap==NULL){return ;}int nWidth =m_pSigBitmap->GetWidth();int nHeight =m_pSigBitmap->GetHeight();IOleInPlaceSite *pOleInPlaceSite = NULL;IOleClientSite *pClientSite=NULL;HWND ieWnd=NULL;pClientSite= GetClientSite();if(NOERROR==pClientSite->QueryInterface(IID_IOleInPlaceSite,(LPVOID*)&pOleInPlaceSite)) {pOleInPlaceSite->GetWindow((HWND *)&ieWnd);pOleInPlaceSite->Release();}POINT p1,p2;p1.x=atol(m_ocxLeft);p1.y=atol(m_ocxTop);p2.x=atol(m_ocxLeft)+nHeight;p2.y=atol(m_ocxTop)+nWidth;m_backRect.SetRect(p1,p2);CString str;str.Format("%d",ieWnd);TRACE(" the %s \n", str);HBITMAP hbitmap=this->CopyScreenToBitmap(&m_backRect,ieWnd);Bitmap *pbitmap3=Bitmap::FromHBITMAP(hbitmap,NULL);if (p1.x<0){nWidth+=p1.x;}if (p1.y<0){nHeight+=p1.y;}PerChannelProcess(pbitmap3,0,0,nWidth,nHeight,m_pSigBitmap,0,0);graphics.DrawImage(pbitmap3,rcBounds.left,rcBounds.top,rcBounds.Width(),rcBounds.Height());graphics.ReleaseHDC(pdc->m_hDC);pbitmap3=NULL;}/////////////////////////////////////////////////////////////////////////////// CHtmlSignatureAddInCtrl::DoPropExchange - Persistence supportvoid CHtmlSignatureAddInCtrl::DoPropExchange(CPropExchange* pPX){ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));COleControl::DoPropExchange(pPX);// TODO: Call PX_ functions for each persistent custom property.PX_String(pPX,"id",m_SigID);PX_String(pPX,"ocxLeft",m_ocxLeft);PX_String(pPX,"ocxTop",m_ocxTop);PX_String(pPX,"ocxWidth",m_ocxWidth);PX_String(pPX,"ocxHeight",m_ocxHeight);PX_String(pPX,"sigPath",m_filePath);// 初始化变量USES_CONVERSION;m_pSigBitmap=Bitmap::FromFile(A2W((LPCTSTR)m_filePath),FALSE); }/////////////////////////////////////////////////////////////////////////////// CHtmlSignatureAddInCtrl::OnResetState - Reset control to default statevoid CHtmlSignatureAddInCtrl::OnResetState(){COleControl::OnResetState(); // Resets defaults found in DoPropExchange // TODO: Reset any other control state here.}/////////////////////////////////////////////////////////////////////////////// CHtmlSignatureAddInCtrl::AboutBox - Display an "About" box to the user void CHtmlSignatureAddInCtrl::AboutBox(){CDialog dlgAbout(IDD_ABOUTBOX_HTMLSIGNA TUREADDIN);dlgAbout.DoModal();}/////////////////////////////////////////////////////////////////////////////// CHtmlSignatureAddInCtrl message handlersBSTR CHtmlSignatureAddInCtrl::GetId(){CString strResult;// TODO: Add your property handler herereturn strResult.AllocSysString();}void CHtmlSignatureAddInCtrl::SetId(LPCTSTR lpszNewValue){// TODO: Add your property handler hereSetModifiedFlag();}BSTR CHtmlSignatureAddInCtrl::GetOcxLeft(){CString strResult;// TODO: Add your property handler herereturn strResult.AllocSysString();}void CHtmlSignatureAddInCtrl::SetOcxLeft(LPCTSTR lpszNewValue){// TODO: Add your property handler hereSetModifiedFlag();}BSTR CHtmlSignatureAddInCtrl::GetOcxTop(){CString strResult;// TODO: Add your property handler herereturn strResult.AllocSysString();}void CHtmlSignatureAddInCtrl::SetOcxTop(LPCTSTR lpszNewValue) {// TODO: Add your property handler hereSetModifiedFlag();}BSTR CHtmlSignatureAddInCtrl::GetOcxWidth(){CString strResult;// TODO: Add your property handler herereturn strResult.AllocSysString();}void CHtmlSignatureAddInCtrl::SetOcxWidth(LPCTSTR lpszNewValue) {// TODO: Add your property handler hereSetModifiedFlag();}BSTR CHtmlSignatureAddInCtrl::GetOcxHeight(){CString strResult;// TODO: Add your property handler herereturn strResult.AllocSysString();}void CHtmlSignatureAddInCtrl::SetOcxHeight(LPCTSTR lpszNewValue) {// TODO: Add your property handler hereSetModifiedFlag();}BSTR CHtmlSignatureAddInCtrl::GetSigPath(){CString strResult;// TODO: Add your property handler herereturn strResult.AllocSysString();}void CHtmlSignatureAddInCtrl::SetSigPath(LPCTSTR lpszNewValue) {// TODO: Add your property handler hereSetModifiedFlag();}//版权信息void CHtmlSignatureAddInCtrl::OnMenuBrandinfo(){// TODO: Add your command handler code hereCDialog dlgAbout(IDD_ABOUTBOX_HTMLSIGNA TUREADDIN);dlgAbout.DoModal();}//撤销签章LVFENG180 ********void CHtmlSignatureAddInCtrl::OnMenuCancelsig(){// TODO: Add your command handler code here// CComPtr<IScriptProcedureCollection> aProcedureSet = m_iScriptControl->GetProcedures();//long nn = aProcedureSet->GetCount();// CComPtr<IScriptProcedure> aProcedure = aProcedureSet->GetItem(_variant_t(nn));// _bstr_t strFunction = aProcedure->GetName();//***********************************************************//获取文档对象指针;lvfeng180 2008-3-12IOleClientSite *pClientSite=NULL;pClientSite= GetClientSite();IOleContainer* pContainer = NULL;IHTMLDocument2 *pDoc=NULL;IHTMLWindow2 *htmWindow=NULL;IHTMLEventObj *htmEvnt=NULL;pClientSite->GetContainer(&pContainer);if (pContainer != NULL )pContainer->QueryInterface(IID_IHTMLDocument2, (void **)&pDoc);pDoc->get_parentWindow(&htmWindow);// htmWindow->get_event(&htmEvnt);m_iScriptControl->Reset();//代码清空;m_iScriptControl->AddObject("document",pDoc,V ARIANT_TRUE);m_iScriptControl->AddObject("window",htmWindow,VARIANT_TRUE);LoadScriptFile("D:\\lvfeng\\HtmlSignatureAddin\\WebSignCtrl.js");// 准备函数参数。
电子签章平台解决方案
电子签章平台解决方案电子印章平台是为业务人员提供电子化签批技术手段,在审批过程中实现业务人员电子化签批及部门业务章的电子化签印的应用支撑平台。
通过提供数字证书服务,实现客户端登录、信息申报提交过程中的数字加密服务。
在本项目中,电子签章用于辅助业务办理系统进行业务的电化审批,主要应用于网上受理、网上审核、办结出证三个环节,实现以下功能:1.在业务人受理业务时进行电子化签批及受理信息的加密,实现受理人员身份的确认及受理信息的防篡改验证。
2.使用电子签章客户端U盾完成各部门业务人员在业务审核审批中的电子化签章,实现审批人员身份的确认及审批信息的防篡改验证。
3.在办结发证时进行证照批文电子化盖章,签章信息具有可查询、追溯。
一、整体架构政务服务申请人在线提交各类电子表单和电子文档材料时,根据所申请服务事项的要求,在电子表单和电子文档材料上加盖申请人的电子印章。
政务服务实施机构在事项办结时,在办件结果电子证照及文书上加盖签发机构的电子印章。
经加盖电子印章的表单、文档材料、电子证照、文书,均可进行签章信息查看(包括签章者姓名、印章名称、签章时间、签章保护内容等)、印章证书查看(包括印章关联证书的基本信息、有效期限、颁发机构和颁发目的等)、文档完整性检查(被篡改的文档显示无效印章的样式)。
电子印章平台是以PKI体系和数字签名等技术为基础,利用数字证书为证书载体和用户身份认证的凭证,为用户的用章行为提供授权和验证等服务,满足电子文书内容真实、完整、不可否认以及盖章、签字合法性的应用要求。
同时也可提供与签章相关联的或是增强签章安全性一些其他服务。
基于电子印章系统架构的电子印章平台的总体架构如下图所示:二、部署架构电子签章平台由电子签章服务器及签章客户端组成,部署架构如下图所示:1、电子签章服务器电子签章服务器部署在信息中心,主要负责电子签章U盾CA数字证书的颁发和使用控制,还负责进行电子签章、部门印章前的验证和印章、签名后的验证及管理工作。
基于Python与CA数字证书电子签章结合的中标通 知书智能签发
学术论坛基于Python 与CA 数字证书电子签章结合的中标通知书智能签发陆谞君(江苏电力信息技术有限公司,江苏 南京 211100)摘要:文章分析基于Python 技术与CA 数字证书结合的中标通知书智能签发,结合CA 机构的软证书(数字证书)实现中标通知书电子签章,能够实现对中标通知书文件的制作、转换、签章做到一键操作,实现批量签章(中标通知书批量生成、批量对同一份文件加盖多个签章);最后通过集成电子招标投标系统,实现中标通知书按名称自动匹配、一键发放,极大的提高了中标通知书的签发效率。
关键词:Python;CA;数字证书;电子签章;JAR;电子招投标;中标通知书在电力行业传统的招标采购业务中,中标通知书都是线下制作,人工加盖招标人及招标代理机构的单位公章,供应商需要到服务大厅现场窗口领取中标通知书,耗费了大量的人力时间成本,效率低,耗时长;随着《中华人民共和国电子签名法》的实施,确立了电子文件和电子签章的法律效力,近些年来国家发展改革委、工业和信息化部、监察部、住房城乡建设部、交通运输部、铁道部、水利部、商务部也联合制定了《电子招标投标办法》及相关附件,以数据电文形式,依托电子招标投标系统支撑完成招标投标交易,中标通知书可以依托交易平台自动生成,通过办理CA 机构颁发的数字证书以硬证书(Ukey)的形式去加盖电子签章,解决了中标通知书电子化、防篡改的问题,为文件和重要信息的网络传输提供了法律依据;但是通过Ukey 对中标通知书逐个盖章,有的中标通知书还需要加盖多个单位的公章(招标人、招标代理机构),业务人员通过电子签章工具逐个文件打开进行签章操作后再换另一把Ukey 进行操作,仍然工作量大,效率低,长时间重复劳动易出错。
1 实现方案 首先招标人、招标代理机构需要向证书颁发机构申请用于电子签章的数字证书(pfx 格式)。
证书颁发机构(CA, Certificate Authority)即颁发数字证书的机构,是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。
电子印章客户端使用手册(for word)
广州市百成科技有限公司研发部文档-使用文档百成电子印章系统标准客户端(For Word)用户手册――Version 7.2百润百成集团目录1、电子印章签章系统组成 (2)2、系统运行环境 (2)3、系统安装 (3)4、签章系统使用说明 (4)4.1 盖章 (4)4.2 验证 (7)4.2.1 离线验证 (7)4.2.2在线验证印章有效性 (11)4.2.3撤章 (14)4.3骑缝盖章 (14)4.4加密/解密 (16)4.4.1 加密 (16)4.4.2 解密 (16)4.4.3 设置 (17)4.5复制 (18)4.6设置 (19)4.6.1 印章查看授权方式 (20)4.6.2 印章信息提示 (20)5、客户端的卸载 (20)6、系统维护 (23)1、电子印章签章系统组成[百成电子印章系统](以下简称:电子印章系统)是一项计算机系统产品,它具有造印、发印、印章管理和用印电子化等功能。
为电子公文流转(或交换)提供盖章、签字、身份确认、原件检验、加密和解密等功能。
一套[百成电子印章系统]包含下述组成部分:①1个[百成电子印章系统]签章系统软件,安装在计算机(PC)中。
②1个和①配合使用的保密指纹U盘或USB KEY签名器硬件(用于保存数字证书和电子印章的硬件)。
2、系统运行环境操作系统:Windows2000/Wind ows XP/Windows 2003/Win 7办公编辑软件:MS office2000 及以上版本IE设置:IE 6.0及以上版本,Internet选项安全等级要设为中高或以下等级3、系统安装1)安全外设驱动的安装双击运行本目录下的“U-Key驱动ePass3003.exe”安装程序。
默认安装即可。
2)运行安装电子印章“百成电子印章应用系统V7.2(MS-Word标准版).exe”程序,在安装的过程中会出现一系列窗口,根据提示依次点击“下一步”,即安装成功,安装完成桌面出现图标,双击打开出现下图。
电子签名系统开发文档
电子签名系统开发文档一、引言电子签名是指在电子文件中增加数字签名或者电子签章,以确保文件完整性、身份认证和抗否认性。
电子签名系统则是为了实现电子签名功能而进行开发的一套软件系统。
本文档将详细介绍电子签名系统的开发过程以及相关功能和技术。
二、系统概述电子签名系统开发旨在提供一个安全可靠的电子签名解决方案,以满足用户对文件完整性和信任的需求。
系统主要包括用户界面、签名管理、证书管理和文件管理等模块,并采用现代密码学算法保障签名的安全性。
三、系统功能3.1 用户界面用户界面是系统与用户进行交互的入口,需要提供友好的操作界面和易于理解的功能布局。
用户可以在界面上选择需要签名或验证的文件,并进行相应的操作。
3.2 签名管理签名管理模块是系统的核心功能之一,主要包括密钥管理、签名生成和签名验证等功能。
用户可以在该模块中生成自己的数字签名,并将签名与所需文件关联,确保文件的完整性。
3.3 证书管理证书管理模块用于管理用户的数字证书,包括证书的生成、导入和验证等功能。
系统通过数字证书对签名进行身份认证,以确保签名的可信度和防止伪造。
3.4 文件管理文件管理模块负责对用户所需签名或验证的文件进行管理,包括文件上传、下载和存储等功能。
系统需要提供高效安全的文件传输和存储方式,保障文件的完整性和机密性。
四、系统设计4.1 技术选型在系统设计过程中,我们选用了以下技术来实现电子签名系统的功能:- 前端开发:采用HTML、CSS和JavaScript等前端技术,实现用户界面的设计和交互功能。
- 后端开发:采用Java语言,结合Spring框架和MySQL数据库等技术实现系统的业务逻辑和数据存储。
- 安全算法:采用RSA非对称加密算法和SHA-256哈希算法等保障签名的安全性和完整性。
4.2 系统架构电子签名系统采用B/S架构,即将前端界面和后端逻辑分离,通过Web浏览器来访问和操作系统功能。
前端界面与后端服务器通过HTTP 协议进行通信,实现用户与系统之间的交互。
电子行业电子签章系统简介-x
电子行业电子签章系统简介1. 概述随着数字化时代的到来,电子签章系统在各行业中得到了广泛应用。
电子签章系统是一种利用密码学技术实现电子签名和文件安全传输的解决方案。
它可以有效地替代传统的纸质签章方式,为企业提供更高效、安全和便捷的签约体验。
本文将对电子行业电子签章系统进行全面介绍,包括其基本原理、主要功能和应用场景等。
2. 基本原理电子签章系统的基本原理是利用非对称加密算法生成数字证书,将其与签名者的身份信息相绑定,确保签名的真实性和完整性。
当签名者对文件进行签名时,系统会将签名者的私钥与文件的哈希值进行加密,生成签名数据。
同时,系统还会将签名者的公钥与签名数据一起存储在数字证书中。
在文件接收者验证签名时,系统会使用签名者的公钥解密签名数据,再与文件的哈希值进行比对,以确保签名的有效性。
如果签名有效,接收者可以信任文件的来源和内容。
3. 主要功能电子行业电子签章系统具有以下主要功能:3.1 数字证书管理电子签章系统通过建立信任链,实现对数字证书的管理。
系统可以为签名者颁发数字证书,同时可以验证接收者提交的数字证书的有效性。
3.2 文件签名电子签章系统可以对各类文件进行数字签名,包括合同、协议、报告等。
签名过程中,系统将文件的摘要和签名者的私钥进行加密生成签名数据,并将其存储在数字证书中。
3.3 签名验证电子签章系统可以对签名后的文件进行验证。
系统会解密签名数据,并与文件的哈希值进行比对,以确保签名的有效性。
验证结果将反映签名者的身份和文件的完整性。
3.4 时间戳电子签章系统还提供时间戳功能,用于确保签名的时间准确性。
签名者可以通过时间戳服务,将签名时间戳作为附件与签名文件一同存储,以后可以作为证据进行法律效力的证明。
4. 应用场景电子签章系统在电子行业中有着广泛的应用场景,以下列举了一些典型的应用场景:4.1 合同签约电子签章系统可以实现在线合同签约,签署双方可以通过系统进行电子签名,避免了传统纸质合同签订的流程繁琐和耗时的问题,提高了合同签约的效率。
诺机械电子签名系统使用手册
Cad设计审核(签名)系统KwSignCore用户手册什么是电子签章电子签章是电子签名的一种表现形式,利用图像处理技术将电子签名操作转化为与纸质文件盖章操作相同的可视效果,同时利用电子签名技术保障电子信息的真实性和完整性以及签名人的不可否认性。
电子签章,泛指所有以电子形式存在,依附在电子文件并与其逻辑关联,可用以辨识电子文件签署者身份,保证文件的完整性,并表示签署者同意电子文件所陈述事实的内容。
一般来说,对电子签章的认定,都是从技术角度而言的。
主要是指通过特定的技术方案来鉴别当事人的身份及确保交易资料内容不被篡改的安全保障措施。
从广义上讲,电子签章不仅包括我们通常意义上讲的“非对称性密钥加密”,也包括计算机口令、生物笔迹辨别、指纹识别,以及新近出现的眼虹膜透视辨别法、面纹识别等。
目前,最成熟的电子签章技术就是“数字签章”,它是以公钥及密钥的“非对称型”密码技术制作的电子签章。
什么是数字签名数字签名是一种确保数据完整性和原始性的方法。
由于数据被签名并确认了对数据签名的人或实体的身份,因此数字签名供有力的证据。
数字签名启用“完整性”和“认可”这两项重要安全功能,这是实施安全电子商务的基本要求。
当数据以明文或未加密形式分发时,通常使用数字签名。
因为在分布式计算环境中,网络上的任何人使用适当的访问都可能读取或改变明文文本而无论是否授权,在这些情况下,当消息本身的敏感度不能保证加密时,将强制数字签名以确保数据保持原始形式并且没有被冒名者发送。
KwSignCore主要功能文档签名:在AutoCAD文档上任意地方(主要是标题栏中)实现单个或批量签署个人签名。
一个文件可以有多个不同类型或相同类型的签名,签名时可以根据签名类型、签名的优先级设置判断是否可以进行该类签名,并自动获得签名位置。
文件中支持多个签名。
签名可以在单机和数据库支持的网络环境中使用,签名信息可以绑定到DWG文件(可绑定整个文件、单个图层或多个图层)上。
江苏省财政厅关于更换全省政府采购交易系统CA数字证书和电子签章的通知
江苏省财政厅关于更换全省政府采购交易系统CA数字证书和电子签章的通知文章属性•【制定机关】江苏省财政厅•【公布日期】2023.08.23•【字号】苏财购〔2023〕101号•【施行日期】2023.08.23•【效力等级】地方规范性文件•【时效性】现行有效•【主题分类】政府采购正文江苏省财政厅关于更换全省政府采购交易系统CA数字证书和电子签章的通知苏财购〔2023〕101号省各部委办厅局,省各直属单位,各设区市、县(市)财政局:根据关于建设全省统一的政府采购交易系统的决策部署,省财政厅通过政府采购程序完成了全省政府采购交易系统CA(数字证书)和电子签章采购。
经研究,决定在全省开展政府采购交易系统CA和电子签章更换工作。
现就有关事项通知如下。
一、工作内容将全省各级采购人、采购代理机构、评审专家、参与我省政府采购活动的供应商使用的“苏采云”政府采购交易系统原CA更换为江苏省电子政务证书认证中心CA(由江苏意源科技有限公司提供服务),将原电子签章更换为方正国际软件(北京)有限公司电子签章。
二、时间安排(一)更换阶段。
全省各级采购人和集中采购机构原则上于2023年9月10日前完成更换;评审专家、社会代理机构、供应商的更换时间,由各地根据当地电子化采购项目实施情况合理确定。
(二)过渡阶段。
2023年9月11日-10月11日为过渡阶段,在此期间:对9月11日前发布采购公告的项目,供应商需使用原CA和电子签章参加开标和评标活动;对9月11日后发布采购公告的项目,供应商只能使用新CA和电子签章参与项目。
“苏采云”系统自9月11日起支持所有用户进行原CA解绑和新CA绑定操作。
(三)正式启用阶段。
10月12日起,“苏采云”系统正式启用新CA和电子签章,不再支持原CA和电子签章。
各用户只能使用新CA和电子签章开展采购活动。
三、注意事项(一)关于停办原CA电子签章。
自本通知印发之日起,各级财政部门应当综合运用政府采购网、手机短信、媒体公告等方式,通知采购人、采购代理机构、评审专家和供应商停止办理原CA和电子签章。
北京安证通电子签章系统接口说明文档
SetText(var CtrlName,var strCont)
审批意见以及日期设置接口,CtrlName为书签名称strCont为传递的内容
通过该方法,通过页面向word的书签中传值。
14.
ShowOfficeBtn(Var BtnGon,var BtnPri,var PrintSet,Var PrintDoc)
8.8
RedSignToBlack()
红章转化成黑章的接口。
9.9
BlackSignToRed()
黑章转化成红章的接口。
10.10
ProtectDoc( )
盖章文档锁定:不盖章的文档此方法无效
11.11
UnProtectDoc( )
盖章文档解锁
12.12
DeleteSign()
删除印章:可以直接删除文档中所有印章和样章
3.3
DocPrintSet( )
打印设置(印章系统控制模式)
打印控制分两种模式,OA控制、印章系统控制。OA控制优点在于可以指定不同人员对某份文档的拥有不同打印份数,印章系统控制只针对特定文档设打印份数,每个具有卡的人都对此文档具有相同打印份数。
4.4
PrintDoc()
打印文档(印章系统控制模式)
ProtectArea保护区域;分节点保护,传入保护节点列表,以,分开如1,2,3;
分区域书签保护,指定保护区域内容传入保护书签列表,以,分开如mark1,mark2,mark3,mark4;分区域书签保护,指定不保护区域内容,以,分开如mark5,mark6,mark7
YangZhang是否有样章过程0有样章1没有样章,一次性成正章
控件WORD按钮的隐藏、显示;四个参数均为布尔型。BtnGon公章,BtnPri个人签名,PrintSet打印设置,PrintDoc打印文档。
安全电子印章系统的设计与实现
安全电子印章系统的设计与实现王淼;刘胜厚【摘要】Compared with traditional seal, electronic seal is easier to use and lower in cost. But there will be much more possible for it to be stolen if it is not kept in a secure environment. This paper explores the structure of secure electronic seal system from hardware and software.%电子印章与传统印章相比具有简单、快捷、低成本等很多优点。
但是如果电子印章没有保存在安全的环境之中,它被窃取的可能性将会比传统印章大得多。
从硬件和软件两个方面提出了安全电子印章的系统结构。
【期刊名称】《北京工业职业技术学院学报》【年(卷),期】2012(011)001【总页数】3页(P71-73)【关键词】电子印章;盖章;验章【作者】王淼;刘胜厚【作者单位】北京工业职业技术学院信息工程系,北京100042;北京工业职业技术学院信息工程系,北京100042【正文语种】中文【中图分类】TP390 引言随着计算机技术的发展,长期以来文书等信息以电子化的形式存储于计算机中,并在网络上传输。
这虽然提高了工作效率,节约了大量的人力和物力,但是如何保证这些公文的合法性,唯一性,可追溯性,不可复制性,不可篡改性。
电子印章技术就是为了解决以上这些问题而提出的。
电子印章除了具有原始印章的物理特性,更主要的是数字化的。
电子印章将会促进无纸化办公的发展,在大力提倡环保的今天,电子印章的发展将会有广泛的应用前景。
随着电子商务,电子政务的发展,电子文档逐渐取代了纸质文档。
这种转化一方面可以提高我们的工作效率,节约大量资源,另一方面也带来了电子文档的安全性问题。
优泰电子签章系统使用说明
优泰电子签章系统用户手册南京优泰科技发展有限公司2013年4月25日文档修订记录版本日期内容创建审核1.0 2013-4-24 创建屈贝宁目录一.公司简介 (5)二.系统简介 (5)2.1系统特点 (5)2.1.1安全可靠 (5)2.1.2技术先进 (6)2.1.3标准规范 (6)2.2功能简介 (7)三.运行环境 (7)3.1软件环境 (7)3.2硬件环境 (8)四.系统安装 (8)4.1安装注意事项 (8)4.2安装软件 (8)五.系统使用 (11)5.1工具栏简介 (11)5.2签章 (12)5.2.1添加签章 (12)5.2.2删除签章 (13)5.2.3重新签章 (13)5.3验证签章 (14)5.4批量签章 (17)5.5签章帮助 (21)六.获得更多信息及支持 (22)6.1技术支持 (22)6.2电子钥匙办理 (22)一.公司简介优泰科技发展有限公司(United Technology Computer Corp.,Ltd.)是一家致力于中国市场信息资源管理及一体化安全解决方案的专业技术服务公司。
自2000年成立以来,优泰科技(UTC)凭借领先的技术力量和丰富的实践经验为用户提供了大量的国际化的优秀软件产品和解决方案,并实施了众多大、中型项目,推动了电子政务、企业信息化、网络安全、和电子商务在中国的发展。
优泰科技(UTC)的专业服务队伍群英荟集。
我们为企业提供包括信息安全体系、信息资源管理体系、综合的信息服务体系、网络基础架构、B2B/B2C 电子商务应用、企业应用整合等解决方案的规划、设计和实施。
优泰科技(UTC)提供的应用整合技术、统一用户管理技术、PKI身份认证技术已经在很多大、中型企业得到实施和应用。
优泰科技(UTC)将借助多年来在中国积累的成功经验为用户在信息化经济时代的成功提供技术保障。
二.系统简介2.1系统特点2.1.1安全可靠1.印章来源可靠:通过数字证书和印章位图的绑定确保印章来源可靠。
