Objective-C 與JAVA的SHA1/HmacSHA1密碼編譯演算法實現

來源:互聯網
上載者:User

標籤:exce   加密方式   nta   dex   AC   params   ==   sda   ++   

 

轉載:https://www.cnblogs.com/qqsscc/p/4265451.html

 

最近研究IOS手機上登入的功能。由於加密方式使用SHA1演算法。網上也沒找到直接的例子,最終參照StackoverFlow上的大神,完成了加密實現。

先上代碼:

 

123 #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);        //sha1    unsigned char cHMAC[CC_SHA1_DIGEST_LENGTH];    CCHmac(kCCHmacAlgSHA1, cKey, strlen(cKey), cData, strlen(cData), cHMAC);    NSData *HMAC = [[NSData alloc] initWithBytes:cHMAC                                          length: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;        }      }

 

Objective-C 與JAVA的SHA1/HmacSHA1密碼編譯演算法實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.