当前位置: 首页 > news >正文

第三方接入小记

    // 加密 转换为字符串

    func sign(dict:Dictionary<String,String>?,_ sign:String) -> String {

        

        let sortDict = dict?.sort{ $0.0 < $1.0 }

        

        var params = ""

        

        for (key,value) in sortDict! {

            params += "\(key)=\(value)&"

        }

        

        let index = params.endIndex.advancedBy(-1)

        

        params = params.substringToIndex(index)

        

        let signStr = sign + params + sign

        

        return  params + "&sign=" + md5(signStr)

    }

 

// md5加密

    func md5(sstring : String) -> String{

        let str = sstring.cStringUsingEncoding(NSUTF8StringEncoding)

        let strLen = CC_LONG(sstring.lengthOfBytesUsingEncoding(NSUTF8StringEncoding))

        let digestLen = Int(CC_MD5_DIGEST_LENGTH)

        

        let buffer = UnsafeMutablePointer<UInt8>.alloc(digestLen)

        

        CC_MD5(str!,strLen,buffer)

        

        let hash = NSMutableString()

        for i in 0 ..< digestLen {

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

        }

        

        buffer.dealloc(digestLen)

        

        return String(format: hash as String)

    }

  // 获取Package Name  和 BundleID 

     NSBundle.mainBundle().bundleIdentifier,"bundleID"

    // app 显示名称

     NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleName")

 

转载于:https://www.cnblogs.com/madarax/p/5773765.html

相关文章:

  • 浅述WinForm多线程编程与Control.Invoke的应用
  • 容器和泛型
  • 在Java中、、三者的区别
  • maven 安装本地jar包到本地maven仓库
  • 网络爬虫: 从allitebooks.com抓取书籍信息并从amazon.com抓取价格(3): 抓取amazon.com价格...
  • 河南多校联合训练 F 不是匹配
  • JAVA缓存技术
  • SAP PP 生产订单变更记录保存
  • 目标确定
  • spoj1812-Longest Common Substring II(后缀自动机)
  • 数据分析,了解行业
  • 加速ssh连接
  • nodeJS实战:自定义模块与引入,不同模块的函数传递及回调处理,exports与module.exports(基于nodejs6.2.0)...
  • Tweak 中系统方法写入文件到根目录下面失败
  • 在练习过程中遇到的几点小问题---关于布局
  • 分享的文章《人生如棋》
  • (三)从jvm层面了解线程的启动和停止
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • ComponentOne 2017 V2版本正式发布
  • Java 最常见的 200+ 面试题:面试必备
  • React 快速上手 - 07 前端路由 react-router
  • vue 个人积累(使用工具,组件)
  • windows-nginx-https-本地配置
  • 对JS继承的一点思考
  • 人脸识别最新开发经验demo
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 通过几道题目学习二叉搜索树
  • 新书推荐|Windows黑客编程技术详解
  • puppet连载22:define用法
  • 选择阿里云数据库HBase版十大理由
  • ​io --- 处理流的核心工具​
  • ​卜东波研究员:高观点下的少儿计算思维
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • (4)事件处理——(7)简单事件(Simple events)
  • (Git) gitignore基础使用
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (九十四)函数和二维数组
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (顺序)容器的好伴侣 --- 容器适配器
  • (轉貼) UML中文FAQ (OO) (UML)
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .NET Core 项目指定SDK版本
  • .net FrameWork简介,数组,枚举
  • .net refrector
  • .net web项目 调用webService
  • @Autowired注解的实现原理
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • @ConfigurationProperties注解对数据的自动封装
  • @EnableConfigurationProperties注解使用