[英]Get private key file with sha256 in C #
目前,我通過openssl執行此操作,並且生成的文件沒有問題
openssl dgst -sha256 -sign privateKey.key -out file.txt.signature file.txt
現在,我們想使用C#自動生成文件,但是我無法獲得相同的結果。
public class Program
{
static void Main(string[] args)
{
Console.WriteLine(CreateToken("key...", "text"));
Console.ReadLine();
}
public static string CreateToken(string key, string message)
{
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
byte[] keyByte = encoding.GetBytes(key);
HMACSHA256 hmacsha256 = new HMACSHA256(keyByte);
byte[] messageBytes = encoding.GetBytes(message);
byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
return System.Text.Encoding.UTF8.GetString(hashmessage);
}
}
我是新手,什么是正確的方法?
我是否無法正確檢索信息?,是否應該直接從文件中獲取內容?
非常感謝你。
簽名生成與HMAC消息身份驗證不同,它使用不同的密鑰。 由於HMAC可以使用任何大小的密鑰,因此可能會使用私鑰,但這不是應該的方式。 RSA是使用私鑰和公鑰的非對稱算法,MAC使用對稱的秘密密鑰。 而是使用dgst -sign
使用RSA PKCS#1 v1.5填充對文件進行簽名。
簽名文件時,dgst將基於私鑰的ASN.1信息自動確定用於簽名的算法(RSA,ECC等)。 驗證簽名時,它僅處理RSA,DSA或ECDSA簽名本身,而不處理相關數據來標識以x.509,CMS和S / MIME等格式使用的簽名者和算法。
HMAC與SHA-256也不相同。 RSA簽名生成使用哈希而不是HMAC。 您應該使用SHA256類創建哈希。 HMAC是使用 SHA-256哈希的消息身份驗證代碼構建 。 但是,不需要SHA類,因為簽名生成通常包括哈希生成(您對消息簽名,而不是哈希值)。
因此,要創建簽名,請查看RSAPKCS1SignatureFormatter類,該類在底部包括一個示例。 使用此示例再試一次。
確保您的消息僅包含ASCII(文本文件中和字符串中都包含),否則結果也可能失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.