【问题标题】:Comparing the hash value of data copied on system clipboard and pasted in Excel比较系统剪贴板上复制并粘贴到 Excel 中的数据的哈希值
【发布时间】:2014-04-22 19:51:48
【问题描述】:

我需要一些关于某个问题的技术建议。场景是这样的。如果有一些文本从 Excel 或任何应用程序复制到系统剪贴板,然后在某个时间点粘贴(假设系统剪贴板的内容没有更改),我们可以比较复制值的哈希值(哈希值已经当数据被复制到应用程序的哈希表中时存储)到系统剪贴板内容的哈希值(执行粘贴操作时可用的)?我只是想确定这两个值是否完全相同并且来自同一个应用程序。

有人可以让我的理解更清楚并提出建议吗?

谢谢。

【问题讨论】:

  • 你总是可以散列一个字符串,只需使用 md5 散列并比较它们,但由于它将是一个字符串,只需比较这些字符串。问题是要知道数据是从哪里来的,你不知道是哪个程序把数据放到了剪贴板里,至少我不知道有什么办法,也许如果你解释你为什么要这样做,可能会有替代解决方案。
  • @Gusman 永远不要使用 md5 ...
  • @Bogdan 你能解释一下原因或发布链接,否则你的评论毫无价值
  • @reggaeguitar Google md5,点击第一个链接 - 阅读第 3 段 ...
  • @all :是的,我已经在使用 Md5。但正如我在回答下面的答案时所说,我需要知道同一个应用程序是否写入了该值而不是任何其他应用程序。

标签: c# .net vsto clipboard hashcode


【解决方案1】:

添加以显示如何散列(对于 cmets 来说太长了),不要将其视为完整响应

要散列一个字符串,你可以使用这个:

    public static string HashMD5(string input)
    {

        MD5 md5Hasher = MD5.Create();

        byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));

        StringBuilder sBuilder = new StringBuilder();

        for (int i = 0; i < data.Length; i++)
        {
            sBuilder.Append(data[i].ToString("x2"));
        }

        return sBuilder.ToString();
    }

【讨论】:

  • 嗨,谢谢。但我已经在我的应用程序中设置了这个。我担心如果任何其他应用程序在剪贴板上放置相同的值,在我的应用程序中进行比较时,哈希值仍然是相同的。我们需要以某种方式知道这些数据的来源。
  • @Shaktisaxena 无法确定哪个应用程序将数据从另一个应用程序放入剪贴板...
  • @Bogdan:我知道至少在 Windows 上没有办法知道这些数据来自哪里,不像 X11,它也可以为您提供有关应用程序名称的信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-14
  • 1970-01-01
  • 2014-03-08
  • 2010-11-07
  • 1970-01-01
相关资源
最近更新 更多