怎么使用Javascript创建数字签名
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,本篇内容介绍了"怎么使用Javascript创建数字签名"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成
千家信息网最后更新 2025年01月20日怎么使用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安全错误
数据库的锁怎样保障安全
服务器必备提示指令
我的世界租赁服务器怎么变操作员
德赛西威软件开发笔试
梦幻西游登陆该服务器
刀片服务器维修费需要多少钱
数据库求偶数的平均值
当数据库的恢复模式为什么时
僵尸毁灭工程与服务器卡
网络安全模式鼠标键盘仍无反应
数据库技术应用理论知识试卷
互联网新科技技术
钻块服务器
特定网络技术服务产品
虚拟机数据库系统安装
数据库技术 硕士科目代码
阿里云服务器云盾关闭
云计算虚拟化平台与传统服务器
混沌与秩序ol 亚洲服务器
网络安全三级和二级区别
上海辅助网络技术中心收费
好看的科技互联网banner
软件开发师前景如何
计算机网络技术和网络工程师
黑奔互联网科技有限公司
佳龙互联网网络科技
网络安全法的特征不包括哪种
如何连接服务器的共享文件
芜湖县租房网络安全
网络技术搬砖
厦门设备信息化管理软件开发