4.0 md5 swift_openstack swift 2.20.0 2.21.0 - CSDN
  • swift 4.0 MD5 加密

    2018-05-07 12:12:29
    之前写过一个 swift md5 加密的的文章很短,很短,但是很实用,有的朋友说有问题不能运行,这里我先声明我的xcode9.3的 这个版本截止到目前是最新的,我这个是没问题的.那么我总是感觉那个方法还有点oc的味道,所以今天就...

    之前写过一个 swift md5 加密的的文章很短,很短,但是很实用,有的朋友说有问题不能运行,这里我先声明我的xcode9.3的 这个版本截止到目前是最新的,我这个是没问题的.那么我总是感觉那个方法还有点oc的味道,所以今天就改成完全是swift 版本.

    直接上代码:

    var MD5String: String {

            let cStrl = cString(using: String.Encoding.utf8.rawValue);

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

            CC_MD5(cStrl, CC_LONG(strlen(cStrl!)), buffer);

            var md5String = "";

            for idx in 0...15 {

                let obcStrl = String.init(format: "%02x", buffer[idx]);

                md5String.append(obcStrl);

            }

            free(buffer);

            return md5String;

        }

    可以给String 添加一个扩展,这样MD5就是Ta的一个属性了,效率高很多.

    另外要说的是 其他的操作不能少,如果还有问题,欢迎拍砖....





    展开全文
  • Swift4 MD5加密

    2018-08-30 17:20:37
    现在大多IOS开发者对Swift持观望态度,原因无非是这门语言太年轻,不稳定之类的,再加之ABI稳定版本(据说是Swift5)不知何时能来,大家普遍生出了再等等的心态。然而,总结这几日的使用情况,Swift4.2的简洁和强大...

    Swift4.2已近发布一段时间了,新版本的稳定性以及对上个版本的兼容性都有了显著的提升(再也不用吐槽:每个Swift版本都像是一门新的语言啦,hahaha…)。现在大多IOS开发者对Swift持观望态度,原因无非是这门语言太年轻,不稳定之类的,再加之ABI稳定版本(据说是Swift5)不知何时能来,大家普遍生出了再等等的心态。然而,总结这几日的使用情况,Swift4.2的简洁和强大的表现力深深的折服了我,走过了四年的风风雨雨, Swift日趋成熟,所以,现在上车,恰逢其时…

    言归正传,下面记录下今天遇到的问题吧:

    是的,很简单的一个问题,Swift里的MD5加密。搜了些网上的,发现都有些陈旧,各种报错,有的甚至还要桥接OC。综合大家的写法,找到一段能稳定跑起来的代码,暂时用起来没有问题。下面贴出来,希望能帮到大家,欢迎指正:

    import Foundation
    // 导入CommonCrypto
    import CommonCrypto
    
    // 直接给String扩展方法
    extension String {
        func md5() -> String {
            let str = self.cString(using: String.Encoding.utf8)
            let strLen = CUnsignedInt(self.lengthOfBytes(using: String.Encoding.utf8))
            let digestLen = Int(CC_MD5_DIGEST_LENGTH)
            let result = UnsafeMutablePointer<UInt8>.allocate(capacity: 16)
            CC_MD5(str!, strLen, result)
            let hash = NSMutableString()
            for i in 0 ..< digestLen {
                hash.appendFormat("%02x", result[i])
            }
            free(result)
            return String(format: hash as String)
        }
    }

    用法:

    let str = "xxx"
    let sign = str.md5()
    print("result in \(sign)")

    发现Swift支持了namespace后,再也不用导一大推头文件了,又想到隔壁的Java早就支持了,瞬间感觉OC Low了很多;Swift不是纯面向对象的语言,这意味着,函数可以单独写在一个文件里,直接调用;struct也升级到将要和class平起平坐的地位,enum强大的令人难以置信;还有很多新特性,像一个个黑魔法,有着无限魔力,令人着迷。接下来,会继续探索,Swift,你上车了吗?

    展开全文
  • swiftMD5加密

    2016-02-19 15:56:25
    //代码中应用md5() passwordTF.text?.md5()扩展String(MD5算法)/* * 将字符串进行MD5加密,返回加密后的字符串 */ extension String{ func md5() ->String!{ let str = self.cStringUsingEncoding(NSUTF8String...

    //代码中应用md5()
    passwordTF.text?.md5()

    扩展String(MD5算法)

    /*
    *  将字符串进行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)
            let hash = NSMutableString()
            for i in 0 ..< digestLen {
                hash.appendFormat("%02x", result[i])
            }
            result.destroy()
            return String(format: hash as String)
        }
    }
    
    展开全文
  • MD5的全称是MessageDigest Algorithm 5,即消息摘要算法第五版,是计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。在90年代初由MIT Laboratory for Computer Science 和RSA Data Security Inc的...

           在大多数的iOS开发者看来,采用沙箱机制的iOS系统是很安全的,但事实上,iOS系统及里面的应用并没有想象中那么安全。和安卓应用相似,iOS应用也面临着被破解的威胁,存在大量内购破解、源代码破解、植入病毒或广告、二次打包等情况。

           这就需要对应用程序中进进出出的数据进行加密处理,以保护用户的数据和隐私。那么可以通过加密保护哪些数据呢?

    • 对设备中存储的内容进行加密:开发者经常使用UserDefaults、plist文件、CoreData框架等作为数据存储的载体。在存入数据之前对数据进行一些加密操作,可以增强数据的安全性。
    • 对网络传输的数据进行加密:大部分的iOS应用都需要联网,通过和服务器端进行通信,获得最新的信息并且将内容展现给用户。由于网络传输过程中有可能经过不安全的中间节点,所以应该对敏感数据加密,以保证用户信息的安全。
    • 对账户密码进行加盐操作:加盐Salt在密码学中是指,通过在密码任意固定位置插入特定的字符串,让散列后的结果和使用原始密码的散列结果不相符,这个过程称之为加盐。加盐后的账户密码再经过诸如MD5等方式的加密,然后与服务器端采用同样加盐和加密的密码进行比较,如果两个密码相同,则密码匹配成功。这样无论在客户端还是服务器,当传输的密码被截获后,即使解密成功也无法还原出原始的密码。

    对称加密和非对称加密

           加密技术是利用一些技术手段,把重要的数据变为乱码进行数据的传送,当到达目的地后,再用相同或不同的手段进行解密和还原。

           对数据加密的技术分为两类,即对称加密(私人密钥加密)和非对称加密(公开密钥加密)。对称加密以Data Encryption Standard数据加密标准算法即DES为典型代表,非对称加密通常以RivestShamir Adleman即RSA算法为代表。

           对称加密采用对称密码编码技术,它的特点是对数据加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥,这种方法在密码学中叫作对称加密算法,其具有简单快捷、密钥较短、破译困难等特点,如图1所示。

    图1

           与对称加密算法不同,非对称加密算法需要两个密钥,一个是公有密钥(Public key),另一个是私有密钥 (Private key)。如果使用公有密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公有密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法,如图2所示:
    图2

    MD5加密

           MD5的全称是MessageDigest Algorithm 5,即消息摘要算法第五版,是计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。在90年代初由MIT Laboratory for Computer Science 和RSA Data Security Inc的Ronald L.Rivest开发,经MD2、MD3和MD4发展而来。

           MD5可以将任意长度的字节串变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串。

           MD5的典型应用场景是对一段信息生成指纹,以检测信息是否被篡改。例如将一段文字写在一个文本文件中,并对这个文本文件生成一个MD5的值。然后在对该文件进行传播的过程中,如果其它人修改了文件中的任意内容,当对修改后的文件重新计算MD5时,就会发现新旧两个文件的MD5值是不相同。所以我们经常使用MD5对下载的软件进行校验,以检验软件是否被第三方植入病毒代码或广告代码。


    1、创建项目并建立桥接文件

           接着我们来创建一个示例项目,对一个字符串进行MD5加密。首先创建一个基于[Single View Applicaton]模板的空白项目,然后在左侧的项目名称文件夹上点击鼠标右键,并选择右键菜单中的[New File...]选项,创建一个桥接头文件,这是因为我们需要使用到Object-C的CommonCrypto.h。

           完成桥接头文件的创建之后,再使用与上一个示例相同的方式,对桥接头文件的路径进行设置,从而完成项目的配置工作,如图3所示:


    图3

           然后继续在左侧的项目名称文件夹上点击鼠标右键,并选择右键菜单中的[New File...]选项,从而创建一个.swift文件,我们将在该文件中对String进行扩展:

    //
    //  StringMD5.swift
    //  SecurityProjectMd5
    //
    //  Created by Jerry on 2017/1/10.
    //  Copyright © 2017 www.coolketang.com. All rights reserved.
    //
    
    import Foundation
    
    extension Int
    {
        func hexedString() -> String
        {
            return NSString(format:"%02x", self) as String
        }
    }
    
    extension NSData
    {
        func hexedString() -> String
        {
            var string = String()
            let unsafePointer = bytes.assumingMemoryBound(to: UInt8.self)
            for i in UnsafeBufferPointer<UInt8>(start:unsafePointer, count: length)
            {
                string += Int(i).hexedString()
            }
            return string
        }
        func MD5() -> NSData
        {
            let result = NSMutableData(length: Int(CC_MD5_DIGEST_LENGTH))!
            let unsafePointer = result.mutableBytes.assumingMemoryBound(to: UInt8.self)
            CC_MD5(bytes, CC_LONG(length), UnsafeMutablePointer<UInt8>(unsafePointer))
            return NSData(data: result as Data)
        }
    }
    
    extension String
    {
        func MD5() -> String
        {
            let data = (self as NSString).data(using: String.Encoding.utf8.rawValue)! as NSData
            return data.MD5().hexedString()
        }
    }

           从代码中可以看出MD5加密和SHA1加密的步骤基本相似。不同之处是在第16行的代码中,给NSData添加了一个名为MD5的扩展方式,用来实现数据的MD5加密。在加密过程中,首先创建一个CC_MD5_DIGEST_LENGTH长度的可变数据对象。接着通过CC_MD5方法,对数据进行加密,并将加密后的数据存储于可变数据对象。最后将结果转换为NSData格式并返回。

           在第24行的代码中,对String类进行扩展,并添加一个名为MD5的扩展方法。当调用该方法时,首先将字符串转换为NSData对象,并采用UTF-8的编码方式。接着调用NSData的两个扩展方法,完成对字符串的加密操作,并返回十六进制的结果。


    2、修改viewDidLoad方法

           和使用SHA1算法进行加密的示例项目相同,最后一步也是修改ViewController类的viewDidLoad方法,在该方法中对字符串coolketang.com进行MD5加密操作,并在日志区输出加密后的结果,以及密文的长度信息:

    //
    //  ViewController.swift
    //  24.1.2SecurityProject_MD5
    //
    //  Created by Jerry on 2017/1/10.
    //  Copyright © 2017 www.coolketang.com. All rights reserved.
    //
    
    import UIKit
    
    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
            
            let message = "coolketang.com"
            print("Result:"+message.MD5())
            print("Length:\(message.MD5().lengthOfBytes(using: String.Encoding.utf8))")
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    
    
    }
    
    

    现在已经完成了所有的MD5加密功能的编码工作,点击Xcode界面左上角的[编译并运行]按钮  ,打开模拟器运行项目。项目运行后,将弹出一个空白的模拟器,并在日志区输出加密后的结果,如图4所示:


    图4





    新 作

    iOS开发中的神兵利器

    共140节课程,讲解GitHub中近百个过千star的iOS热门开源项目
    市面上唯一大规模讲解GitHub中热门的iOS开源项目的教程
    快速、优雅地解决iOS开发工作中遇到的各种棘手问题

    视频观看地址:http://study.163.com/course/courseMain.htm?courseId=1003657013

    互动教程下载地址:https://itunes.apple.com/cn/app/id1209739676





    展开全文
  • swift3.0 MD5加密源码

    2017-07-16 13:44:34
    因为MD5加密是不可逆的,所以一般只有MD5加密的算法,而没有MD5解密的算法。 创建一个Sting+MD5.Swift字符串分类文件(同时此处需要创建一个bridge.h桥接文件,引入这个头文件 #import ,md5加密方法需要使用的...

    因为MD5加密是不可逆的,所以一般只有MD5加密的算法,而没有MD5解密的算法。

    创建一个Sting+MD5.Swift字符串分类文件(同时此处需要创建一个bridge.h桥接文件,引入这个头文件

    #import <CommonCrypto/CommonDigest.h>,md5加密方法需要使用的文件

    1.bridge.h桥接文件如下:

    #ifndef bridge_h  
    #define bridge_h  
      
    #import <CommonCrypto/CommonDigest.h>  
      
    #endif /* bridge_h */ 

    2. Sting+MD5.swift字符串分类文件如下

    MD5加密算法如下

    import Foundation  
      
    extension String {  
        var md5 : String{  
            let str = self.cString(using: String.Encoding.utf8)  
            let strLen = CC_LONG(self.lengthOfBytes(using: String.Encoding.utf8))  
            let digestLen = Int(CC_MD5_DIGEST_LENGTH)  
            let result = UnsafeMutablePointer<CUnsignedChar>.allocate(capacity: digestLen)  
              
            CC_MD5(str!, strLen, result)  
              
            let hash = NSMutableString()  
            for i in 0 ..< digestLen {  
                hash.appendFormat("%02x", result[i])  
            }  
            result.deinitialize()  
              
            return String(format: hash as String)  
        }  
    }  
    
    


    展开全文
  • 简单记录使用swift3.0开发,加密md5和sha1的方法: 先新建一个项目,名为:Md5Sha1。 建一个名为Header.h的文件,在project中设置 ,如图: 在Header.h中,引入代码如下:(此方法为使用MD5加密)#import //md5新建...
  • 一、 首先创建桥接头文件bridge.h来包含需要引用的Objective-C头文件,并在项目中配置 #import #import 二、 建立一个封装类,对String进行HMAC扩展 import Foundation ... case MD5, SHA1, SHA224
  • MD5的32位加密和16位加密,及加密之后输出的大小写的字符串。
  • 支持swift3.0的开源库

    2016-11-11 14:09:04
    pod 'IQKeyboardManagerSwift', '4.0.6' pod 'SCLAlertView', :git => 'https://github.com/vikmeup/SCLAlertView-Swift' # Alamofire 网络库 pod 'Alamofire', '~> 4.0' # swift解析json库 pod 'Swif
  • Swift4.0开发笔记

    2017-11-16 23:07:13
    目录 1、ATS配置 ...8、MD5加密 9、聊天界面 10、多线程GCD 11、 启动图尺寸大小 1、ATS配置 App 网络http请求已被禁止,需要在Info.plist文件配置。 NSAppTransportSecurity NSAllowsArbitr
  • 目录(?)[+] 版本:Swift ...1. 将Swift从Objective-C混合的md文件中抽出(正在进行…) 使用方法:根据目录关键字搜索,记得包含@,以保证搜索目录关键字的唯一性。 问题反馈:请广大网
  • 最近随便找了一个App,用Swift敲了一遍,目前主体已经完成,只剩下一些小页面了,算是自己认真对待的一份代码。有意见和建议请指出。传送门&gt;&gt;&gt; 自定义控件 这里面,我自己封装了一些经常用到的...
  • 原文地址:https://github.com/easyui/blog/blob/master/Swift/2017-09-26-Swift-Tips%5BV4.0%2B%2CXcode9.0%2B%5D.md   :smile:Xcode 9 中同时集成了 Swift 3.2 和 Swift 4。 Swift 3.2 完全兼容 Swift 3.1,...
  • 一、简介 Swift Package Manager(以下简称SPM)是苹果在swift3.0中加入的一个包管理工具,用于处理...需要注意的是,SPM在swift4.0中重新设计了API,所以你需要确定你当前使用的swift版本,否则很可能会出现build失败...
  • Swift 4.0 学习笔记
  • Demo代码来自 https://github.com/Lafree317/Swift-MJrefresh/blob/master/README.md class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource { var tableView: UITableView! ...
  • 二维码 swift 4

    2018-05-15 20:59:46
    A barcode and qr code scanner( 二维码 各种码识别,生成,界面效果)scanqrcodebarcodeavfoundationSwiftOtherBranch: master New pull requestFind fileClone or download MxABC Merge pull request #55 ...
  • swift json

    2019-01-20 13:39:02
    import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOpti....
  • swift4.0之前,一直没有一套数据解析的方法。现在4.0后,终于有了Codable可以直接将json转成对象,有望取代OC的KVC机制。 先来看看Codable public typealias Codable = Decodable & Encodable 基本...
  • Swift 开源项目汇总

    2019-09-16 16:07:05
    Swift 开源项目汇总
1 2 3 4 5 ... 17
收藏数 337
精华内容 134
关键字:

4.0 md5 swift