巴中城乡建设局网站,wordpress 顶部大图,保护wordpress图片链接,织梦手机网站模板删除最近在项目中使用到了网络请求签名认证的方法#xff0c;于是在网上找关于OC sha1加密的方法#xff0c;很快找到了一个大众使用的封装好的方法#xff0c;以下代码便是 首先需要添加头文件
#importCommonCrypto/CommonDigest.h
然后直接使用下面的方法就可以了
//s…最近在项目中使用到了网络请求签名认证的方法于是在网上找关于OC sha1加密的方法很快找到了一个大众使用的封装好的方法以下代码便是 首先需要添加头文件
#importCommonCrypto/CommonDigest.h
然后直接使用下面的方法就可以了
//sha1加密方式
- (NSString *) sha1:(NSString *)input { const char *cstr [input cStringUsingEncoding:NSUTF8StringEncoding]; NSData *data [NSData dataWithBytes:cstr length:input.length]; uint8_t digest[CC_SHA1_DIGEST_LENGTH]; CC_SHA1(data.bytes, (unsigned int)data.length, digest); NSMutableString *output [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2]; for(int i0; iCC_SHA1_DIGEST_LENGTH; i) { [output appendFormat:%02x, digest[i]]; } return output; } 我直接在项目中使用了这个方法而且完美解决问题但是,今天重点说的是这个但是,在后期的项目修改中需要加密的字符串里面增加了汉字之前需要加密的字符串中无汉字在这种情况下上面的方法就和服务器那边的加密不一样了艰难的调试排除问题的过程不赘述; 最终发现的原因就是我这边生成的加密字符串和服务器那边生成的不一样自然就会发生错误错误的原因就是因为加密的字符串中包含有汉字然后是在网上查找在主题:如何对中文字符串进行sha1加密这个帖子中找到了方法,现贡献给大家 首先需要添加头文件
#importCommonCrypto/CommonDigest.h
然后直接使用下面的方法就可以了
//sha1加密方式
- (NSString *) sha1:(NSString *)input { //const char *cstr [input cStringUsingEncoding:NSUTF8StringEncoding]; //NSData *data [NSData dataWithBytes:cstr length:input.length]; NSData *data [input dataUsingEncoding:NSUTF8StringEncoding]; uint8_t digest[CC_SHA1_DIGEST_LENGTH]; CC_SHA1(data.bytes, (unsigned int)data.length, digest); NSMutableString *output [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2]; for(int i0; iCC_SHA1_DIGEST_LENGTH; i) { [output appendFormat:%02x, digest[i]]; } return output; } 可以看出这个方法与第一个方法的区别头两句注释掉了用 NSData *data [input dataUsingEncoding:NSUTF8StringEncoding]; 代替了那两句的作用 帖子一楼bindbasic的原话是这样的 用上面的方法中文字符串转data时会造成数据丢失
把
const char *cstr [input cStringUsingEncoding:NSUTF8StringEncoding]; NSData *data [NSData dataWithBytes:cstr length:input.length]; 这两句改成 NSData *data [input dataUsingEncoding:NSUTF8StringEncoding]; 就可以了 经实测第二种方法的加密方式适用于纯字符串以及带有中文的字符串推荐使用推荐使用推荐使用重要的事情说三遍 备注严格来说sha1安全[哈希算法]只是叫做一种算法用于检验数据完整性并不能叫做加密 相关链接 iOS sha1加密方法哈希算法用于校验数据完整性以及字符串中含有汉字的情况的加密方法 MD5与SHA-1加密简介(附iOS加密方式) iOS中hmac_sha1如何解密 iOS开发之Objective-c的MD5/SHA1加密算法的实现转载于:https://www.cnblogs.com/shenlaiyaoshi/p/8412847.html