我试图获取网站登录页面和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");
}
这是唯一涉及双方加密的代码。
答案 0 :(得分:3)
像13这样的值只是&#34; D&#34;不是&#34; 0D&#34;就像在散列中表示的那样。您需要填充小于2位的值。使用&#34; X2&#34;作为格式字符串。