[Swift通天遁地]七、数据与安全-(19)使用Swift实现原生的SHA1加密

[Swift通天遁地]七、数据与安全-(19)使用Swift实现原生的SHA1加密,第1张

概述本文将演示如何使用Swift实现原生的SHA1加密。 首先创建一个桥接头文件,因为需要使用到OC语言的通用加密解密类库。 在项目文件夹【DemoApp】上点击鼠标右键,d出右键菜单。 【New File】->【Header File】->【Next】->【Save As】:Header.h->【Create】 在该文件中,添加需要引用到的框架。 1 //添加需要引用到的框架2 #ifndef

本文将演示如何使用Swift实现原生的SHA1加密。

首先创建一个桥接头文件,因为需要使用到OC语言的通用加密解密类库。

在项目文件夹【DemoApp】上点击鼠标右键,d出右键菜单。

【New file】->【header file】->【Next】->【Save As】:header.h->【Create】

在该文件中,添加需要引用到的框架。

1 //添加需要引用到的框架2 #ifndef _4_1_2SecurityProject_SHA1_BrIDging_header_h3 #define _4_1_2SecurityProject_SHA1_BrIDging_header_h4 5 #import <CommonCrypto/CommonCrypto.h>6 7 #endif /* _4_1_2SecurityProject_SHA1_BrIDging_header_h */

点击项目名称【DemoApp】,显示项目的属性信息,

将头文件添加到桥接头选项中->【Build Settings】

->在搜索框内,输入需要定位的设置项目的名称:【Objective-C BrIDging Hader】

->鼠标双击选项右侧【Objective-C BrIDging Hader】,d出桥接头文件设置窗口。

->在打开的输入窗口中,输入刚刚创建的头文件的相对路径:【DemoApp/header.h】

现在创建类文件,实现具体加密 *** 作。

在项目文件夹【DemoApp】上点击鼠标右键,d出右键菜单。

【New file】->【Swift file】->【Next】->【Save As】:StringSHA1.swift->【Create】 

 1 import Foundation 2  3 //首先添加一个Int扩展 4 extension Int 5 { 6     //添加一个扩展方法,用来将整数类型,转换成十六进制的字符串。 7     func hexedString() -> String 8     { 9         //通过设置十六进制的格式,10         //将自身转换成十六进制的字符串,11         //并返回该字符串。12         return Nsstring(format:"%02x",self) as String13     }14 }15 16 //添加一个数据类型的扩展17 extension NSData18 {19     //添加一个扩展方法,用来将数据类型,转换成十六进制的字符串。20     func hexedString() -> String21     {22          //初始化一个字符串对象23         var string = String()24         25         //将不安全原始指针格式的字节,26         //转换成不安全指针的格式27         let unsafePointer = bytes.assumingMemoryBound(to: UInt8.self)28         //添加一个循环语句29         for i in UnsafeBufferPointer<UInt8>(start: unsafePointer,count: length)30         {31             //通过整形对象的扩展方法,将二进制数据转换成十六进制的字符串。32             string += Int(i).hexedString()33         }34         //返回十六进制的字符串。35         return string36     }37 38     //添加一个扩展方法,实现对数据的SHA1加密功能39     func SHA1() -> NSData40     {41         //首先创建一个20位长度的可变数据对象。42         let result = NSMutableData(length: Int(CC_SHA1_DIGEST_LENGTH))!43         //将不安全原始指针格式的字节,转换成不安全指针的格式。44         let unsafePointer = result.mutableBytes.assumingMemoryBound(to: UInt8.self)45         //通过调用加密方法,对数据进行加密,并将加密后的数据,存储在可变数据对象中。46         CC_SHA1(bytes,CC_LONG(length),UnsafeMutablePointer<UInt8>(unsafePointer))47         //最后将结果转换成数据格式对象并返回。48         return NSData(data: result as Data)49     }50 }51 52 //添加一个字符串类型的扩展。53 extension String54 {55     //添加一个扩展方法,实现SHA1加密的功能。56     func SHA1() -> String57     {58         //将字符串对象,转换成自定编码的数据对象59         let data = (self as Nsstring).data(using: String.EnCoding.utf8.rawValue)! as NSData60         //调用数据对象的扩展方法,进行加密 *** 作61         //并返回十六进制的结果。62         return data.SHA1().hexedString()63     }64 }

在项目导航区,打开视图控制器的代码文件【VIEwController.swift】

现在开始编写代码,实现原生的SHA1加密。

 1 import UIKit 2  3 class VIEwController: UIVIEwController { 4  5     overrIDe func vIEwDIDLoad() { 6         super.vIEwDIDLoad() 7         // Do any additional setup after loading the vIEw,typically from a nib. 8          9         //初始化一个待加密的字符串。10         let message = "https://www.cnblogs.com/strengthen/"11         //对字符串进行加密,并在控制台输出加密后的结果12         print("Result:"+message.SHA1())13         //输出加密后的字符串的长度。14         print("Length:\(message.SHA1().lengthOfBytes(using: String.EnCoding.utf8))")15     }16 17     overrIDe func dIDReceiveMemoryWarning() {18         super.dIDReceiveMemoryWarning()19         // dispose of any resources that can be recreated.20     }21 }
总结

以上是内存溢出为你收集整理的[Swift通天遁地]七、数据与安全-(19)使用Swift实现原生的SHA1加密全部内容,希望文章能够帮你解决[Swift通天遁地]七、数据与安全-(19)使用Swift实现原生的SHA1加密所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1020032.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存