skip32

告别STM32CUBEIDE检测报错:手把手教你用OpenOCD调试国产GD32(附配置文件修改) 本文详细介绍了如何通过修改OpenOCD配置文件,解决STM32CubeIDE在调试国产GD32芯片时的检测报错问题。文章提供了具体的配置文件修改步骤和调试设置建议,帮助开发者无缝切换至GD32开发环境,提升调试效率。 阅读详情

在某些应用场景下,需要对数字进行加密,skip32无疑是一种很实用的算法,网上有python的源码(https://bitbucket.org/anuraguniyal/skip32.py/src/403577f22bc2300b30b746526f52b6cf3c8cad51/skip32.py?at=master),可惜没有java的版本。下面送上自己写的java版本:


import java.nio.ByteBuffer;
import java.nio.ByteOrder;

public class Skip32 {
	public static void main(String[] args) {
		long number = 4294967295L;
		String key = "djwiji6789";
		String enumber = skip32encrypt(number, key);
		Long dnumber = skip32decrypt(enumber, key);
		System.out.println(enumber);
		System.out.println(dnumber);
	}

	public static String skip32encrypt(long number, String key) {
		return Long.toString(skip32(number, key, true), 36);
	}

	public static long skip32decrypt(String base36text, String key) {
		return skip32(Long.parseLong(base36text, 36), key, false);
	}

	private static long skip32(long number, String key, boolean encrypt) {
		ByteBuffer buffer = ByteBuffer.allocate(8);
		buffer.order(ByteOrder.LITTLE_ENDIAN);
		buffer.putLong(number);
		byte[] b = buffer.array();
		int[] a = new int[b.length];
		for (int i = 0; i < b.length; i++) {
			a[i] = b[i] & 0xFF;
		}

		int buf[] = new int[4];
		for (int i = 0; i < 4; i++) {
			buf[i] = a[i];
		}

		int[] k = new int[10];
		for (int i = 0; i < k.length; i++) {
			k[i] = key.codePointAt(i);
		}

		_skip32(k, buf, encrypt);

		int index = 0;
		int firstByte = (0x000000FF & buf[index]);
		int secondByte = (0x000000FF & buf[index + 1]);
		int thirdByte = (0x000000FF & buf[index + 2]);
		int fourthByte = (0x000000FF & buf[index + 3]);

		long anUnsignedInt = ((long) (fourthByte << 24 | thirdByte << 16
				| secondByte << 8 | firstByte)) & 0xFFFFFFFFL;
		return anUnsignedInt;
	}

	private static void _skip32(int[] key, int[] buf, boolean encrypt) {

		int k; 
		int i; 
		int kstep;
		int wl, wr;

		if (encrypt) {
			kstep = 1;
			k = 0;
		} else {
			kstep = -1;
			k = 23;
		}

		wl = ((buf[0] << 8) + buf[1]);
		wr = ((buf[2] << 8) + buf[3]);

		for (i = 0; i < 24 / 2; ++i) {
			wr ^= g(key, k, wl) ^ k;
			k += kstep;
			wl ^= g(key, k, wr) ^ k;
			k += kstep;
		}

		buf[0] = (wr >> 8);
		buf[1] = (wr & 0xFF);
		buf[2] = (wl >> 8);
		buf[3] = (wl & 0xFF);
	}

	private static int g(int[] key, int k, int w) {
		int g1, g2, g3, g4, g5, g6;

		g1 = ((w >> 8) & 0xff);
		g2 = (w & 0xff);

		g3 = (F[g2 ^ key[(4 * k) % 10]] ^ g1);
		g4 = (F[g3 ^ key[(4 * k + 1) % 10]] ^ g2);
		g5 = (F[g4 ^ key[(4 * k + 2) % 10]] ^ g3);
		g6 = (F[g5 ^ key[(4 * k + 3) % 10]] ^ g4);

		return ((g5 << 8) + g6);
	}

	private static final int[] F = new int[] { 0xa3, 0xd7, 0x09, 0x83, 0xf8,
			0x48, 0xf6, 0xf4, 0xb3, 0x21, 0x15, 0x78, 0x99, 0xb1, 0xaf, 0xf9,
			0xe7, 0x2d, 0x4d, 0x8a, 0xce, 0x4c, 0xca, 0x2e, 0x52, 0x95, 0xd9,
			0x1e, 0x4e, 0x38, 0x44, 0x28, 0x0a, 0xdf, 0x02, 0xa0, 0x17, 0xf1,
			0x60, 0x68, 0x12, 0xb7, 0x7a, 0xc3, 0xe9, 0xfa, 0x3d, 0x53, 0x96,
			0x84, 0x6b, 0xba, 0xf2, 0x63, 0x9a, 0x19, 0x7c, 0xae, 0xe5, 0xf5,
			0xf7, 0x16, 0x6a, 0xa2, 0x39, 0xb6, 0x7b, 0x0f, 0xc1, 0x93, 0x81,
			0x1b, 0xee, 0xb4, 0x1a, 0xea, 0xd0, 0x91, 0x2f, 0xb8, 0x55, 0xb9,
			0xda, 0x85, 0x3f, 0x41, 0xbf, 0xe0, 0x5a, 0x58, 0x80, 0x5f, 0x66,
			0x0b, 0xd8, 0x90, 0x35, 0xd5, 0xc0, 0xa7, 0x33, 0x06, 0x65, 0x69,
			0x45, 0x00, 0x94, 0x56, 0x6d, 0x98, 0x9b, 0x76, 0x97, 0xfc, 0xb2,
			0xc2, 0xb0, 0xfe, 0xdb, 0x20, 0xe1, 0xeb, 0xd6, 0xe4, 0xdd, 0x47,
			0x4a, 0x1d, 0x42, 0xed, 0x9e, 0x6e, 0x49, 0x3c, 0xcd, 0x43, 0x27,
			0xd2, 0x07, 0xd4, 0xde, 0xc7, 0x67, 0x18, 0x89, 0xcb, 0x30, 0x1f,
			0x8d, 0xc6, 0x8f, 0xaa, 0xc8, 0x74, 0xdc, 0xc9, 0x5d, 0x5c, 0x31,
			0xa4, 0x70, 0x88, 0x61, 0x2c, 0x9f, 0x0d, 0x2b, 0x87, 0x50, 0x82,
			0x54, 0x64, 0x26, 0x7d, 0x03, 0x40, 0x34, 0x4b, 0x1c, 0x73, 0xd1,
			0xc4, 0xfd, 0x3b, 0xcc, 0xfb, 0x7f, 0xab, 0xe6, 0x3e, 0x5b, 0xa5,
			0xad, 0x04, 0x23, 0x9c, 0x14, 0x51, 0x22, 0xf0, 0x29, 0x79, 0x71,
			0x7e, 0xff, 0x8c, 0x0e, 0xe2, 0x0c, 0xef, 0xbc, 0x72, 0x75, 0x6f,
			0x37, 0xa1, 0xec, 0xd3, 0x8e, 0x62, 0x8b, 0x86, 0x10, 0xe8, 0x08,
			0x77, 0x11, 0xbe, 0x92, 0x4f, 0x24, 0xc5, 0x32, 0x36, 0x9d, 0xcf,
			0xf3, 0xa6, 0xbb, 0xac, 0x5e, 0x6c, 0xa9, 0x13, 0x57, 0x25, 0xb5,
			0xe3, 0xbd, 0xa8, 0x3a, 0x01, 0x05, 0x59, 0x2a, 0x46 };
}

运行结果:

1ev336c
4294967295

使用注意:以上算法只对无符号32位数字有效。超过32位,可以参考https://github.com/dstar4138/jskipjack/blob/master/src/cipher/SkipJack.java
STM32控制TPS61170实现高效升压转换方案 升压转换器(Boost Converter)是电源管理中的基础拓扑结构,通过控制开关管的通断实现电压提升。其核心原理是利用电感储能特性,当开关管导通时电感储能,关断时与输入电压叠加输出。这种技术广泛应用于工业控制、便携设备等领域,能有效解决低电压电源升压需求。TPS61170作为TI的高效升压IC,配合STM32F091RC MCU,可构建智能电源解决方案。该方案通过PWM动态调节实现精准电压控制,并利用STM32的ADC实现过压保护等安全功能。在3.7V升24V的典型应用中,效率可达82%以上,纹波控制在 阅读详情

相关推荐

DS18B20 多点测温与ROM搜索:1条总线挂载3个传感器的STM32实战

本文详细介绍了DS18B20多点测温系统的开发指南,重点解析了单总线多传感器管理与STM32高效实现方案。通过ROM搜索算法和优化采集流程,实现在一条总线上挂载多个DS18B20传感器,适用于工业监控、农业温室等场景。提供完整的STM32工程代码和异常处理方案,确保系统稳定可靠。

weixin_33835103的博客 383

python3 skip32加密解密

python3 skip32加密解密 skip32:把给定的任意int型的数字加密成最长长度为10位的数字; 网上有python2实现的skip32源码,以下是我通过参考python2实现的skip32而修改成的python3版本 参考链接:python2 实现的skip32 import struct class Skip32: """ _key is a string of len 10 """ _ftable = [ 0xa3, 0xd7, 0x09,

Bsj' blog 607

Skipjack 加密算法

美国国家安全局标准加密算法

php 判断skip32 加密后是否有重复

$max = 1000000000 - 500000000; $file_str = array(); $page = 1; $page_count = 1000000; for( $i = 0; $i {     $key = skip32_encode( $i );     $str = $i.':'.$key."\n";     $file_name = $key % 10

lzz360的专栏 1154

FFTW库安装与使用(3.3.5版本)

FFTW库安装与使用一、FFTW库介绍与下载二、FFTW库安装三、FFTW库测试 一、FFTW库介绍与下载   FFTW ( the Faster Fourier Transform in the West) 是一个快速计算离散傅里叶变换的标准C语言程序集,其由MIT的M.Frigo 和S. Johnson 开发。可计算一维或多维实和复数据以及任意规模的DFT,且运行速度比Eigen和opencv自带的FFT库函数快10倍以上。   下载链接:http://www.fftw.org/install/wind

Jhon_ranble的博客 2万+

抖音视频数据抓取

最近经常有人问我抓取抖音视频的数据,问我一些很小白的问题,算法给他也不会用。 还是先抓包,获取需要的接口和参数,相关的算法在其它文章里面有描述。 搜索个视频看看 查看抓的包信息: 可以看到,这里是post请求...

2501_91048859的博客 3097

给出32位有符号整数,将这个整数翻转

例1收入123输出321例2输入-123输出-321例3输入120输出21答案思路,1、先考虑末尾是0的情况时,翻转后需要把0去掉,2、当有-号时,把翻转后末尾的-号去掉,再在前面加一个-号3、正数时不变 a= -56435 tmp = str(a)[::-1] print(tmp[0]) while True: if tmp[0] == '0': tmp = tmp[1::] continue else: break

weixin_43997319的博客 1013

数学建模:相关性分析学习——皮尔逊(pearson)相关系数与斯皮尔曼(spearman)相关系数

相关性分析:求解相关系数并绘制热力图进行对比

weixin_67565775的博客 8万+

分布式ID | 这六种分布式ID生成方法,总有一款适合你

Hi!我是小小,我们又见面了,我们今天的话题是六种分布式ID生成算法。分布式ID简介什么是分布式ID在数据量不大的时候,单库单表完全可以支撑现有业务,数据量再大一点搞个MySql主从同步...

weixin_44742132的博客 402

AI Agent辅助企业财务分析与预测

企业财务分析与预测是企业管理中至关重要的环节,准确的财务分析与预测能够帮助企业管理者做出明智的决策,合理规划资源,降低风险。然而,传统的财务分析与预测方法往往依赖于人工经验和简单的统计模型,存在效率低、准确性差等问题。随着人工智能技术的飞速发展,AI Agent作为一种智能的软件实体,能够自主地感知环境、做出决策并采取行动,为企业财务分析与预测带来了新的解决方案。

AI天才研究院 920

affymatrix探针转换 | GPL5175探针对应的基因转换

一般情况下,有一些比较成熟的对应平台的注释数据集的R包。但是这个注释平台,我在Bioconductor上找了一圈都没有找到。只能通过最原始也最可靠的方法,从GEO数据集上去下载这部分的注释文件。以下展示全过程。 我要检查的数据平台是:GPL5157。 数据集的注释集链接为:https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GPL5175 这个注释数据集比较难弄的地方在于,它的基因集注释的不太好。没有比较直接的可供提取的genesample的信息;在ge.

weixin_40640700的博客 7124

记录一个解决mysql5.7.32-Access denied for user ‘‘@‘localhost‘ (using password NO)skip-grant-tables不生效的问题

问题来源 我在安装mysql5.7.32的时候一直出现ERROR 1045 (28000): Access denied for user 'xxxxx'@'localhost' (using password: NO) 分析原因 1.使用skip-grant-tables跳过权限去登录失败 解决办法 在mysql安装目录下 例如我D:\Software\Mysql\mysql-5.7.32-winx64\bin下输入cmd打开命令行 执行mysqld --skip-grant-tabl

BcakBay2的博客 461

面向可扩展的 ABAP CDS:EXTEND VIEW 全面实战与工程化指引

摘要: 本文深入讲解ABAP CDS的EXTEND VIEW功能,帮助开发者在标准或自建模型上安全扩展字段与关联。核心内容包括: 作用:避免直接修改标准CDS,通过轻量扩展添加业务字段和关联,降低维护风险。 语法要点:需定义CDS扩展实体名和Dictionary Append View名,支持添加普通字段、关联,但不允许聚合或修改原有结构。 限制:不能扩展含聚合、UNION的视图,且扩展字段需避免命名冲突。 工程实践:建议使用客户命名空间,区分结构扩展与元数据扩展,并注意功能性变更需通过其他方式实现。 示例

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 393

33、深度学习-自学之路-深入理解-NLP自然语言处理-Skip-Gram的哈夫曼树程序理解,从程序运行的角度来解读Skip-Gram的哈夫曼树的整个过程。可以和32对比看,更好理解。

W2 = np.random.rand(vocab_size, embedding_dim) # 输出层的权重(用于负采样)W1 = np.random.rand(vocab_size, embedding_dim) # 输入层到隐藏层的权重。h = W1[target_index] # 目标单词的嵌入向量。# 获取目标单词和上下文单词的哈夫曼路径。# 遍历目标单词的哈夫曼路径。# 训练Skip-Gram模型。# 创建单词到索引的映射。# 3. 生成训练数据。# 1. 数据预处理。

weixin_43006478的博客 881

华为OD机考双机位C卷 - 打印机队列 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 打印机队列

算法大师! 4619

pytest学习实践-day15 :skip: 单独跳过指定的用例

"""使用 pytest.skip方法, pytest.skip("解释文案", allow_module_level=True),该模块后续将不执行 """"""allow_module_level = True 设置是:跳过整个模块,一般不在函数种使用,所以一般用在模块开头,不在函数内部;pytest.skip("系统是win32,忽略用例执行", allow_module_level=True)# pytest.skip在函数内部使用,仅仅跳过当前用例。

zc20081111的博客 494

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

win10系统下安装mysql-5.7.32-winx64 ,添加skip-grant-tables设置也报错,怎么解决修改用户和密码

由于安装mysql之后,没有root的初始密码,试过网上大部分的方法,在my.ini文件中[mysqld] 下添加skip-grant-tables,但是重启mysql服务之后,还是无效的。所以尝试了下列方法:: 1、 首先检查mysql服务是否启动,若已启动则先将其停止服务,可在开始菜单的运行,使用命令cmd: net stop mysql net start mysql 2、打开第一个cmd1窗口,切换到mysql的bin目录,运行命令: (D:\JavaUtil\mysql-5.7.32-winx

qq_40024617的博客 1359

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

基于TPS61170与STM32的高效DC-DC升压转换器设计

DC-DC升压转换器是电源管理系统的核心组件,通过开关管和电感的协同工作实现电压提升。其工作原理涉及PWM调制和能量存储释放周期,具有高效率、小体积等技术优势,广泛应用于工业控制、医疗设备等领域。以TI的TPS61170为例,这款高压升压转换器支持3V-18V宽输入范围和最高38V输出,配合STM32F423RH微控制器的硬件浮点单元和丰富外设,可构建智能电源管理系统。在工程实践中,需重点考虑电感选型、PCB布局和闭环控制算法,实测数据显示在24V/150mA工况下效率可达89.7%。数字电源管理技术进一步

weixin_33676492的博客 360

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

32、深度学习-自学之路-深入理解-NLP自然语言处理-Skip-Gram的程序理解,从程序运行的角度来解读CBOW的整个过程。最后的解释中有程序一步一步的解释。

示例文本数据# 1. 数据预处理# 统计单词频率# 创建单词到索引的映射# 2. 构建训练数据if j!= i:# 3. 初始化模型参数W1 = np.random.rand(vocab_size, embedding_dim) # 输入层到隐藏层的权重W2 = np.random.rand(embedding_dim, vocab_size) # 隐藏层到输出层的权重print(W1)print(W2)

weixin_43006478的博客 738

STM32与TPS61170实现高效DC-DC升压方案

DC-DC升压转换是嵌入式系统电源设计的核心技术,通过开关电源拓扑实现电压转换。其工作原理基于电感储能与释放的能量转移过程,采用PWM控制占空比来精确调节输出电压。这种技术在提高能源利用率方面具有显著优势,特别适合电池供电设备。典型应用包括工业传感器、LED驱动和便携式医疗设备等场景。以STM32L073RZ低功耗MCU控制TPS61170升压转换器的方案为例,该组合能实现3-5V输入升压至12-38V输出,集成1.2A/40V MOSFET和93%的轻载效率。通过硬件电路设计、PWM动态调压和PID闭环控

weixin_28703507的博客 257

error: Microsoft Visual C++ 9.0 is required

1. 背景 项目使用 python 2.7,需要安装第三方库 skip32,在 Terminal 终端输入 pip install skip32 ,结果报错:error: Microsoft Visual C++ 9.0 is required. Get it from http://aka.ms/vcpython27,并且报错中的网址打开发现下载地址失效了。 2. 安装失败原因 所安装的第三方库中包含 c/c++ 源码,安装过程中,平台会调用本地的编译器编译这些代码,当找不到适用于 Python 2.7

小谷围最靓的仔 1万+

CMake编译OpenCV源码

一、下载源码: 二、创建文件夹 三、使用CMake软件配置文件 1.选择配置 2.取消勾选 3.需要勾选 OPENCV_VS_VERSIONINFO_SKIP 三、编译文件 1.添加宏定义 2.在window命令窗编译: 3.输入下面命令进行编译: mingw32-make -j8 4.输入下面命令进行安装: mingw32-make install

qq_1033275663的博客 782

abap函数杂记

1,ICON和SYMB是abap的图形类库,通过showICON和showSYMB查看,在使用前需通过include<类库名>或type-pools:类库名来声明使用。2,write /p(i) “/为换行,p为列的位置,i为输出的长度。3,skip i 和 uline i “skip是空白行,uline为分割线,i为生成数量。4,new-page “分页用。5,在SE32中可以定义程序

sinat_26527701的博客 345

C# 字节数组截取

byte[] data = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 如果截取2位、4位或者8位长度的字节数组,可以分别用BitConverter.ToInt16、BitConverter.ToInt32、BitConverter.ToInt64截取,例如,从第3位开始截取4个字节则BitConverter.ToInt32(dat...

weixin_30437337的博客 980
上一篇: 微信 SDK 不能 分享
coding_or_coded
博客等级 码龄16年 216粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值