[英]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.