iOS 使用HMAC

本文介绍了HMAC在iOS开发中的使用,主要用于数据验签和设备锁功能。HMAC结合散列算法如SHA1、MD5,通过密钥生成唯一摘要,确保数据未被篡改。在登录过程中,用户存储的密钥用于生成HMAC,服务器可能需要授权请求才能提供密钥。文中还提及了HMAC的iOS实现和核心方法,并提到AES加密在安全性上的重要性。
摘要由CSDN通过智能技术生成

HMAC 是在MD5、SHA1、SHA256等的基础上发展,加入key进行计算摘要。摘要的算法是散列

摘要的长度对于一个算法来说是固定的

对于我们平常编程来说,摘要是唯一的,只要数据不一样摘要就会不一样

理论上摘要的散列算法会发生散列碰撞,即两个数据的摘要是一样的,可以想一下,既然摘要有一个固定长度,那么它就会有一个表示的最大数据量,但是数据是无限的(比如数字1到∞)。所以摘要一定会发生散列碰撞。(在我们应用摘要的时候,散列碰撞忽略就可以)

我们的应用中用到的摘要是用于验签,即验证服务器返回的数据是否被修改,当然我们加入了RSA和AES加密保证数据不会轻易被解开

之前的摘要有用于登录的过程,HAMC也有用于该过程的,HMAC用于登录可以实现类似qq设备锁的功能。


之前说过HMAC需要一个KEY,这个KEY在注册的时候分配给用户,用户存储到本地(当然需要本地做一些处理,防止被其他人获取到),以后无特殊情况不会变动。

当用户登录的时候,检查本地是否存在KEY,如果存在直接发起登录,否则向服务器请求KEY。

PS:用户向服务器请求KEY,服务器不一定就要给,服务器要先确定该账号是否开启设备锁,如果开启,向原始设备发送授权请求,否则直接返回KEY。

当拿到KEY的时候登录

这是设备锁的简单流程,当然还需要做一些其他的操作来保证安全问题。例如本地存储的加密、传输通道的加密等。

好了,大体介绍就完成了,现在来看一下HMAC的代码

HMAC使用iOS系统提供的HMAC算法<

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言可以使用HMAC-SHA256算法对数据进行身份验证和完整性校验。HMAC是一种对称密钥算法,SHA256是一种哈希算法。 首先,我们需要引入相关的头文件。在C语言中,可以使用``<openssl/hmac.h>``头文件来包含HMAC相关的函数和结构体。 接下来,我们需要定义一个密钥,该密钥用于计算HMAC值。我们可以将密钥存储在一个字符数组中,例如``unsigned char key[] = "密钥";``。请注意,密钥的长度通常应为64字节,并采用随机值或者使用密码学安全伪随机数生成器生成。 然后,我们需要定义要计算HMAC-SHA256的数据。可以将待计算的数据存储在一个字符数组中,例如``unsigned char data[] = "待计算的数据";``。 接下来,我们需要使用``HMAC()``函数来计算HMAC-SHA256值。``HMAC()``函数接受五个参数:哈希算法类型、密钥、密钥长度、数据以及数据长度。我们可以使用``EVP_sha256()``选择SHA256算法。 然后,我们需要定义一个字符数组来存储计算得到的HMAC值。可以使用``unsigned char result[EVP_MAX_MD_SIZE]``来存储HMAC值,并指定最大大小。 最后,我们可以使用``HMAC()``函数来计算HMAC值。这个函数会将最终结果存储在``result``数组中,并返回结果的长度。我们可以将HMAC结果存储在字符数组中,例如``unsigned char hmacResult[SHA256_DIGEST_LENGTH]``。 整个过程如下所示: ```c #include <openssl/hmac.h> int main() { unsigned char key[] = "密钥"; unsigned char data[] = "待计算的数据"; unsigned char hmacResult[SHA256_DIGEST_LENGTH]; unsigned int hmacLength; HMAC(EVP_sha256(), key, strlen(key), data, strlen(data), hmacResult, &hmacLength); // 打印计算得到的HMAC结果 for (int i = 0; i < hmacLength; i++) { printf("%02x", hmacResult[i]); } return 0; } ``` 通过以上步骤,我们可以使用C语言计算出数据的HMAC-SHA256值。这种方法可以用于身份验证、完整性校验等安全领域。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值