【问题标题】:Sign text in C# with SHA256使用 SHA256 在 C# 中签名文本
【发布时间】:2023-03-08 07:20:01
【问题描述】:

我在 nodejs 中有一些代码,我正在尝试在 C# 中复制,但我似乎找不到像 nodejs 那样的简单解决方案:

var crypto = require('crypto');

var privateKey = '-----BEGIN RSA PRIVATE KEY-----\n'+
      /// key removed
'-----END RSA PRIVATE KEY-----';

var publicKey = '-----BEGIN PUBLIC KEY-----\n'+
      /// key removed
'-----END PUBLIC KEY-----';

// sign string
var signer = crypto.createSign('sha256');
signer.update('ugus-dev/logo.png');
var sign = signer.sign(privateKey,'base64');
console.log(sign);

// verify signature 
var verifier = crypto.createVerify('sha256');
verifier.update('ugus-dev/logo.png');
var ver = verifier.verify(publicKey, sign,'base64'); 

console.log(ver); // true if signature matches.

基本上我会在 C# 中唱出一个字符串,然后在 nodeJS 中使用上面的验证代码验证字符串的签名。

所以我正在寻找一个等价的:

// sign string
var signer = crypto.createSign('sha256');
signer.update('ugus-dev/logo.png');
var sign = signer.sign(privateKey,'base64');

在 C# 中。

【问题讨论】:

标签: c# node.js cryptography sign


【解决方案1】:

抢先一步:

using System.Security.Cryptography;
using System.Text;

SHA256 mySHA=SHA256.Create();
string myText="yourText";
byte[] byteArr=Encoding.UTF8.GetBytes(myText);
byte[] hash=mySHA.ComputeHash(byteArr);

string res=BitConverter.ToString(hash);
//Or 
string res=Convert.ToBase64String(hash);

【讨论】:

  • 回答我自己的评论:mySHA.LoadPrivateFromXml(@"C:\privateKey.xml"); mySHA.LoadPublicFromXml(@"C:\publicKey.xml");
  • 这应该对你有帮助。link
猜你喜欢
  • 2012-05-27
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 2020-07-11
  • 2020-07-09
  • 2019-02-14
  • 2022-01-21
  • 2012-01-19
相关资源
最近更新 更多