怎么使用Javascript创建数字签名
发表于:2025-11-18 作者:千家信息网编辑
千家信息网最后更新 2025年11月18日,本篇内容介绍了"怎么使用Javascript创建数字签名"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成
千家信息网最后更新 2025年11月18日怎么使用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安全错误
数据库的锁怎样保障安全
软件开发的先征的部分分录
卫生信网络安全
上海数据库管理员工资
意识形态 网络安全方面
外星人算服务器吗
一念间网络技术
我的世界服务器消费礼包插件
我的世界服务器怎么重复一段话
奎文软件开发
收件服务器端口是什么
接口软件开发协议
扫描数据库
数据库转换dat
瀚城网络技术是干嘛的
牛牛豆科技互联网公司
如何修改数据库文件组大小
数美科技与互联网
初中网络安全知识普及竞赛
罗村网络安全厂家
推广网络技术近期价格
前端绘图软件开发
华为服务器处理器规格
浙江专业软件开发哪家正规
建立网络安全教育长效机制
延庆区正规软件开发诚信经营
广州市哪个公司软件开发的好
网络安全火热征集
网络安全大赛腾讯360
海西138号段数据库
gps怎么传入服务器