怎么使用Javascript创建数字签名
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容介绍了"怎么使用Javascript创建数字签名"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成
千家信息网最后更新 2026年11月03日怎么使用Javascript创建数字签名
本篇内容介绍了"怎么使用Javascript创建数字签名"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
有时需要让用户签署文本以证明他是完成操作的人。例如,在电子银行软件中,用户可能必须签署描述交易的文本("向 IBAN xxxxxxxxx 转账 300 美元"),或签署政府电子服务请求。这可以通过 java-applet 来实现,但由于 JRE 所有者不是大多数,因此最好使用其他方式。
当然,前提是用户有CA签发的数字签名,并按照CA的手册在浏览器中安装证书。如果这些步骤没有成功完成,下面的解决方案将不起作用。
另请注意,这使用 PKCS7(Java 开发人员:使用充气城堡来验证它),而不是 XAdES 标准。Internet Explorer 支持 XAdES,但 FireFox 不支持。
让我们看一个应该对给定文本进行签名的简单 HTML 页面:
然后是 JavaScript 本身:
function signDigest(text){if(window.event)window.event.cancelBubble =true; var dest = sign(text);//TODOalert(dest);return dest;} // CAPICOM constantsvar CAPICOM_STORE_OPEN_READ_ONLY = 0;var CAPICOM_CURRENT_USER_STORE = 2;var CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0;var CAPICOM_CERTIFICATE_FIND_EXTENDED_PROPERTY = 6;var CAPICOM_CERTIFICATE_FIND_TIME_VALID = 9;var CAPICOM_CERTIFICATE_FIND_KEY_USAGE = 12;var CAPICOM_DIGITAL_SIGNATURE_KEY_USAGE = 0x00000080;var CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME = 0;var CAPICOM_INFO_SUBJECT_SIMPLE_NAME = 0;var CAPICOM_ENCODE_BASE64 = 0;var CAPICOM_E_CANCELLED = -2138568446;var CERT_KEY_SPEC_PROP_ID = 6; function IsCAPICOMInstalled(){if(typeof(oCAPICOM) =="object"){if( (oCAPICOM.object !=null) ){// We found CAPICOM!return true;}}} function FindCertificateByHash(){ try{// instantiate the CAPICOM objectsvar MyStore =new ActiveXObject("CAPICOM.Store");// open the current users personal certificate storeMyStore.Open(CAPICOM_CURRENT_USER_STORE,"My", CAPICOM_STORE_OPEN_READ_ONLY); // find all of the certificates that have the specified hashvar FilteredCertificates = MyStore.Certificates.Find(CAPICOM_CERTIFICATE_FIND_SHA1_HASH, strUserCertigicateThumbprint); var Signer =new ActiveXObject("CAPICOM.Signer");Signer.Certificate = FilteredCertificates.Item(1);return Signer; // Clean UpMyStore =null;FilteredCertificates =null;}catch (e){if (e.number != CAPICOM_E_CANCELLED){return new ActiveXObject("CAPICOM.Signer");}}} function sign(src){if(window.crypto && window.crypto.signText)return sign_NS(src); return sign_IE(src);} function sign_NS(src){var s = crypto.signText(src,"ask" );return s;} function sign_IE(src){try{// instantiate the CAPICOM objectsvar SignedData =new ActiveXObject("CAPICOM.SignedData");var TimeAttribute =new ActiveXObject("CAPICOM.Attribute"); // Set the data that we want to signSignedData.Content = src;var Signer = FindCertificateByHash(); // Set the time in which we are applying the signaturevar Today =new Date();TimeAttribute.Name = CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME;TimeAttribute.Value = Today.getVarDate();Today =null;Signer.AuthenticatedAttributes.Add(TimeAttribute); // Do the Sign operationvar szSignature = SignedData.Sign(Signer,true, CAPICOM_ENCODE_BASE64);return szSignature;}catch (e){if (e.number != CAPICOM_E_CANCELLED){alert("An error occurred when attempting to sign the content, the errot was: " + e.description);}}return "";}"怎么使用Javascript创建数字签名"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
数字
数字签名
文本
用户
内容
更多
电子
知识
支持
实用
成功
学有所成
接下来
人员
作用
前提
可以通过
困境
城堡
实际
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
疫情对互联网科技公司影响
港股互联网科技股
互联网科技金融
撒么互联网科技公司
广西拼得多互联网科技有限公司
互联网 科技馆
互联网汽车科技小镇
小米互联网科技园设置
重庆互联网医院沙龙医盟信息科技
河南住房之家互联网科技
内蒙古九一互联网科技
爱医互联网络科技
上海钢联属于互联网科技股吗
互联网企业科技类企业如何做账
城市宝互联网科技有限公司
互联网高科技行业有哪些企业
互联网科技手机排行榜
三亚科技创新互联网基地
互联网科技创业计划的风险分析
伍佰万互联网科技是干嘛的
高科技互联网
科技与互联网发展
万易互联网科技
远拓互联网科技
居家互联网科技有限公司
河南猎农互联网科技有限公司
畅思互联网科技
科技互联网经济论坛
互联网科技品牌
互联网科技大佬云集