我有一个45-50列和45-50行的数据表,我想创建校验和文本或md5,sha1,我不知道哪一个更好。我将创建该文本并在数据库中搜索它,如果还有一个。但是文本长度必须在100到200个字符之间,我不知道我能不能做到。那你对此有什么看法,我该怎么做?
感谢。
答案 0 :(得分:2)
答案 1 :(得分:2)
以下内容应该:
// Serialize the table
var serializer = new DataContractSerializer(typeof(DataTable));
var memoryStream = new MemoryStream();
serializer.WriteObject(memoryStream, table);
byte[] serializedData = memoryStream.ToArray();
// Calculte the serialized data's hash value
var SHA = new SHA1CryptoServiceProvider();
byte[] hash = SHA.ComputeHash(serializedData);
// Convert the hash to a base 64 string
string hashAsText = Convert.ToBase64String(hash);
请注意,我们正在序列化整个表,不仅是它的字段值,而且表必须有一个名称才能允许序列化
答案 2 :(得分:0)
首先,您应该对数据集执行二进制序列化
http://www.eggheadcafe.com/community/aspnet/2/7700/serializedeserialize-a-datatable.aspx
用于计算sha1:
/// <summary>
/// Calculates SHA1 hash
/// </summary>
/// <param name="text">input string</param>
/// <param name="enc">Character encoding</param>
/// <returns>SHA1 hash</returns>
public static string CalculateSHA1(string text, Encoding enc)
{
byte[] buffer = enc.GetBytes(text);
SHA1CryptoServiceProvider cryptoTransformSHA1 =
new SHA1CryptoServiceProvider();
string hash = BitConverter.ToString(
cryptoTransformSHA1.ComputeHash(buffer)).Replace("-", "");
return hash;
}
或md5:
http://www.spiration.co.uk/post/1203/MD5%20in%20C%23%20-%20works%20like%20php%20md5%28%29%20example
答案 3 :(得分:0)
如果您要对数据表中的dataRow进行哈希处理,请使用drRow.GetHashCode()。