c# - 使用 SHA256 在 C# 中签名文本
问题描述
我在 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# 中。
解决方案
抢先一步:
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);
推荐阅读
- sql-server - Transact SQL:具有特定逻辑的有序行内的字符串连接
- c# - 请求失败,HTTP 状态 401:调用 Web 服务时未授权
- ruby - Ruby `cweek` 返回 1 而不是 53
- solr - Solr:查询 Facet 和计数缺失
- python - 如何访问字典中的键?
- scipy - 生成相关正态分布随机样本时,协方差矩阵如何影响输出?
- javascript - 使用 Animate Plus 在按钮单击时动画整页滚动
- javascript - 从列表到可折叠菜单树
- c# - 在 .Net Core OData-Api 中通过一项操作为实体添加不同的引用
- angular - 角材料滑块不滑动