【发布时间】:2022-01-27 06:28:14
【问题描述】:
字符串在文本文件 testx.txt 中找到 字符串是 Nw[v|YK 我相信它包含 utf8 个字符
ifstream infile("testx.txt");
if (infile.good())
{
string sLine;
getline(infile, sLine);
char* cx = const_cast<char*>(sLine.c_str());
string a2 = md5.digestString(cx);
cout << a2 << endl;
}
我一直在做我的 vb.net 代码并将其作为字符串读取然后尝试 md5 它......是因为它的 utf8 吗?我该怎么做才能将其读取为字符串并获得正确的 md5?
vb.net md5 代码
Public Function GetIRC7PWD(source As String)
Dim md5Hash As MD5 = MD5.Create()
Dim data As Byte() = md5Hash.ComputeHash(Encoding.Default.GetBytes(source))
Dim sBuilder As New StringBuilder()
Dim i As Integer
For i = 0 To data.Length - 1
sBuilder.Append(data(i).ToString("x2"))
Next i
Return sBuilder.ToString()
End Function
End Module
文本文件可以找到@https://tha-row.net/testx.txt
Dim lines() As String = IO.File.ReadAllLines("d:\\testx.txt")
Dim line As String = lines(0)
Dim a1 As String = GetIRC7PWD(line)
a1 返回 3be255619a53ec2af553e0cae9606a9a 的正确哈希
现在我有一个 c++ 的 md5 代码
【问题讨论】:
-
我假设您对两个程序使用完全相同的文件?您是否在两个程序中使用不同的盐?您的 VB.net 代码在做什么? C++ MD5 实现从何而来?
-
我正在使用我在 stackoverflow 上找到的 md5 代码 ....
-
如果我做 md5.digestString("moo");我得到的值与我在 vb.net md5 中得到的值相同,但如果我尝试从文本文件中获取相同的 md5 哈希,则它不同
-
System.String 在 vb.net 被记录为在内部使用 UTF-16。 vb.net 中的 md5 计算另一个字节流。
-
请显示minimal reproducible example,包括你的vb代码,我猜你在vb哈希中包含了你不在c++中的行尾