怎么使用Javascript创建数字签名
发表于:2024-10-05 作者:千家信息网编辑
千家信息网最后更新 2024年10月05日,本篇内容介绍了"怎么使用Javascript创建数字签名"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成
千家信息网最后更新 2024年10月05日怎么使用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安全错误
数据库的锁怎样保障安全
易智瑞杯软件开发竞赛目的
文件管理支持服务器是什么
社区金融网络安全宣传标语
英雄联盟美国服务器
官方服务器哪里下载
新电脑无法访问steam服务器
小型团队软件开发 pdf
电脑服务器停止运行怎么修
oracle11g服务器导入
深朗软件开发怎么样
dhcp服务器开启dns
网络安全战略卢森堡
华珍梅网络技术
网络安全宣传周承办单位
网信办做好春节期间网络安全工作
败笔网络安全小组件图片橙色
数据库访问流量
服务器虚拟磁盘
软件开发就是将近态转为动态
广东省网络安全白皮书
绍兴网络技术培训班
海康威视服务器系统重置
网络安全大会海量数据
gsm网络安全性
dhcp服务器开启dns
万方数据库期刊检索
安装数据库如何创建
软件开发税务服务类型
安恒信息可以做网络安全吗
熟悉数据库技术