encryption - 使用 RSA 进行哈希

标签 encryption hash rsa

我正在考虑使用 RSA 加密算法创建一个哈希函数(如 md5 或 sha1)。我想知道是否有任何明显的原因导致该算法不起作用:

  • 生成 RSA 公钥/私钥。
  • 丢弃私钥,永远不要存储它。
  • 从 RSA 加密的 block 大小长度的散列开始。
  • 使用公钥加密消息,一次一个 block 。
  • 对于消息的每个加密 block ,使用指定的算法(可能是 +、xor 等的组合)将其累加到哈希中

  • 要验证消息与存储的散列具有相同的散列,请使用保存的公钥并重复该过程。

    这是可能的、安全的和实用的吗?

    感谢您的任何评论。

    最佳答案

    不用想太多,这似乎是加密安全的。

    但是,您必须小心选择的明文攻击,如果您的输入很大,您可能会遇到速度问题(因为非对称加密比加密哈希慢得多)。

    所以,简而言之:是的,这似乎是可能的和安全的......但除非有一个真正令人信服的理由,如果你想要一个键控哈希,我会使用标准 HMAC。

    关于encryption - 使用 RSA 进行哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7561989/

    相关文章:

    c# - MVC - 如何哈希和加盐

    c# - 使用 MD5 或 sha-256 C# 散列密码

    javascript - JavaScript 中的嵌套哈希表

    security - 从用户的 RSA 公钥计算用户的私钥

    objective-c - 初学者的AES加密/解密

    git - 无法与对等点 : no common encryption algorithm(s) 安全通信

    c++ - 向 MFC 应用程序添加许可保护

    python - 如何在Python上使用RSA私钥和SHA256解密

    ssl - 适用于 Windows 的 OpenSSL RSA。后门?

    php - 如何在 PHP 中实现 RSA SecurID