0

I have some code in nodejs and I am trying to replicate in in C# but I can't seem to find a simple solution like the nodejs one:

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.

Basically i will be singing a string in C# and then verifying the signature of the string in nodeJS with the obove code for verify.

So I am looking for an equvalent of:

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

in C#.

Chester0
  • 43
  • 1
  • 1
  • 5

1 Answers1

0

A head start:

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);
bolkay
  • 1,881
  • 9
  • 20
  • answering my own comment: mySHA.LoadPrivateFromXml(@"C:\privateKey.xml"); mySHA.LoadPublicFromXml(@"C:\publicKey.xml"); – Chester0 Nov 09 '18 at 05:37
  • This should help you.[link](https://blogs.msdn.microsoft.com/alejacma/2008/06/25/how-to-sign-and-verify-the-signature-with-net-and-a-certificate-c/) – bolkay Nov 09 '18 at 06:17