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

千博企业网站管理系统 后台拿shell辽宁建设工程信息网a类业绩

千博企业网站管理系统 后台拿shell,辽宁建设工程信息网a类业绩,织梦电影网站模板下载,网站建设协议合同范本感觉iOS自带的CryptoKit不好用#xff0c;有个第三方库CryptoSwift还不错#xff0c;好巧不巧#xff0c;清理过Xcode缓存后死活下载不下来#xff0c;当然也可以自己编译个Framework#xff0c;但是偏偏不想用第三方库了#xff0c;于是研究了一下#xff0c;自带的Com…感觉iOS自带的CryptoKit不好用有个第三方库CryptoSwift还不错好巧不巧清理过Xcode缓存后死活下载不下来当然也可以自己编译个Framework但是偏偏不想用第三方库了于是研究了一下自带的CommonCrypto也可以达到项目需求。 代码主要包含以下算法 AES128/CBC/NoPadding AES128/CTR/NoPadding AES-CMAC import Foundation import CommonCryptoclass AESUtil {private init(){}//////AES-CMAC///static func CMAC(key: Data, data: Data) - Data? {let blockSize 16var subKey1 Data(count: blockSize)var subKey2 Data(count: blockSize)// Step 1: Generate subkeysguard generateSubKeys(key: key, subKey1: subKey1, subKey2: subKey2) else {return nil}// Step 2: Calculate the number of blockslet blockCount (data.count blockSize - 1) / blockSize// Step 3: Process each blockvar lastBlock Data(count: blockSize)for i in 0..blockCount {let blockRange i * blockSize..min((i 1) * blockSize, data.count)var block data.subdata(in: blockRange)if i blockCount - 1 {if block.count blockSize {block.append(0x80)while block.count blockSize {block.append(0x00)}block xor(data: block, with: subKey2)} else {block xor(data: block, with: subKey1)}}lastBlock xor(data: lastBlock, with: block)lastBlock CBC(key: key, data: lastBlock, isEncrypt: true)!}return lastBlock}private static func generateSubKeys(key: Data, subKey1: inout Data, subKey2: inout Data) - Bool {let blockSize 16let zeroBlock Data(count: blockSize)guard let L CBC(key: key, data: zeroBlock, isEncrypt: true) else {return false}subKey1 generateSubKey(block: L)subKey2 generateSubKey(block: subKey1)return true}private static func generateSubKey(block: Data) - Data {let blockSize 16var subKey Data(count: 16)var overflow falsefor i in (0..blockSize).reversed() {let byte block[i]let shiftedByte byte 1subKey[i] shiftedByte | (overflow ? 1 : 0)overflow (byte 0x80) ! 0}if overflow {subKey[blockSize - 1] ^ 0x87}return subKey}private static func xor(data: Data, with other: Data) - Data {var result Data(count: data.count)for i in 0..data.count {result[i] data[i] ^ other[i]}return result}//////AES128/CBC/NoPadding加解密//////param isEncrypt true加密false解密///static func CBC(key: Data, data: Data, isEncrypt: Bool) - Data? {return AES128NoPadding(key: key, iv: Data(count: 16), data: data, mode: CBC, isEncrypt: isEncrypt)}//////AES128/CTR/NoPadding加解密//////param isEncrypt true加密false解密///static func CTR(key: Data, data: Data, isEncrypt: Bool) - Data? {return AES128NoPadding(key: key, iv: Data(count: 16), data: data, mode: CTR, isEncrypt: isEncrypt)}//////AES128/NoPadding加解密//////param mode 支持CBC、CTR///param isEncrypt true加密false解密///static func AES128NoPadding(key: Data, iv: Data, data: Data, mode: String, isEncrypt: Bool) - Data? {let bufferLength data.count kCCKeySizeAES128var buffer Data(count: bufferLength)var numBytesEncrypted: size_t 0let operation isEncrypt ? kCCEncrypt : kCCDecryptlet cryptStatus: CCCryptorStatus buffer.withUnsafeMutableBytes { (bufferPtr: UnsafeMutableRawBufferPointer) inkey.withUnsafeBytes { (keyPtr: UnsafeRawBufferPointer) iniv.withUnsafeBytes { (ivPtr: UnsafeRawBufferPointer) indata.withUnsafeBytes { (dataPtr: UnsafeRawBufferPointer) in//调用加密函数var modeSource 0if mode CBC {modeSource kCCModeCBC} else if mode CTR {modeSource kCCModeCTR}let cryptorRef UnsafeMutablePointerCCCryptorRef?.allocate(capacity: 1)var status CCCryptorCreateWithMode(CCOperation(operation), CCMode(modeSource), CCAlgorithm(kCCAlgorithmAES), CCPadding(ccNoPadding), ivPtr.baseAddress, keyPtr.baseAddress, kCCKeySizeAES128, nil, 0, 0, CCModeOptions(0), cryptorRef)if status kCCSuccess {status CCCryptorUpdate(cryptorRef.pointee, dataPtr.baseAddress, data.count, bufferPtr.baseAddress, bufferLength, numBytesEncrypted)} else {print(CCCryptorCreateWithMode fail: \(encryptError(status)))}return status}}}}if cryptStatus kCCSuccess {buffer.removeSubrange(numBytesEncrypted..bufferLength)return buffer}print(AES/\(mode)/NoPadding加解密失败: \(encryptError(cryptStatus)))return nil}private static func encryptError(_ status: CCCryptorStatus)- String {if status kCCParamError {return kCCParamError} else if status kCCBufferTooSmall {return kCCBufferTooSmall} else if status kCCMemoryFailure {return kCCMemoryFailure} else if status kCCAlignmentError {return kCCAlignmentError} else if status kCCDecodeError {return kCCDecodeError} else if status kCCUnimplemented {return kCCUnimplemented} else if status kCCOverflow {return kCCOverflow} else if status kCCRNGFailure {return kCCRNGFailure} else if status kCCUnspecifiedError {return kCCUnspecifiedError} else if status kCCCallSequenceError {return kCCCallSequenceError} else if status kCCKeySizeError {return kCCKeySizeError} else if status kCCInvalidKey {return kCCInvalidKey}return \(status)} }
http://www.hkea.cn/news/14264474/

相关文章:

  • 在线做头像网站张家界网站建设的公司
  • 做网站的那些高清图上哪里找抖音广告投放 网页制作教程
  • 比较好看的网站软件开发工程师证书含金量高吗
  • 北京招聘网站设计师品牌高端网站
  • 世界之窗附近做网站公司新能源汽车前十名品牌
  • 广州网站seo优化排名西安网站优化体验
  • 建网站商城有哪些公司2022注册公司取名
  • 如何建设一个网站站wordpress经典编辑器没有
  • 公司网站建设基本流程图响站怎么建设网站
  • 怎么建设一个网站并顺利打开浏览长沙网上购物超市
  • 做网站需要什么准备WordPress小说模板国外
  • 山东建设发展研究院网站天健oa管理系统
  • 做网站的功能结构布局网站建设的开票编码
  • 购物网站html模板下载制作网页然后把文件上传
  • 网站关键词的分类盘锦网站建设报价
  • 电子商务网站建设策划书模板产品网站建设多少钱
  • 网站文章怎么做分享qq福州市住房和城乡建设局官网
  • 学校网站建设阶段性目标久久seo正规吗
  • 胶州做网站的德州网站建设推广
  • 包头网站建设多少钱浙江平台网站建设制作
  • 温岭建设规划局网站wordpress主题:精选zruckmetro主题
  • 网站建设公司招聘面试大气公司网站源码
  • 公司建设网站有什么好处高端品牌建站
  • 做一个网站的预算wordpress 分享 可见
  • 泉州网站制作专业黑帽seo
  • wordpress网站推翻重建国际设计师网站
  • 青岛建设投资公司网站中国十大门窗品牌有哪些
  • 广州宝安建网站企业网站选wordpress和织梦
  • 目前做系统比较好的网站美食网站php源码
  • 四个平台建设网站不显示图片从零开始制作wordpress主题