SHA1 和 RSA 有什么区别?它们只是不同的算法还是它们在某种程度上根本不同(即用于不同的事物)。
最佳答案
根本不同。
SHA1 是一种哈希算法,它是一种单向函数,将任意大小的输入转换为固定长度的输出(在这种情况下为 160 位)。加密散列函数是这样一种函数,除了蛮力之外,它不应该找到两个给出相同输出的输入(例如,对于 128 位函数,您应该平均需要尝试 2^64 条消息才能找到这样的一个由于所谓的生日悖论而导致的“碰撞” - 谷歌搜索更多)。
事实上,对于 SHA1 而言,情况已不再如此——该算法(至少在密码学术语中)现在已被破坏,王小云等人描述的碰撞攻击击败了经典的生日攻击。 SHA2 系列并未中断,NIST 正在进行一个过程,以就 SHA3 算法或算法系列达成一致。
编辑 - Google 现在已经生成并发布了实际的 SHA1 冲突。
RSA 是一种非对称加密算法,将输入加密为可以解密的输出(与无法反转的哈希算法形成对比)。它使用不同的 key 进行加密(公共(public) key )和解密 key (私有(private) key )。因此,这可用于接收来自其他人的加密消息 - 您可以发布您的公钥,但只有拥有私钥的您才能解密用它加密的消息。
如果您反转 RSA 的 key ,它可以用于生成数字签名——通过用您的私钥加密某些东西,任何人都可以用公钥解密它,如果他们确定公钥属于您,那么他们就有相信您是加密原始文件的人。这通常与散列函数一起完成 - 您散列您的输入,然后用您的私钥对其进行加密,为您的输入消息提供一个固定长度的数字签名。
关于encryption - SHA1 VS RSA : what's the difference between them?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/733692/