使用SHA1哈希加密NSString

时间:2011-09-26 21:53:37

标签: objective-c encryption sha1

有人问我是否可以通过一个小项目帮助他们。在我遇到SHA-1加密之前,一切都很完美。我已经工作了几天但是无法找到解决这个问题的方法。

目标是加密NSString,将其发送到远程PHP脚本并从服务器接收回复。我管理了发送和接收部分,但无法找出“困难部分”

字符串需要在客户端进行编码,需要在接收端进行检查,因此需要在那里进行解码(不是我的问题)。是否有可能实现这一点,如果接收方知道其解密算法,是否可以解码SHA-1散列?

2 个答案:

答案 0 :(得分:2)

SHA为其处理的数据创建一个不可逆的签名,它本身不是加密,它是散列(安全散列算法)。

它可以用作身份验证协议的一部分。如果双方都有共享值并且想要忍受它们都具有相同的值但不想发送该值(可以通过咨询看到),则可以使用散列。启动器散列(SHA-1)共享值,将散列发送到另一端。接收器散列其共享值的副本并比较哈希值。

有很多方法可以实现,例如只共享哈希值,@ Greg提到了这种方法。更重要的是,@ Greg提到不应该重新发明安全方法。我将补充说,如果安全性很重要,请获得经过验证的安全专业人员的帮助。当我开发一个安全的产品时,我总是对其进行审核。

答案 1 :(得分:1)

如果接收方知道字符串应该是什么(如密码),那么你可以在发送方上对密码进行SHA1散列,然后将其发送给接收方,接收方可以在本地检查密码。计算已知密码的SHA1哈希。

但是,这种方法也存在问题,您可能不应该自己发明加密协议。或者,如果您传递了服务器尚不知道的一些信息,那么您将需要一种完全不同的方法。