4 sha1 swift_swift sha1 - CSDN
  • 简单记录使用swift3.0开发,加密md5和sha1的方法: 先新建一个项目,名为:Md5Sha1。 建一个名为Header.h的文件,在project中设置 ,如图: 在Header.h中,引入代码如下:(此方法为使用MD5加密)#import //md5新建...

    简单记录使用swift3.0开发,加密md5和sha1的方法:Md5Sha1 的demo下载地址:https://github.com/feifeiios/Md5Sha1

    先新建一个项目,名为:Md5Sha1。

    建一个名为Header.h的文件,在project中设置 ,如图:

    在Header.h中,引入代码如下:(此方法为使用MD5加密)

    #import <CommonCrypto/CommonDigest.h>//md5
    新建Encryption.swift文件,内部代码如下:

    extension String {
        //MARK: - MD5
        func md5() -> String {
            let cStr = self.cString(using: String.Encoding.utf8);
            let buffer = UnsafeMutablePointer<UInt8>.allocate(capacity: 16)
            CC_MD5(cStr!,(CC_LONG)(strlen(cStr!)), buffer)
            let md5String = NSMutableString();
            for i in 0 ..< 16{
                md5String.appendFormat("%02x", buffer[i])
            }
            free(buffer)
            return md5String as String
            
        }
        //MARK: - sha1 加密
        func sha1() -> String {
            //UnsafeRawPointer
            let data = self.data(using: String.Encoding.utf8)!
            var digest = [UInt8](repeating: 0, count:Int(CC_SHA1_DIGEST_LENGTH))
            
            let newData = NSData.init(data: data)
            CC_SHA1(newData.bytes, CC_LONG(data.count), &digest)
            let output = NSMutableString(capacity: Int(CC_SHA1_DIGEST_LENGTH))
            for byte in digest {
                output.appendFormat("%02x", byte)
            }
            return output as String
        }
    
        
    }
    

    使用时候,代码如下:

      
            let string = "123456"
            let string_md5 = string.md5()
            
            let string_sha1 = string.sha1()
            
            print("string = \(string)")
            print("string_md5 = \(string_md5)")
            print("sting_sha1 = \(string_sha1)")
    
    打印日志:

    string = 123456
    string_md5 = e10adc3949ba59abbe56e057f20f883e
    sting_sha1 = 7c4a8d09ca3762af61e59520943dc26494f8941b
    
     以上为我在项目开发中,使用到的加密方法。如有不同,欢迎留言
    展开全文
  • Swift sha1 md5加密

    2019-08-03 14:22:21
    AES/RSA/MD2/MD5/SHA1/SHA128/SHA384/SHA512 in Swift 可以参考github:https://github.com/adow/SecrecySwift https://github.com/SwiftP2P/SwiftSSL swift实现sha1加密算法,需要现在beidge-header文件中添加...

    AES/RSA/MD2/MD5/SHA1/SHA128/SHA384/SHA512 in Swift 

    可以参考github: https://github.com/adow/SecrecySwift

    https://github.com/SwiftP2P/SwiftSSL

     

    swift实现sha1加密算法,需要现在beidge-header文件中添加下述语句

    // sha1
    #import <CommonCrypto/CommonHMAC.h>
    

      

    sha1:

    import UIKit
    
    extension String{
        func sha1() -> String{
            let data = self.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)!
            var digest = [UInt8](count:Int(CC_SHA1_DIGEST_LENGTH),repeatedValue:0)
            CC_SHA1(data.bytes, CC_LONG(data.length), &digest)
            
            let output = NSMutableString(capacity: Int(CC_SHA1_DIGEST_LENGTH))
            for byte in digest{
                output.appendFormat("%02x", byte)
            }
            return output as String
        }
    }
    

      

    MD5:(对比一下sha1的方法,改动不大,其他几种也应该差不多)

    extension String{
        func md5() -> String{
            let data = self.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)!
            var digest = [UInt8](count:Int(CC_MD5_DIGEST_LENGTH),repeatedValue:0)
            CC_MD5(data.bytes, CC_LONG(data.length), &digest)
            
            let output = NSMutableString(capacity: Int(CC_MD5_DIGEST_LENGTH))
            for byte in digest{
                output.appendFormat("%02x", byte)
            }
            return output as String
        }
    }
    

      

    hmac加密:

    // MARK: - HMAC加密 需要秘钥
    enum CryptoAlgorithm {
        case MD5, SHA1, SHA224, SHA256, SHA384, SHA512
        
        var HMACAlgorithm: CCHmacAlgorithm {
            var result: Int = 0
            switch self {
            case .MD5:      result = kCCHmacAlgMD5
            case .SHA1:     result = kCCHmacAlgSHA1
            case .SHA224:   result = kCCHmacAlgSHA224
            case .SHA256:   result = kCCHmacAlgSHA256
            case .SHA384:   result = kCCHmacAlgSHA384
            case .SHA512:   result = kCCHmacAlgSHA512
            }
            return CCHmacAlgorithm(result)
        }
        
        var digestLength: Int {
            var result: Int32 = 0
            switch self {
            case .MD5:      result = CC_MD5_DIGEST_LENGTH
            case .SHA1:     result = CC_SHA1_DIGEST_LENGTH
            case .SHA224:   result = CC_SHA224_DIGEST_LENGTH
            case .SHA256:   result = CC_SHA256_DIGEST_LENGTH
            case .SHA384:   result = CC_SHA384_DIGEST_LENGTH
            case .SHA512:   result = CC_SHA512_DIGEST_LENGTH
            }
            return Int(result)
        }
    }
    
    extension String {
        func hmac(algorithm: CryptoAlgorithm, key: String) -> String {
            let str = self.cStringUsingEncoding(NSUTF8StringEncoding)
            let strLen = Int(self.lengthOfBytesUsingEncoding(NSUTF8StringEncoding))
            let digestLen = algorithm.digestLength
            let result = UnsafeMutablePointer<CUnsignedChar>.alloc(digestLen)
            let keyStr = key.cStringUsingEncoding(NSUTF8StringEncoding)
            let keyLen = Int(key.lengthOfBytesUsingEncoding(NSUTF8StringEncoding))
            
            CCHmac(algorithm.HMACAlgorithm, keyStr!, keyLen, str!, strLen, result)
            
            let digest = stringFromResult(result, length: digestLen)
            
            result.dealloc(digestLen)
            
            return digest
        }
        
        private func stringFromResult(result: UnsafeMutablePointer<CUnsignedChar>, length: Int) -> String {
            let hash = NSMutableString()
            for i in 0..<length {
                hash.appendFormat("%02x", result[i])
            }
            return String(hash)
        }
    }
    

      

     

    转载于:https://www.cnblogs.com/FranZhou/p/5086079.html

    展开全文
  • =========== swift Base64编码解码========== /** * 编码 */ func base64Encoding(str:String)-&gt;String { let strData = str.data(using: String.Encoding.utf8) let base64...

     =========== swift Base64编码解码==========

        /**

         *   编码

         */

        func base64Encoding(str:String)->String

        {

            

            let strData = str.data(using: String.Encoding.utf8)

            let base64String = strData?.base64EncodedString(options: NSData.Base64EncodingOptions.init(rawValue: 0))

            return base64String!

        }

        

        /**

         *   解码

         */

        func base64Decoding(encodedStr:String)->String

        {

            let decodedData = NSData(base64Encoded: encodedStr, options: NSData.Base64DecodingOptions.init(rawValue: 0))

            let decodedString = NSString(data: decodedData! as Data, encoding: String.Encoding.utf8.rawValue)! as String

            return decodedString

        }


    ===========MD5=======

    //桥接文件中导入

            #import <CommonCrypto/CommonDigest.h>

            MD5算法

            

            extension String{

                func md5() ->String!{

                    let str = self.cStringUsingEncoding(NSUTF8StringEncoding)

                    let strLen = CUnsignedInt(self.lengthOfBytesUsingEncoding(NSUTF8StringEncoding))

                    let digestLen = Int(CC_MD5_DIGEST_LENGTH)

                    let result = UnsafeMutablePointer<CUnsignedChar>.alloc(digestLen)

                    CC_MD5(str!, strLen, result)

                    var hash = NSMutableString()

                    for i in 0 ..< digestLen {

                        hash.appendFormat("%02x", result[i])

                    }

                    result.destroy()

                    return String(format: hash as String)

                }

            }

            

            调用MD5算法

            

            var str = "test"

            var str_MD5 = str.md5()


    ==========sha1=======

    建立桥接文件中 #import <CommonCrypto/CommonDigest.h>//md5

            创建string的扩展

            extension String {

                //MARK: - MD5

                func md5() -> String {

                    let cStr = self.cString(using: String.Encoding.utf8);

                    let buffer = UnsafeMutablePointer<UInt8>.allocate(capacity: 16)

                    CC_MD5(cStr!,(CC_LONG)(strlen(cStr!)), buffer)

                    let md5String = NSMutableString();

                    for i in 0 ..< 16{

                        md5String.appendFormat("%02x", buffer[i])

                    }

                    free(buffer)

                    return md5String as String

                    

                }

                //MARK: - sha1 加密

                func sha1() -> String {

                    

                    let data = self.data(using: String.Encoding.utf8)!

                    var digest = [UInt8](repeating: 0, count:Int(CC_SHA1_DIGEST_LENGTH))

                    

                    let newData = NSData.init(data: data)

                    CC_SHA1(newData.bytes, CC_LONG(data.count), &digest)

                    let output = NSMutableString(capacity: Int(CC_SHA1_DIGEST_LENGTH))

                    for byte in digest {

                        output.appendFormat("%02x", byte)

                    }

                    return output as String

                }

                

                

            }

            

            使用时候,代码如下:

            

            let string = "123456"

            let string_md5 = string.md5()

            

            let string_sha1 = string.sha1()



    展开全文
  • 一、 首先创建桥接头文件bridge.h来包含需要引用的Objective-C头文件,并在项目中配置 #import #import 二、 建立一个封装类,对String进行HMAC扩展 ...enum CryptoAlgorithm1 { ... case MD5, SHA1, SHA224


    一、 首先创建桥接头文件bridge.h来包含需要引用的Objective-C头文件,并在项目中配置


    #import <CommonCrypto/CommonDigest.h>

    #import <CommonCrypto/CommonHMAC.h>


    二、 建立一个封装类,对String进行HMAC扩展


    import Foundation


    // MARK: - 加密  HMAC_SHA1/MD5/SHA1/SHA224......

    /**  需在桥接文件导入头文件 ,因为C语言的库

     *   #import <CommonCrypto/CommonDigest.h>

     *   #import <CommonCrypto/CommonHMAC.h>

     */

    enum CryptoAlgorithm {

        /// 加密的枚举选项

        case MD5, SHA1, SHA224, SHA256, SHA384, SHA512

        

        var HMACAlgorithm: CCHmacAlgorithm {

            var result: Int = 0

            switch self {

            case .MD5:      result = kCCHmacAlgMD5

            case .SHA1:     result = kCCHmacAlgSHA1

            case .SHA224:   result = kCCHmacAlgSHA224

            case .SHA256:   result = kCCHmacAlgSHA256

            case .SHA384:   result = kCCHmacAlgSHA384

            case .SHA512:   result = kCCHmacAlgSHA512

            }

            return CCHmacAlgorithm(result)

        }

        

        var digestLength: Int {

            var result: Int32 = 0

            switch self {

            case .MD5:      result = CC_MD5_DIGEST_LENGTH

            case .SHA1:     result = CC_SHA1_DIGEST_LENGTH

            case .SHA224:   result = CC_SHA224_DIGEST_LENGTH

            case .SHA256:   result = CC_SHA256_DIGEST_LENGTH

            case .SHA384:   result = CC_SHA384_DIGEST_LENGTH

            case .SHA512:   result = CC_SHA512_DIGEST_LENGTH

            }

            return Int(result)

        }

    }


    extension String {

        /*

         *   func:加密方法

         *   参数1:加密方式; 参数2:加密的key

         */

        func hmac(algorithm: CryptoAlgorithm, key: String) -> String {

            let str = self.cString(using: String.Encoding.utf8)

            let strLen = Int(self.lengthOfBytes(using: String.Encoding.utf8))

            let digestLen = algorithm.digestLength

            let result = UnsafeMutablePointer<CUnsignedChar>.allocate(capacity: digestLen)

            let keyStr = key.cString(using: String.Encoding.utf8)

            let keyLen = Int(key.lengthOfBytes(using: String.Encoding.utf8))

            

            CCHmac(algorithm.HMACAlgorithm, keyStr!, keyLen, str!, strLen, result)

            

            let digest = stringFromResult(result:  result, length: digestLen)

            

            result.deallocate(capacity: digestLen)

            

            return digest

        }

        

        private func stringFromResult(result: UnsafeMutablePointer<CUnsignedChar>, length: Int) -> String {

            let hash = NSMutableString()

            for i in 0..<length {

                hash.appendFormat("%02x", result[i])

            }

            return String(hash)

        }

    }



    注意: swift4.0中不支持同名函数了


    展开全文
  • Swift3.0 - sha1加密算法

    2018-06-15 09:51:40
    注意: 需要创建OC桥接文件, Bridging-Header.h #import <...extension String { //sha1加密算法 func sha1() -> String{ let data : Data = self.data(using: String.Encoding.utf8, allow
    • 注意: 需要创建OC桥接文件, Bridging-Header.h
      #import <CommonCrypto/CommonHMAC.h>
    extension String {
    
        //sha1加密算法
        func sha1() -> String{
            let data : Data = self.data(using: String.Encoding.utf8, allowLossyConversion: true)!
            var digest = [UInt8](repeating:0,count:Int(CC_SHA1_DIGEST_LENGTH))
    
    
            let dataBytes = data.withUnsafeBytes { (bytes: UnsafePointer<UInt8>) -> UnsafePointer<UInt8> in
                return bytes
            }
            let dataLength = CC_LONG(data.count)
    
            CC_SHA1(dataBytes, dataLength, &digest)
    
            let output = NSMutableString(capacity: Int(CC_SHA1_DIGEST_LENGTH))
            for byte in digest{
                output.appendFormat("%02x", byte)
            }
            return output as String
        }
    }
    展开全文
  • swift写的HMAC_SHA1和MD5加密扩展类,其中HMAC_SHA1扩展方法除了SHA1,还可以使用其它算法比如SHA1SHA224等
  • ios swift sha1 md5 加密

    2015-11-18 17:35:39
    在自己的swift类中扩展String方法 extension String {    //sha1加密算法  func getSha1() -> String {  let data = self.dataUsingEncoding(NSUTF8StringEncoding)!  var digest = [UInt8](co
  • Swift调用sha1算法

    2019-06-15 08:46:49
    2019独角兽企业重金招聘Python工程师标准>>> ...
  • swift写的HMAC_SHA1和MD5加密扩展类,其中HMAC_SHA1扩展方法除了SHA1,还可以使用其它算法比如SHA1,MD5 ,SHA224等
  • 在客户端开发中,我们常常遇到需要将数据加密保存或提交的问题,下面我们来看看两种常用的加密方式 (一) 首先我们需要引入库import CommonCrypto (二) 创建一个字符串扩展:代码如下 import CommonCrypto ...
  • sha1源代码

    2020-07-18 23:30:46
    是hash算法中sha1的算法源代码,有点问题,需要调试
  • 这篇文章,我们来获取一下文件的SHA1。此方法主要用于文件比对,比如云空间上传文件时,需要提前判断文件之前是否存在于与空间之上。(一般配合MD5使用,SHA1SHA256 的使用方法一样咱们下面说)。1SHA的简介安全...
  • 它不是散列函数,而是采用了将MD5或SHA1散列函数与共享机密密钥(与公钥/私钥对不同)一起使用的消息身份验证机制。基本来说,消息与密钥组合并运行散列函数。然后运行结果与密钥组合并再次运行散列函数。这个128位的...
  • ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)➤GitHub地址:...
  • swift 3.0 哈希sha1方法

    2017-02-23 14:55:02
    //sha1 func sha1() -> String{ let data = self.data(using: String.Encoding.utf8, allowLossyConversion: true)! let uint8Ptr = UnsafeMutablePointerUInt8>.allocate(capacity: data.count)
  • 在安装Storage节点的时候会提示无法安装account-server,这是因为你可能手贱先安装了swift,这时候需要先remove swift(apt-get remove swift),然后再运行apt-get inst...
  • 如果你们在加密的时候,后台告诉你,用哈希算法或者MD5算法,...消息摘要算法我们通常在遇到的时候会看到“HMAC”字眼,mac(Message Authentication Code,消息认证码算法)是含有密钥散列函数算法,兼容了MD和SHA算法
  • SHA256加密算法

    2020-01-11 15:04:44
    这个摘要相当于四个长度为32个字节的数组,通常有一个长度为64的十六进制字符串来表示,其中1个字节=8位,一个十六进制的字符的长度为4位。 总体上,HSA256与MD4、MD5以及HSA-1等哈希函数的操作流程类似,待哈希的...
1 2 3 4 5 ... 20
收藏数 1,408
精华内容 563
关键字:

4 sha1 swift