Cryptography 如何创建哈希函数来屏蔽机密信息?

Cryptography 如何创建哈希函数来屏蔽机密信息?,cryptography,Cryptography,在当前的项目中,我想创建自己的哈希函数,但到目前为止,还没有获得很多关于哈希原理的理论背景 如果你们中有人能提供有关散列理论、密码学和散列函数实际实现的有用资源,我将非常感谢 谢谢大家! 另外,由于本例中的信息散列块是更大研究项目的一部分,我想自己创建一个散列函数,通过这种方式学习原理,而不是使用现有的库。我正在处理的信息将保留在内部,因此无需担心可能的攻击。您是否考虑过使用库中的标准哈希函数,然后对正在哈希的数据进行盐析,而不是编写自己的哈希函数?这是一种常见的做法,可以确保使用标准加密函数解

在当前的项目中,我想创建自己的哈希函数,但到目前为止,还没有获得很多关于哈希原理的理论背景

如果你们中有人能提供有关散列理论、密码学和散列函数实际实现的有用资源,我将非常感谢

谢谢大家!


另外,由于本例中的信息散列块是更大研究项目的一部分,我想自己创建一个散列函数,通过这种方式学习原理,而不是使用现有的库。我正在处理的信息将保留在内部,因此无需担心可能的攻击。

您是否考虑过使用库中的标准哈希函数,然后对正在哈希的数据进行盐析,而不是编写自己的哈希函数?这是一种常见的做法,可以确保使用标准加密函数解密数据的软件的任何人都不会截获并解密您的数据。

您是否考虑过使用库中的标准哈希函数,然后对正在哈希的数据进行盐析,而不是编写自己的哈希函数?这是一种常见的做法,可以确保使用标准加密功能解密数据的软件的任何人都不会截获并解密您的数据

  • 不要。现有的加密和散列算法(正如上面的评论所指出的,它们之间几乎没有什么关系)是由专家设计的,并经过了广泛的同行评审。相比之下,你白手起家写的任何东西都会很糟糕。放心。真正地你唯一能得到的是一种错误的安全感——你的算法不会经过同行评审,所以你会认为它比实际更安全

  • 但是,如果你真的想了解更多关于这个理论的知识(并对你为什么不应该自己做这件事表示赞赏),请阅读作者。你找不到更好的资源了

  • 先温习一下你的数学

  • 不要。现有的加密和散列算法(正如上面的评论所指出的,它们之间几乎没有什么关系)是由专家设计的,并经过了广泛的同行评审。相比之下,你白手起家写的任何东西都会很糟糕。放心。真正地你唯一能得到的是一种错误的安全感——你的算法不会经过同行评审,所以你会认为它比实际更安全

  • 但是,如果你真的想了解更多关于这个理论的知识(并对你为什么不应该自己做这件事表示赞赏),请阅读作者。你找不到更好的资源了


  • 首先,如果你使用正确的术语,你将能够更好地找到有用的资源

    “加密”是用密码执行的,而不是加密散列函数。你永远也找不到一个可靠的引用,提到散列是一个“加密函数”。所以,如果您想学习散列,请不要使用“加密”

    “加密散列”的另一个术语是“消息摘要”,所以在搜索时请记住这一点


    一本优秀的书《应用密码学手册》的许多章节都可以在网上免费获得。特别是查看

    首先,如果使用正确的术语,您将能够更好地找到有用的资源

    “加密”是用密码执行的,而不是加密散列函数。你永远也找不到一个可靠的引用,提到散列是一个“加密函数”。所以,如果您想学习散列,请不要使用“加密”

    “加密散列”的另一个术语是“消息摘要”,所以在搜索时请记住这一点

    一本优秀的书《应用密码学手册》的许多章节都可以在网上免费获得。特别要注意的是,正如其他人所说,不要做新的散列(代码会变得复杂,你最好重新发明SHA1或MD5)。首先学习密码学。但如果您愿意,请查看现有哈希(大多数哈希基于另一个)。或者你可以看看散列模型。哈希模型如下所示:

  • 混合阶段(混合内容并修改)
  • 组合阶段(将混合阶段中的数据与初始状态[原始散列]组合)
  • 或者可以从一些简单的东西开始,并从中构建(以生成一个安全的散列)。

    就像其他人所说的,不要生成一种新的散列(代码会变得复杂,你最好重新创建SHA1或MD5。)首先学习密码学。但如果您愿意,请查看现有哈希(大多数哈希基于另一个)。或者你可以看看散列模型。哈希模型如下所示:

  • 混合阶段(混合内容并修改)
  • 组合阶段(将混合阶段中的数据与初始状态[原始散列]组合)

  • 或者可以从一些简单的东西开始,并以此为基础构建一个安全的散列。

    学习密码学几十年左右,这会让你开始学习。不过,严肃地说,除非只是为了好玩,否则不要尝试使用自己的加密函数。训练有素的密码分析师很可能会在几分钟内破解它。你这样做是为了教育/娱乐,还是真的想加密重要信息?如果是后者,则不要自己尝试。散列函数不加密数据,而是散列数据。没有返回(除非您存储链接并且假设只有一组匹配的数据)。。。任何一个散列都有无限多的数据点,但是使用任何合适的散列函数,你永远找不到一组返回相同散列的两个数据点。不要混淆散列和加密——它们是完全独立的技术。任何加密的东西(根据定义)都可以被解密。需要明确的是:散列不是一种加密研究密码学几十年左右,这会让你开始。但严肃地说,不要这样做