【问题标题】:Convert Hash256 String Result to Uppercase?将 Hash256 字符串结果转换为大写?
【发布时间】:2015-03-23 15:35:19
【问题描述】:

我正在尝试获取网站登录页面和 C# 启动器以连接到 MySQL 数据库,我的 C# 代码将字符串转换为 SHA256,但为大写。所以我认为在 PHP 中更改会更容易,所以使用strtoupper 我传递了加密密码的变量字符串。效果很好,唯一的问题是:

bec4c38f480db265e86e1650b1515216be5095f7a049852f76eea9934351b9ac - Original
BEC4C38F48DB265E86E1650B1515216BE5095F7A049852F76EEA9934351B9AC - C#
          ^ Right here there is meant to be a 0

我不确定出了什么问题,因为两者都使用完全相同的加密方法,而且奇怪的是它只有一个字符...以前有没有人经历过这种情况?

PHP 将文本加密为 SHA256 然后 strtoupper:

$encrypt_password=(hash('sha256', $mypassword));
$s_password = strtoupper($encrypt_password);

C# 将字符串转换为 SHA256:

System.Security.Cryptography.SHA256 sha256 = new System.Security.Cryptography.SHA256Managed();
byte[] sha256Bytes = System.Text.Encoding.Default.GetBytes(txtpass.Text);
byte[] cryString = sha256.ComputeHash(sha256Bytes);
string sha256Str = string.Empty;
for (int i = 0; i < cryString.Length; i++)
{
    sha256Str += cryString[i].ToString("X");
}

这是唯一涉及双方加密的代码。

【问题讨论】:

  • 能否给出相关代码?
  • 我刚刚编辑了上面的帖子,谢谢你的回复。
  • 我已经用你的 php 代码产生了很好的结果,但不幸的是我无法检查 C# 代码。

标签: c# php mysql


【解决方案1】:

像 13 这样的值只是“D”而不是“0D”,就像在哈希中表示的那样。您需要填充小于 2 位的值。使用“X2”作为格式字符串。

【讨论】:

  • 谢谢,我对使用 C# 进行密码学还很陌生,但这很有效。
猜你喜欢
  • 2018-09-16
  • 1970-01-01
  • 1970-01-01
  • 2012-01-08
  • 1970-01-01
  • 1970-01-01
  • 2014-07-17
  • 2019-07-15
相关资源
最近更新 更多