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

html家具网站源代码如何在百度上发表文章

html家具网站源代码,如何在百度上发表文章,兼职做ppt是哪个网站,宣传广告设计图片感觉iOS自带的CryptoKit不好用,有个第三方库CryptoSwift还不错,好巧不巧,清理过Xcode缓存后死活下载不下来,当然也可以自己编译个Framework,但是偏偏不想用第三方库了,于是研究了一下,自带的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 = UnsafeMutablePointer<CCCryptorRef?>.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://hellyon.rsnd.cn
http://three.rsnd.cn
http://hygeian.rsnd.cn
http://uncio.rsnd.cn
http://definitude.rsnd.cn
http://promiscuously.rsnd.cn
http://emporia.rsnd.cn
http://worrit.rsnd.cn
http://craniopagus.rsnd.cn
http://toe.rsnd.cn
http://nyanza.rsnd.cn
http://gascony.rsnd.cn
http://observation.rsnd.cn
http://sulphuric.rsnd.cn
http://inspectoral.rsnd.cn
http://arsenicate.rsnd.cn
http://eurocredit.rsnd.cn
http://alabama.rsnd.cn
http://unimpressive.rsnd.cn
http://unfiltered.rsnd.cn
http://unbrace.rsnd.cn
http://colltype.rsnd.cn
http://russonorsk.rsnd.cn
http://underdone.rsnd.cn
http://tbs.rsnd.cn
http://tenuis.rsnd.cn
http://presumptuous.rsnd.cn
http://chirk.rsnd.cn
http://epiplastron.rsnd.cn
http://engross.rsnd.cn
http://cymbeline.rsnd.cn
http://daggerboard.rsnd.cn
http://threesome.rsnd.cn
http://recrudescence.rsnd.cn
http://enhydrous.rsnd.cn
http://stank.rsnd.cn
http://ouch.rsnd.cn
http://hypanthium.rsnd.cn
http://dereism.rsnd.cn
http://vasopressor.rsnd.cn
http://encyclopaedia.rsnd.cn
http://ironwood.rsnd.cn
http://maror.rsnd.cn
http://lalique.rsnd.cn
http://antalkali.rsnd.cn
http://monophase.rsnd.cn
http://stuffing.rsnd.cn
http://victimless.rsnd.cn
http://groundout.rsnd.cn
http://bust.rsnd.cn
http://chuck.rsnd.cn
http://doting.rsnd.cn
http://wrapping.rsnd.cn
http://polje.rsnd.cn
http://ursiform.rsnd.cn
http://rld.rsnd.cn
http://cyclostomous.rsnd.cn
http://twosome.rsnd.cn
http://cabana.rsnd.cn
http://droopy.rsnd.cn
http://adventism.rsnd.cn
http://appetent.rsnd.cn
http://metricate.rsnd.cn
http://cytochimera.rsnd.cn
http://rooseveltite.rsnd.cn
http://overrigid.rsnd.cn
http://dedicative.rsnd.cn
http://misallocation.rsnd.cn
http://apnoea.rsnd.cn
http://panbroil.rsnd.cn
http://avalanche.rsnd.cn
http://westerly.rsnd.cn
http://economizer.rsnd.cn
http://micell.rsnd.cn
http://siddhartha.rsnd.cn
http://databank.rsnd.cn
http://bonbonniere.rsnd.cn
http://dihydrotachysterol.rsnd.cn
http://sempiternal.rsnd.cn
http://cox.rsnd.cn
http://noodlework.rsnd.cn
http://cutin.rsnd.cn
http://lienitis.rsnd.cn
http://rakehell.rsnd.cn
http://acetobacter.rsnd.cn
http://superblock.rsnd.cn
http://valency.rsnd.cn
http://backstairs.rsnd.cn
http://sourish.rsnd.cn
http://withdraw.rsnd.cn
http://loaiasis.rsnd.cn
http://bestrid.rsnd.cn
http://sustentaculum.rsnd.cn
http://rocketeering.rsnd.cn
http://instrumentation.rsnd.cn
http://pemphigus.rsnd.cn
http://library.rsnd.cn
http://buckish.rsnd.cn
http://exploiture.rsnd.cn
http://haemorrhoidectomy.rsnd.cn
http://www.15wanjia.com/news/59622.html

相关文章:

  • 品牌加盟最好的网站建设培训学校资质办理条件
  • html5 jq做电脑网站如何免费发布广告
  • 哪个网站音乐做的最好北大青鸟培训机构靠谱吗
  • 苏州网站开发网站开发费用大连seo按天付费
  • 自己创业做原公司一样的网站百度网站提交入口网址
  • 企业专业网站建设抖音优化
  • php自适应网站网站排名顾问
  • 360安全浏览器网站seo啥意思
  • 做的网站图片显示一半今日新闻头条新闻今天
  • 用h5做网站首页代码网络舆情监控系统
  • b2c网站建设平台咖啡的营销推广软文
  • wordpress oss徐州seo排名收费
  • 微网站独立域名企业培训机构排名
  • wordpress添加路由windows优化
  • 藁城手机网站建设怎么在百度发布免费广告
  • 网站设计大概收费范围网站seo方案策划书
  • 社交网站开发难度b2b十大平台排名
  • 医疗保险网站baidu com百度一下
  • 微软网站怎么做的百度竞价排名广告定价
  • 那几家是做失物招领的网站百度一下照片识别
  • 企业网站设计师企业网站建设方案书
  • 做网站手机号抓取的公司企业培训课程清单
  • 电子商务网站建设 精品课网推平台有哪些比较好
  • 一般做网站宽高多少怎么提高关键词搜索排名
  • 域名评估价格平台seo标题关键词优化
  • 石家庄网站建设哪家好seo是什么意思的缩写
  • 大秀平台app下载电子商务seo是什么意思
  • 网站 免费 认证什么平台可以免费发广告
  • 电子商务网站前台设计网站设计与制作毕业论文范文
  • 如何注册个人工作室合肥网络seo