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

iOS Swift算法之KDF2

后端用Java开发的,用到了org.bouncycastle.crypto.generators.KDF2BytesGenerator,一开始在网上各种搜,没找到相关的接口或第三方库,白白浪费了几天时间,后面才想到照着Java代码自己实现,于是乎参考BaseKDFBytesGenerator.java轻松搞定。

import Foundation
import CryptoKitclass KDF2BytesGenerator {static func generateBytes(shared: Array<UInt8>, iv: Array<UInt8>?) -> Array<UInt8> {var outOff = 0var len = 16let oBytes = lenlet outLen = SHA256.byteCountlet cThreshold = (oBytes + outLen - 1) / outLenlet counterStart = 1var out = Array<UInt8>(repeating: 0, count: oBytes)var C = Array<UInt8>(repeating: 0, count: 4)intToBigEndian(counterStart, &C, 0)var counterBase = counterStart & ~0xFFfor _ in 0..<cThreshold {var digest = SHA256()digest.update(data: shared)digest.update(data: C)if (iv != nil){digest.update(data: iv!)}let dig = digest.finalize().map { (e:UInt8) ine}if len > outLen {uint8ArrayCopy(dig, 0, &out, outOff, outLen)outOff += outLenlen -= outLen} else {uint8ArrayCopy(dig, 0, &out, outOff, len)}if 1 + C[3] == 0 {C[3] += 1counterBase += 0x100intToBigEndian(counterBase, &C, 0)}}return out}static func uint8ArrayCopy(_ src: Array<UInt8>, _ srcPos: Int, _ dest: UnsafeMutablePointer<UInt8>, _ destPos: Int, _ length: Int) {let end = srcPos + lengthfor i in srcPos..<end {dest[destPos + i - srcPos] = src[i]}}static func intToBigEndian(_ value: Int, _ arr: UnsafeMutablePointer<UInt8>, _ offset: Int) {arr[offset] = UInt8((value >> 24) & 0xff)arr[offset + 1] = UInt8((value >> 16) & 0xff)arr[offset + 2] = UInt8((value >> 8) & 0xff)arr[offset + 3] = UInt8(value & 0xff)}
}

相关文章:

iOS Swift算法之KDF2

后端用Java开发的&#xff0c;用到了org.bouncycastle.crypto.generators.KDF2BytesGenerator&#xff0c;一开始在网上各种搜&#xff0c;没找到相关的接口或第三方库&#xff0c;白白浪费了几天时间&#xff0c;后面才想到照着Java代码自己实现&#xff0c;于是乎参考BaseKDF…...

PyQt6/PySide6 QImage 类

PyQt6/PySide6 QImage 类详解 一、QImage 概述 QImage 是 Qt 框架中用于处理图像数据的核心类&#xff0c;提供&#xff1a; 独立于硬件的图像表示像素级访问和操作多种图像格式支持&#xff08;PNG/JPEG/BMP等&#xff09;图像转换和基本处理功能 from PyQt6.QtGui import…...

Java8新特性Optional,Function,Supplier,Consumer

Java8新特性 1.Optional 首先&#xff0c;Optional 它不是一个函数式接口&#xff0c;设计它的目的是为了防止空指针异常&#xff08;NullPointerException&#xff09;&#xff0c;要知道在 Java 编程中&#xff0c; 空指针异常可是臭名昭著的。 让我们来快速了解一下 Opti…...

腾讯云服务器中Ubuntu18.04搭建python3.7.0与TensorFlow1.15.0与R-4.0.3环境

所有踩过的坑&#xff0c;都化成了这条平坦的路 云服务器配置 基础配置选择竞价实例&#xff08;便宜/需求小&#xff09; 选择地区&#xff08;距离自己近的就行&#xff09; 实例配置选择异构计算&#xff08;能力较强&#xff0c;性价比高&#xff09;根据GPU显存需求选择…...

01.Docker 概述

Docker 概述 1. Docker 的主要目标2. 使用Docker 容器化封装应用程序的意义3. 容器和虚拟机技术比较4. 容器和虚拟机表现比较5. Docker 的组成6. Namespace7. Control groups8. 容器管理工具9. docker 的优缺点10. 容器的相关技术 docker 官网: http://www.docker.com 帮助文档…...

DedeBIZ系统审计小结

之前简单审计过DedeBIZ系统&#xff0c;网上还没有对这个系统的漏洞有过详尽的分析&#xff0c;于是重新审计并总结文章&#xff0c;记录下自己审计的过程。 https://github.com/DedeBIZ/DedeV6/archive/refs/tags/6.2.10.zip &#x1f4cc;DedeBIZ 系统并非基于 MVC 框架&…...

docker运行perplexica

序 本文主要研究一下如何用docker运行perplexica 步骤 git clone git clone https://github.com/ItzCrazyKns/Perplexica.gitapp.dockerfile FROM docker.1ms.run/node:20.18.0-alpineARG NEXT_PUBLIC_WS_URLws://127.0.0.1:3001 ARG NEXT_PUBLIC_API_URLhttp://127.0.0.1…...

【ThreeJS Basics 1-3】Hello ThreeJS,实现第一个场景

文章目录 环境创建一个项目安装依赖基础 Web 页面概念解释编写代码运行项目 环境 我的环境是 node version 22 创建一个项目 首先&#xff0c;新建一个空的文件夹&#xff0c;然后 npm init -y , 此时会快速生成好默认的 package.json 安装依赖 在新建的项目下用 npm 安装依…...

解决珠玑妙算游戏问题:C 语言实现

一、引言 珠玑妙算游戏&#xff08;the game of master mind&#xff09;是一个有趣的逻辑推理游戏。在编程领域&#xff0c;我们可以通过编写代码来模拟游戏中计算猜中与伪猜中次数的过程。本文将详细介绍如何使用 C 语言实现这一功能&#xff0c;并对核心代码进行解析。 二、…...

【清晰教程】本地部署DeepSeek-r1模型

【清晰教程】通过Docker为本地DeepSeek-r1部署WebUI界面-CSDN博客 目录 Ollama 安装Ollama DeepSeek-r1模型 安装DeepSeek-r1模型 Ollama Ollama 是一个开源工具&#xff0c;专注于简化大型语言模型&#xff08;LLMs&#xff09;的本地部署和管理。它允许用户在本地计算机…...

Java/Kotlin 使用 Chrome 无头浏览器

1. 概念 无头浏览器在类似于流行网络浏览器的环境中提供对网页的自动控制&#xff0c;但是通过命令行界面或使用网络通信来执行。 它们对于测试网页特别有用&#xff0c;因为它们能够像浏览器一样呈现和理解超文本标记语言&#xff0c;包括页面布局、颜色、字体选择以及JavaSc…...

AI前端开发:赋能开发者,提升解决实际问题的能力

近年来&#xff0c;人工智能技术飞速发展&#xff0c;深刻地改变着各行各业。在软件开发领域&#xff0c;AI写代码工具的出现更是引发了一场革命&#xff0c;尤其是前端开发领域&#xff0c;AI的应用正在显著提升开发者的解决实际问题的能力。本文将探讨AI前端开发如何提升效率…...

【Elasticsearch】Elasticsearch检索方式全解析:从基础到实战(二)

接着上一篇文章&#xff1b;我们继续来研究es的复杂检索 文章目录 (1) bool用来做复合查询&#xff08;2&#xff09;Filter【结果过滤】&#xff08;3&#xff09;term&#xff08;4&#xff09;Aggregation&#xff08;执行聚合&#xff09; (1) bool用来做复合查询 复合语…...

ASP.NET Core SignalR的分布式部署

假设聊天室程序被部署在两台服务器上&#xff0c;客户端1、2连接到了服务器A上的ChatRoomHub&#xff0c;客户端3、4连接到服务器B上的ChatRoomHub&#xff0c;那么客户端1发送群聊消息时&#xff0c;只有客户端1、2能够收到&#xff0c;客户端3、4收不到&#xff1b;在客户端3…...

kafka的架构和工作原理

目录 Kafka 架构 Kafka 工作原理 Kafka 数据流 Kafka 核心特性 总结 Kafka 架构 1. 生产者(Producer) 2. 消费者(Consumer) 3. 主题(Topic) 4. 分区(Partition) 5. 副本(Replica) 6. 代理(Broker) 7. ZooKeeper(旧版本)/KRaft(新版本) Kafka 工作…...

当没有OpenGL时,Skia如何绘制?

Skia 是可以在没有 OpenGL 的情况下进行图形绘制的&#xff0c;但是具体能否成功绘制图形&#xff0c;取决于 Skia 是如何配置的&#xff0c;以及平台上是否提供了其他的底层图形 API。 Skia 的底层依赖 Skia 的目标是提供一种跨平台的 2D 图形绘制接口。为了加速图形渲染&…...

Java小白入门基础知识(一)

1.初识Java java源程序通过javac 编译生成字节码文件&#xff0c;通过java命令运行java程序 总结&#xff1a; 1&#xff09;在一个Java文件中&#xff0c;只能有一个public class 2&#xff09;public class一定要和文件名一致 3&#xff09;类里面包含方法 4&#xff09…...

游戏内常见加密

加密只是增大破解难度&#xff0c;没法说绝对安全&#xff0c;避免过度加密导致性能消耗过大。 通用算法库 lua的加密算法库&#xff1a;https://github.com/somesocks/lua-lockbox/tree/master 比如通信协议就用到里面一些算法cry.encrypt 算法优劣&#xff1a;AES加解密-CBC…...

【Java八股文】02-Java集合面试篇

【Java八股文】02-Java集合面试篇 概念数组与集合区别常用集合Java中的线程安全的集合是什么&#xff1f;Collections和Collection的区别 Listjava中list的几种实现把ArrayList变成线程安全的有哪些方法&#xff1f;CopyOnWriteArrayList是如何保证线程安全的&#xff1f; Mapj…...

springCloud-2021.0.9 之 GateWay 示例

文章目录 前言springCloud-2021.0.9 之 GateWay 示例1. GateWay 官网2. GateWay 三个关键名称3. GateWay 工作原理的高级概述4. 示例4.1. POM4.2. 启动类4.3. 过滤器4.4. 配置 5. 启动/测试 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收…...

公然上线传销项目,Web3 的底线已经被无限突破

作者&#xff1a;Techub 热点速递 撰文&#xff1a;Yangz&#xff0c;Techub News 今天早些时候&#xff0c;OKX 将上线 PI 的消息在圈内引起轩然大波&#xff0c;对于上线被板上钉钉为传销盘子的「项目」 &#xff0c;Techub News 联系了 OKX 公关&#xff0c;但对方拒绝置评…...

SQL数据清理:去除字段值中的多余符号(Demo例子)

目录 前言1. 基础2. 进阶 前言 Excel中有大量不合法的符号&#xff0c;导入到系统之后&#xff0c;数据库有很多脏数据&#xff0c;对此下述展开sql的清洗教程 在数据库的文本字段中&#xff0c;可能会存在多余的逗号或符号&#xff0c;如,销售,, 或 二手车,销售,,这种情况 希…...

MongoDB 的使用场景

一、内容管理系统 1. 博客平台 文章内容、作者信息、标签、评论等数据结构多样&#xff0c;MongoDB 的无模式特性可轻松应对。比如 WordPress 等博客系统&#xff0c;使用 MongoDB 能灵活存储不同格式和长度的文章内容&#xff0c;以及与文章相关的各种元数据。 2. 新闻网站…...

STM32 RTC 实时时钟说明

目录 背景 RTC(实时时钟)和后备寄存器 32.768HZ 如何产生1S定时 RTC配置程序 第一次上电RTC配置 第1步、启用备用寄存器外设时钟和PWR外设时钟 第2步、使能RTC和备份寄存器访问 第3步、备份寄存器初始化 第4步、开启LSE 第5步、等待LSE启动后稳定状态 第6步、配置LSE为…...

微服务SpringCloud Alibaba组件nacos教程【详解naocs基础使用、服务中心配置、集群配置,附有案例+示例代码】

一.Nacos教程 文章目录 一.Nacos教程1.1 Nacos简介1.2 nacos基本使用直接下载打包服务源码方式启动 1.3 创建nacos客服端1.4 nacos集群配置1.5 nacos配置中心 1.1 Nacos简介 nacos是spring cloud alibaba生态中非常重要的一个组件&#xff0c;它有两个作用&#xff1a; 1:注册…...

深度整理总结MySQL——Expalin指南(二)

Expalin指南(二 前言Extrano tables usedImpossible whereNo matching min/max rowUsing indexUsing index conditionUsing whereUsing join buffer (Block Nested Loop)Not existsUsing intersect(...)、Using union(...)和Using sort_union(...)Zero limitUsing filesortUsin…...

【机器学习】常见采样方法详解

在机器学习领域&#xff0c;数据采样&#xff08;Sampling&#xff09;是一项至关重要的技术。它不仅影响模型的训练效率&#xff0c;还直接关系到模型的性能与泛化能力。本文将从基础概念出发&#xff0c;逐步深入介绍机器学习中常见的采样方法&#xff0c;帮助读者全面理解并…...

Kubernetes 最佳实践:Top 10 常见 DevOps/SRE 面试问题及答案

1. 如何在 Kubernetes 中设置资源请求和限制&#xff1f; 资源请求确保容器有最小资源量&#xff08;CPU/内存&#xff09;&#xff0c;而限制则强制容器消耗的最大资源量。这有助于高效资源分配并防止资源争用。 示例&#xff1a; resources:requests:memory: "256Mi&…...

Python自动化办公之Excel拆分

在日常办公中&#xff0c;我们经常需要将包含多个Sheet页的Excel文件拆分成多个独立的Excel文件。例如&#xff0c;当我们要把一份Excel表格发给各部门确认时&#xff0c;出于控制信息知悉范围、确保数据保密性等方面的考虑&#xff0c;每个部门仅需查看和确认与自己部门对应的…...

Mac上搭建宝塔环境并部署PHP项目

安装Docker Desktop》搭建Centos版本的宝塔环境》部署PHP项目 1. 下载Docker for mac 软件&#xff1a;https://www.docker.com/ 或使用终端命令&#xff1a;brew install --cask --appdir/Applications docker 2. 使用命令安装宝塔环境的centos7系统&#xff1a; docker pul…...

qt 控件的焦点事件

在 Qt 中&#xff0c;设置焦点策略是通过 QWidget 的 setFocusPolicy() 方法来实现的。焦点策略控制了一个控件何时和如何获取焦点。Qt 提供了几种常见的焦点策略&#xff0c;以帮助管理控件的焦点行为。 常见的焦点策略 Qt::NoFocus&#xff1a;控件不接受焦点。Qt::TabFocus&…...

深度学习_学习笔记

pandas Pandas 是一个强大的数据分析库&#xff0c;它封装和集成了多个其他库的功能&#xff0c;以便为用户提供更加便捷的数据处理能力。 pandas与csv 都可用于处理csv文件&#xff08;注意csv文件不是excel文件&#xff09; csv 是 Python 标准库的一部分&#xff0c;适合…...

如何在 Elasticsearch 中设置向量搜索 - 第二部分

作者&#xff1a;来自 Elastic Valentin Crettaz 了解如何在 Elasticsearch 中设置向量搜索并执行 k-NN 搜索。 本文是三篇系列文章中的第二篇&#xff0c;深入探讨了向量搜索&#xff08;也称为语义搜索&#xff09;的复杂性以及它在 Elasticsearch 中的实现方式。 第一部分重…...

leetcode 面试经典 150 题:跳跃游戏 II

链接跳跃游戏 II题序号45题型数组题解贪心算法难度中等熟练度✅✅✅ 题目 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向后跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums…...

C++20 新特性解析

1. 概念(Concepts) 概念是 C++20 引入的一项重要特性,它允许程序员定义类型约束,从而在编译时检查模板参数是否符合某些要求。概念提供了模板参数的限制,使得模板代码更加可读和易于维护。 示例代码: #include <iostream> #include <concepts>// 定义一个…...

vue不是内部或外部命令?

问题&#xff1a;当我们在使用脚手架创建项目之前&#xff0c;执行了npm i vue/cli -g或yarn global add vue/cli之后&#xff0c;再执行vue --version无法执行&#xff0c;vue不是内部或外部命令。 前几天在学vue时也是遇到了这个问题&#xff0c;现在来分享一下解决方法。 …...

C#中的Frm_Welcome.Instance.Show(),是什么意思

Frm_Welcome.Instance.Show() 是一种常见的单例模式&#xff08;Singleton Pattern&#xff09;实现方式&#xff0c;通常用于在应用程序中确保某个窗体&#xff08;Form&#xff09;只有一个实例&#xff0c;并通过该实例显示窗体。以下是对这段代码的详细解释&#xff1a; 代…...

k8s优雅操作pod容器组

k8s优雅操作pod容器组 回退备份 kubectl get deploy deployName -o yaml>>deployName-bak-date "%Y-%m-%d".yaml获取副本数 replicasecho | kubectl get -o template deploy/deployName --template{{.spec.replicas}}停止容器组 kubectl scale deployment …...

【LeetCode: 1760. 袋子里最少数目的球 + 二分】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…...

动态规划LeetCode-416.分割等和子集

给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 示例 1&#xff1a; 输入&#xff1a;nums [1,5,11,5] 输出&#xff1a;true 解释&#xff1a;数组可以分割成 [1, 5, 5] 和 [11] 。 示例 2&…...

kotlin-kapt

kotlin-kapt kotlin-kapt 是 Kotlin 的一个插件&#xff0c;专门用于处理注解处理器&#xff08;Annotation Processor&#xff09;。以下是对该插件的详细解释和指南&#xff1a; kotlin-kapt 是什么&#xff1f; kotlin-kapt 是 Kotlin 官方提供的一个插件&#xff0c;用于在…...

网络安全技术复习总结

1|0第一章 概论 1.网络安全发展阶段包括四个阶段&#xff1a;通信安全、计算机安全、网络安全、网络空间安全。 2.2017年6月1日&#xff0c;我国第一部全面规范网络空间安全的基础性法律《中华人民共和国网络安全法》正式实施。 3.2021年 6月10日&#xff0c;《中华人民共和…...

java 集合

Java集合框架&#xff08;Java Collections Framework&#xff09;是一个强大的工具库&#xff0c;旨在简化数据存储和操作的任务。它提供了一组接口、类和算法&#xff0c;帮助开发者高效地管理数据&#xff0c;如列表、集合和映射。下面是Java集合框架的详细介绍&#xff1a;…...

Java常见排序算法及代码实现

1、选择排序算法 选择排序&#xff08;Selection Sort&#xff09;是一种简单直观的排序算法&#xff0c;它的工作原理是每次从未排序部分选择最小&#xff08;或最大&#xff09;的元素&#xff0c;将其放到已排序部分的末尾。 2、冒泡排序算法 冒泡排序&#xff08;Bubble…...

130,[1] 攻防世界 very_easy_sql

进入靶场 典型SQL注入页面 先查看源码 访问 试试http://127.0.0.1/ 还尝试了其他都是nonono 回归第一个登录页面 提交的内容不在url处显示&#xff0c;反而第二个url页面会在url处显示 明白第一个页面是通过post方式提交&#xff0c;反正没得到什么信息&#xff0c;去抓…...

Spring Boot从入门到精通:核心知识点+实战指南

目录 一、Spring Boot 是什么&#xff1f;为什么它如此流行&#xff1f; 二、快速创建你的第一个Spring Boot应用 2.1 使用Spring Initializr生成项目 2.2 核心代码示例 三、深度解析Spring Boot核心机制 3.1 自动配置原理揭秘 3.2 自定义Starter实战 四、生产环境必备…...

深入探索现代CSS:从基础到未来趋势

引言&#xff1a;CSS的进化之路 CSS&#xff08;层叠样式表&#xff09;自1996年诞生以来&#xff0c;已从简单的样式描述语言发展为构建现代Web体验的核心技术。截至2023年&#xff0c;超过98%的网站使用CSS3技术&#xff0c;其发展历程见证了Web从静态文档到富交互应用的蜕变…...

python-leetcode 23.反转链表

题目&#xff1a; 给单链表的头节点&#xff0c;反转链表&#xff0c;并返回反转后的链表。 方法一&#xff1a;迭代 在遍历链表时&#xff0c;将当前节点的next指针改为指向前一个节点。由于节点没有引用其前一个节点&#xff0c;因此要先存储前一个节点&#xff0c;在更改引…...

Foundation CSS 可见性

Foundation CSS 可见性 引言 在网页设计中,CSS可见性是一个至关重要的概念。它决定了元素在网页上是否可见,以及如何显示。Foundation CSS 是一个流行的前端框架,它提供了丰富的工具和组件来帮助开发者构建响应式和可访问的网页。本文将深入探讨 Foundation CSS 中的可见性…...

DeepSeek模拟阿里面试——java基本语法

为了全面准备阿里Java高级程序员的面试&#xff0c;以下是针对数据类型和变量、运算符、流程控制的系统性复习和准备策略&#xff1a; 数据类型和变量 基本数据类型 整数类型&#xff1a;byte&#xff08;1字节&#xff09;、short&#xff08;2字节&#xff09;、int&#xf…...