Objective-C 与JAVA的SHA1/HmacSHA1加密算法实现
最近研究IOS手机上登录的功能。由于加密方式使用SHA1算法。网上也没找到直接的例子,最终参照StackoverFlow上的大神,完成了加密实现。
先上代码:
#include <CommonCrypto/CommonDigest.h>#include <CommonCrypto/CommonHMAC.h>
//HmacSHA1加密; +(NSString *)HmacSha1:(NSString *)key data:(NSString *)data {const char *cKey = [key cStringUsingEncoding:NSASCIIStringEncoding];const char *cData = [data cStringUsingEncoding:NSASCIIStringEncoding];//Sha256:// unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];//CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);//sha1unsigned char cHMAC[CC_SHA1_DIGEST_LENGTH];CCHmac(kCCHmacAlgSHA1, cKey, strlen(cKey), cData, strlen(cData), cHMAC);NSData *HMAC = [[NSData alloc] initWithBytes:cHMAClength:sizeof(cHMAC)];NSString *hash = [HMAC base64EncodedStringWithOptions:0];//将加密结果进行一次BASE64编码。return hash; }//密码加密方式:SHA1 +(NSString *)EncriptPassword_SHA1:(NSString *)password{const char *cstr = [password cStringUsingEncoding:NSUTF8StringEncoding];NSData *data = [NSData dataWithBytes:cstr length:password.length];uint8_t digest[CC_SHA1_DIGEST_LENGTH];CC_SHA1(data.bytes, data.length, digest);NSMutableString* result = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH *2];for(int i =0; i < CC_SHA1_DIGEST_LENGTH; i++) {[result appendFormat:@"%02x", digest[i]];}return [result uppercaseString]; }
由于Android版本也用到,附上JAVA版本代码:
1.HmacSHA1:
SecretKeySpec localSecretKeySpec = new SecretKeySpec(mySecretKey.getBytes("UTF-8"), "HmacSHA1");//加密密钥Mac localMac = Mac.getInstance("HmacSHA1");localMac.init(localSecretKeySpec);localMac.update(myDate.getBytes("UTF-8"));//加密内容,这里使用时间String result = Base64.encodeToString(localMac.doFinal(), 0).trim(); //获取加密结果并转BASE64
2:直接SHA1
public static String authPassword(String paramString){try{MessageDigest localMessageDigest = MessageDigest.getInstance("SHA1");localMessageDigest.update(paramString.getBytes());String str = bytes2Hex(localMessageDigest.digest()).toUpperCase();return str;}catch (NoSuchAlgorithmException localNoSuchAlgorithmException){}return "";}public static String bytes2Hex(byte[] paramArrayOfByte){String str1 = "";for (int i = 0; ; i++){if (i >= paramArrayOfByte.length)return str1;String str2 = Integer.toHexString(0xFF & paramArrayOfByte[i]);if (str2.length() == 1)str1 = str1 + "0";str1 = str1 + str2;}}
转载于:https://www.cnblogs.com/qqsscc/p/4265451.html
Objective-C 与JAVA的SHA1/HmacSHA1加密算法实现相关推荐
- Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA
[最简单的加密] 1.简单的概念 明文:加密前的信息 密文:机密后的信息 算法:加密或解密的算法 密钥:算法使用的钥匙(读作miyao,正确应该是miyue,但是大家都读miyao) 2.简单的例子 ...
- java ecc 加密_基于java实现的ECC加密算法示例
本文实例讲述了基于java实现的ECC加密算法.分享给大家供大家参考,具体如下: ECC ECC-Elliptic Curves Cryptography,椭圆曲线密码编码学,是目前已知的公钥体制中, ...
- php hmacsha1加密,PHP版OAuth认证协议中的HMACSHA1加密算法(签名方法)
鼓捣微博API的时候接触到OAuth认证协议,其中的HMACSHA1加密算法(签名方法)百度上找的,分享出来,也许以后有用.呵呵.... function hmacsha1($key,$data) { ...
- java的rsa加密算法_用java编程实现RSA加密算法
RSA加密算法是目前应用最广泛的公钥加密算法,特别适用于通过Internet传送的数据,常用于数字签名和密钥交换.那么我今天就给大家介绍一下如何利用Java编程来实现RSA加密算法. 一.RSA加密算 ...
- java aes php_php和java的aes默认加密算法有点区别及解决方法。
1.php和java的aes默认加密算法有点区别,php能解密java加密的密文,但java不能解密php加密的密文.原因在于: 1.Java中AES加密与解密默认使用AES/ECB/PKCS5Pad ...
- rsa加密算法java实例,java实现的RSA加密算法详解
本文实例讲述了java实现的RSA加密算法.分享给大家供大家参考,具体如下: 一.什么是非对称加密 1.加密的密钥与加密的密钥不相同,这样的加密算法称之为非对称加密 2.密钥分为:公钥,私钥 公钥:可 ...
- Java 加密 AES 对称加密算法
版权声明:本文为博主原创文章,未经博主允许不得转载. [AES] 一种对称加密算法,DES的取代者. 加密相关文章见:Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES R ...
- c java sha1加密解密_java HMACSHA1加密算法
package phamos; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; public class HMACSH ...
- java的HMACSHA1加密算法
前期做一个和Q+相关的项目时,双方要进行一些数据的校验,对方规定的校验规则是通过hmac-sha1算法(fcg语言采用hash_hmac方法),并给出了一个例子:sig=hash_hmac(" ...
最新文章
- 修改mysql的时间/时区
- 2020年AI怎么发展?听加州大学、谷歌、英伟达、IBM怎么说
- 20110625 AD下DFS实现冗余文件服务器,加密软件等
- 面试必备,各种技术知识集大成之项目~
- echarts js 删除框选数据_echarts同一页面中四个图表切换的js数据交互方法示例
- 【MPI编程】任意数节点的树形求和(高性能计算)
- 刷新后 页面 保持滚动条位置
- TradingView 初识
- 生成颜色代码的 Java程序
- hana抽数到mysql,HANA数据库管理Tenant DB常用操作
- c语言loop until用法,流程控制中的while、until、for循环
- VBS去除指定的字符串中的重复项返回重复后的字符串
- zabbix详解(十六)——zabbix agent自动注册实战
- layer —— 一个简单的jQuery弹出层插件
- C盘清理工具Dism++教程
- 查看linux系统版本命令
- 做H5页面用什么软件比较好?
- Python_提取图片像素值
- 欧空局:SNAP and the Sentinel Toolboxes下载网址
- 短信验证码,在键盘显示验证码
热门文章
- linux verilog 编译,Verilog 编译指令简介
- php如何将读取到的mysql内容按发布的日期分割显示_php如何读取文件夹目录里的文件并按照日期,大小,名称排序...
- Docker必备国内镜像
- druid 连接池监控报错 Sorry, you are not permitted to view this page.
- 【CCCC】L2-018 多项式A除以B (25分),多项式除法
- itunes备份包括哪些内容_企业形象策划包括哪些内容?
- android定位地点的保存,Android获得所有存储设备位置的最佳方法
- centos7 docker安装_教你如何在 CentOS 7 下 yum 方式安装 Docker 环境
- 用模板类实现shared_ptr和unique_ptr
- Qt UDP组播的应用