91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用Javascript創建數字簽名

發布時間:2022-02-23 16:59:29 來源:億速云 閱讀:363 作者:iii 欄目:開發技術

本篇內容介紹了“怎么使用Javascript創建數字簽名”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

有時需要讓用戶簽署文本以證明他是完成操作的人。例如,在電子銀行軟件中,用戶可能必須簽署描述交易的文本(“向 IBAN xxxxxxxxx 轉賬 300 美元”),或簽署政府電子服務請求。這可以通過 java-applet 來實現,但由于 JRE 所有者不是大多數,因此最好使用其他方式。

當然,前提是用戶有CA簽發的數字簽名,并按照CA的手冊在瀏覽器中安裝證書。如果這些步驟沒有成功完成,下面的解決方案將不起作用。

另請注意,這使用 PKCS7(Java 開發人員:使用充氣城堡來驗證它),而不是 XAdES 標準。Internet Explorer 支持 XAdES,但 FireFox 不支持。

讓我們看一個應該對給定文本進行簽名的簡單 HTML 頁面:

<script src="sign.js" type="text/javascript"></script>
 
<input id="text" type="text" />
<input onclick="signDigest(document.getElementById('text').value);" type="button" value="Sign" />

然后是 JavaScript 本身:

function signDigest(text)
{
if(window.event)
window.event.cancelBubble =true;
 
var dest = sign(text);//TODO
alert(dest);
return dest;
}
 
// CAPICOM constants
var 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 objects
var MyStore =new ActiveXObject("CAPICOM.Store");
// open the current users personal certificate store
MyStore.Open(CAPICOM_CURRENT_USER_STORE,"My", CAPICOM_STORE_OPEN_READ_ONLY);
 
// find all of the certificates that have the specified hash
var FilteredCertificates = MyStore.Certificates.Find(CAPICOM_CERTIFICATE_FIND_SHA1_HASH, strUserCertigicateThumbprint);
 
var Signer =new ActiveXObject("CAPICOM.Signer");
Signer.Certificate = FilteredCertificates.Item(1);
return Signer;
 
// Clean Up
MyStore =null;
FilteredCertificates =null;
}
catch (e)
{
if (e.number != CAPICOM_E_CANCELLED)
{
return new ActiveXObject("CAPICOM.Signer");
}
}
}
 
function sign(src)
{
if(window.crypto &amp;&amp; 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 objects
var SignedData =new ActiveXObject("CAPICOM.SignedData");
var TimeAttribute =new ActiveXObject("CAPICOM.Attribute");
 
// Set the data that we want to sign
SignedData.Content = src;
var Signer = FindCertificateByHash();
 
// Set the time in which we are applying the signature
var Today =new Date();
TimeAttribute.Name = CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME;
TimeAttribute.Value = Today.getVarDate();
Today =null;
Signer.AuthenticatedAttributes.Add(TimeAttribute);
 
// Do the Sign operation
var 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創建數字簽名”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

喀喇| 连城县| 随州市| 大名县| 富蕴县| 钦州市| 乳源| 固安县| 永和县| 普兰店市| 石渠县| 大埔县| 广德县| 靖宇县| 正镶白旗| 伊金霍洛旗| 枣阳市| 东山县| 玉田县| 青龙| 东明县| 双桥区| 玛多县| 莱州市| 宁安市| 紫金县| 瓮安县| 枣强县| 方正县| 广东省| 武宣县| 博客| 安丘市| 昌吉市| 新乡市| 繁峙县| 古浪县| 凤凰县| 宁强县| 西城区| 廉江市|