- (NSString*) HMACWithSecret:(NSString*) secret andString:(NSString *)str
{
unsigned long encode = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000); CCHmacContext ctx;
const char *key = [secret cStringUsingEncoding:encode];
const char *string = [str cStringUsingEncoding:encode];
unsigned char mac[CC_MD5_DIGEST_LENGTH];
char hexmac[2 * CC_MD5_DIGEST_LENGTH + 1];
char *p; CCHmacInit( &ctx, kCCHmacAlgMD5, key, strlen( key ));
CCHmacUpdate( &ctx, string, strlen(string) );
CCHmacFinal( &ctx, mac ); p = hexmac;
for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++ ) {
snprintf( p, 3, "%02x", mac[ i ] );
p += 2;
} return [NSString stringWithUTF8String:hexmac];
}

encode 根据需要可以使用GBK的中文编码,不需要中文的话可以使用UTF-8编码

Objective C HMAC-MD5的更多相关文章

  1. Python3学习之路~5.12 hashlib & hmac & md5 & sha模块

    hashlib模块用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法 import md5 h ...

  2. hmac md5

    import hmac //内置 def simaplemd5(str): m2 = hashlib.md5() m2.update(str) res=m2.hexdigest() return re ...

  3. HTML5 加密和摘要算法(base64,md5, sha1,rsa)

    < 一 > BASE64 1,Base64 是网络上最常见的用于传输 8Bit 字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法 2,首先需要一个库 b ...

  4. iOS - Safe iOS 加密安全

    1.Base64 编码 简介: Base64 是一种基于64个可打印字符来表示二进制数据的表示方法,可打印字符包括字母 A-Z.a-z.0-9,共 62 个字符,另外两个符号在不同的系统不同 +,/. ...

  5. OpenSSL Command-Line HOWTO

    OpenSSL Command-Line HOWTO The openssl application that ships with the OpenSSL libraries can perform ...

  6. iOS 中的加密方式

    iOS 中的加密方式 1 加密方式主要有: Base64,MD5,RSA,DES,AES,钥匙串存储,Cookie 2 各加密方式的比较 2.1 Base64 2.1.1 基本原理:采用64个基本的 ...

  7. Hadoop-2.2.0中文文档——MapReduce 下一代 -——集群配置

    目的 这份文档描写叙述了怎样安装.配置和管理从几个节点到有数千个节点的Hadoop集群. 玩的话,你可能想先在单机上安装.(看单节点配置). 准备 从Apache镜像上下载一个Hadoop的稳定版本号 ...

  8. Nginx模块之SessionSticky

    0 工作原理 Session Sticky 模块在upstream 返回响应后,向客户的浏览器写入 Cookie ,默认名为route ,保存的内容是一个 md5 码. 之后,模块接收到客户浏览器的请 ...

  9. IOS中的用户安全

    用户安全: 原则:在网络传输过程中,关于用户的密码是不能传递明文的,需要通过加密之后进行传递, 一般采用的加密技术是: (1)md5+盐 (2)hmac+md5 (3)hmac+md5+时间戳   这 ...

  10. Python3学习之路~0 目录

    目录 Python3学习之路~2.1 列表.元组操作 Python3学习之路~2.2 简单的购物车程序 Python3学习之路~2.3 字符串操作 Python3学习之路~2.4 字典操作 Pytho ...

随机推荐

  1. Spring Boot 系列教程2-Data JPA

    Spring Data JPA 用来简化创建 JPA 数据访问层和跨存储的持久层功能. 官网文档连接 http://docs.spring.io/spring-data/jpa/docs/curren ...

  2. iOS字符串转化成CGFloat

    NSString *str = @"abc"; [str floatValue];

  3. jquery的校验规则的方法

    //validate 选项*********************************************************** $("form").validat ...

  4. gameUnity 0.15alpha 网络游戏框架

    在重要版本 0.2之前,先 出一个 0.15alpha 版本热热身. 0.15主要是添加了 动画事件 和一些 动画特效的类,比如快进,慢进,(类似被冰冻效果),但这些都不在这个  alpha版本中出现 ...

  5. lucene3.6.1 经典案例 入门教程 (包含从文件中读取content)

    转载http://liqita.iteye.com/blog/1676664 第一步:下载lucene的核心包 lucene-core-3.6.1-javadoc.jar (3.5 MB) lucen ...

  6. lucene-SpanFirstQuery 和SpanNearQuery 跨度查询

    1.SpanFirstQuery查询 对出现在一个域中前n个位置的跨度查询. public void testSpanFirstQuery() throws Exception{ SpanzFirts ...

  7. php简单命令代码集锦

    if(file_exists("file.htm"))// 检查是否存在此文件 if(file_exists("chat"))//检查是否存在此文件夹 rena ...

  8. 【啊哈!算法】算法6:只有五行的Floyd最短路算法

            暑假,小哼准备去一些城市旅游.有些城市之间有公路,有些城市之间则没有,如下图.为了节省经费以及方便计划旅程,小哼希望在出发之前知道任意两个城市之前的最短路程.         上图中有 ...

  9. css预处理器

    Sass.LESS是什么?大家为什么要使用他们?  他们是CSS预处理器.他是CSS上的一种抽象层.他们是一种特殊的语法/语言编译成CSS.  Less是一种动态样式语言. 将CSS赋予了动态语言的特 ...

  10. hrbustoj 1494(原题UVA 315 Network) 解题报告 tarjan求割点

    主要思路:使用tarjan选取一个根节点建立一个棵搜索树,判断一个点是割点的充分必要条件是,对于一个节点u如果他的孩子节点v的low值大于等于u的出生日期dfn值,进行下一步判断,如果u是我们选的根节 ...