diff --git a/SharpHash/Checksums/SpamSumContext.cs b/SharpHash/Checksums/SpamSumContext.cs index 1fc045c..9cfa981 100644 --- a/SharpHash/Checksums/SpamSumContext.cs +++ b/SharpHash/Checksums/SpamSumContext.cs @@ -442,7 +442,7 @@ namespace SharpHash.Checksums byte[] result; fuzzy_digest(out result); - return Encoding.ASCII.GetString(result); + return CToString(result); } /// @@ -483,7 +483,7 @@ namespace SharpHash.Checksums byte[] result; fuzzy_digest(out result); - return Encoding.ASCII.GetString(result); + return CToString(result); } /// @@ -495,6 +495,22 @@ namespace SharpHash.Checksums { return Data(data, (uint)data.Length, out hash); } + + // Converts an ASCII null-terminated string to .NET string + private string CToString(byte[] CString) + { + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < CString.Length; i++) + { + if (CString[i] == 0) + break; + + sb.Append(Encoding.ASCII.GetString(CString, i, 1)); + } + + return sb.ToString(); + } } }