gpt4 book ai didi

iphone - 在iPhone应用程序中实现HMAC加密算法

转载 作者:技术小花猫 更新时间:2023-10-29 10:44:10 24 4
gpt4 key购买 nike

我想为我的 iPhone 应用程序实现 HMAC 加密算法。任何示例代码都会有帮助。另外,请指导我简要实现。

最佳答案

使用通用加密函数。 documentation在手册页中,因此您需要稍微寻找一下。它们位于 iOS 和 Mac OS X 上的 libSystem 中,因此无需向您的项目添加其他库或框架。从下面的示例中可以看出,API 与 OpenSSL 的非常相似。

如果您真的对加密感兴趣,而不是对数据进行身份验证,Common Crypto 具有执行 AES 和 3DES 的功能(和 DES,但不要使用它,它对于现代需求来说太弱了)。看看 CCCryptor手册页了解详细信息。

下面的例子相当于运行openssl dgst -md5 -hmac secret < myfile.txt .从初始化 CCHmacContext 开始,然后只要有数据就可以调用 CCHmacUpdate 进行身份验证。读取所有字节后,调用 CCHmacFinal 将 HMAC 放入缓冲区。我提供了一种将 HMAC 字节转换为可打印的十六进制的粗略方法。

#include <CommonCrypto/CommonHMAC.h>

#include <sys/types.h>
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

extern int errno;

int
main( int ac, char *av[] )
{
CCHmacContext ctx;
char *key = "secret";
char buf[ 8192 ];
unsigned char mac[ CC_MD5_DIGEST_LENGTH ];
char hexmac[ 2 * CC_MD5_DIGEST_LENGTH + 1 ];
char *p;
int fd;
int rr, i;

if ( ac != 2 ) {
fprintf( stderr, "usage: %s path\n", av[ 0 ] );
exit( 1 );
}

if (( fd = open( av[ 1 ], O_RDONLY )) < 0 ) {
fprintf( stderr, "open %s: %s\n", av[ 1 ], strerror( errno ));
exit( 2 );
}

CCHmacInit( &ctx, kCCHmacAlgMD5, key, strlen( key ));

while (( rr = read( fd, buf, sizeof( buf ))) > 0 ) {
CCHmacUpdate( &ctx, buf, rr );
}
if ( rr < 0 ) {
perror( "read" );
exit( 2 );
}
CCHmacFinal( &ctx, mac );

(void)close( fd );

p = hexmac;
for ( i = 0; i < CC_MD5_DIGEST_LENGTH; i++ ) {
snprintf( p, 3, "%02x", mac[ i ] );
p += 2;
}

printf( "%s\n", hexmac );

return( 0 );
}

关于iphone - 在iPhone应用程序中实现HMAC加密算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5862207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com