簡體   English   中英

C#SHA256 RSA簽名。 如何從byte []符號中提取字符串?

[英]C# SHA256 RSA Signing. How to take a string from byte[] sign?

我必須使用一些API,該服務具有我的證書。 他們可能希望我的標志驗證其服務器上的證書與該標志是否相同。 我不確定,但是。 在文檔中是說明:

sign_base = 
<?xml version="1.0" encoding="UTF-8"?> <ds:SignedInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">  

//big XML, but i can't paste it here, because of NDA i signed (with pen ;-)) 

</ds:Reference> </ds:SignedInfo> 

rsa_sha256(sign_base) = 
113c7ed1e66e1ef77c0857d418928bdf1d3bdf27b8d06c7...40d1c0a259733ad0b1b2
// its long hash so i made "..." it is 516 characters there. 

base64(rsa_sha256) =  ETx+0eZuHvd8CFfUGJKL3x073ye40Gx7mB0.... tCxsg==
//it is a base64 of rsa_256 hash above.

受SoF問題的啟發,我嘗試使用RSACryptoServiceProvider provider = new RSACryptoServiceProvider(); 然后var signed = provider.SignData(sign_base, CryptoConfig.CreateFromName("SHA256")); 但是結果只給我bytes[] 當我將bytes[]解碼為UTF-8 string結果不可讀“ ????????? .. ???” 我可以將其與其他符號進行比較,並執行RSACryptoServiceProvider()允許的所有工作,但我的問題是:

他們希望在請求中將此哈希作為參數發送,因此將其聲明為base64字符串。 我只需要發送base64格式的消息,但是我必須首先計算它。

如何獲得這個符號的字符串? 也許我的選擇有誤,我做錯了嗎? 如果您以不同於C#的語言給我幫助,也會有所幫助。

如果我很好理解並提供了正確的簽名,則一旦將其作為byte[]即可使用System.Convert.ToBase64String使用Convert.ToBase64String(byte[] data) 與您所做的不同,您應該能夠看到類似於示例的String。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM