CRC32 JAVA C#实现
项目中用到CRC32进行校验得地方,需要用到C#和java进行对比:
一、C#实现:
class CRC32Cls
{
protected ulong[] Crc32Table;
//生成CRC32码表
public void GetCRC32Table()
{
ulong Crc;
Crc32Table = new ulong[256];
int i, j;
for (i = 0; i < 256; i++)
{
Crc = (ulong)i;
for (j = 8; j > 0; j--)
{
if ((Crc & 1) == 1)
Crc = (Crc >> 1) ^ 0xEDB88320;
else
Crc >>= 1;
}
Crc32Table[i] = Crc;
}
}
//获取字符串的CRC32校验值
public ulong GetCRC32Str(string sInputString)
{
//生成码表
GetCRC32Table();
//byte[] buffer = System.Text.ASCIIEncoding.ASCII.GetBytes(sInputString);//根据自己不同得需求,跟java同步用即可保证统一
byte[] buffer = System.Text.Encoding.Default.GetBytes(sInputString);
//byte[] buffer = System.Text.Encoding.UTF8.GetBytes(sInputString);
ulong value = 0xffffffff;
int len = buffer.Length;
for (int i = 0; i < len; i++)
{
value = (value >> 8) ^ Crc32Table[(value & 0xFF) ^ buffer[i]];
}
return value ^ 0xffffffff;
}
}
调用代码:
string value = String.Format("{0:X00000000}", CRC32Cls.GetCRC32Str(cont));//内容不会加0string value = String.Format("{0:X8}", CRC32Cls.GetCRC32Str(cont)); //内容中最前面会加入0
二、JAVA实现:
package CRCTest;
import java.io.UnsupportedEncodingException;
import java.util.zip.CRC32;
import java.util.zip.Checksum;
public class test {
public static void main(String[] args) throws UnsupportedEncodingException {
long con= crc32("测试123ABC!@#$%^&*()");
System.out.print(Long.toHexString(con).toUpperCase());// TODO Auto-generated method stub
}
public static long crc32(String data) throws UnsupportedEncodingException {
if (data == null) {
return -1;
}
// get bytes from string
byte bytes[] = data.getBytes("UTF-8");//这里编码需要跟C# 保持同步
//byte bytes[] = data.getBytes();
Checksum checksum = new CRC32();
// update the current checksum with the specified array of bytes
checksum.update(bytes, 0, bytes.length);
// get the current checksum value
return checksum.getValue();
}
}
CRC32验证:
CRC(循环冗余校验)在线计算_ip33.com
CRC32 JAVA C#实现:
C# 和 Java 中CRC32 对应校验 - w_junguang - 博客园 (cnblogs.com)
用Java的CRC32类来计算CRC32校验和_java crc32-CSDN博客
C# BC库 AES DES MD5 SHA1 SHA256 实现:
C#中免费密码库BouncyCastle的使用详解_C#教程_脚本之家 (jb51.net)
C#版开源免费的Bouncy Castle密码库 - 追逐时光者 - 博客园 (cnblogs.com)
BigInteger详解:
BigInteger详解 - AntzUhl - 博客园 (cnblogs.com)
相关文章:
CRC32 JAVA C#实现
项目中用到CRC32进行校验得地方,需要用到C#和java进行对比: 一、C#实现: class CRC32Cls { protected ulong[] Crc32Table; //生成CRC32码表 public void GetCRC32Table() { ulong Crc; …...
本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——5Webscoket节点的使用
本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——5Webscoket节点的使用 有了前面几篇文章的铺垫,现在已经可以实现我到手测试那一步的 1.解读usb_websocket_display.launch.py 首先进入这个目录/root/dev_ws/src/origincar/originca…...
深入学习小程序第二天:事件处理与用户交互
一、概念 1. 事件绑定与类型 在小程序中,通过在组件上添加特定的属性(如 bind 开头的属性)来绑定事件处理函数,以响应用户的交互操作。常见的事件类型包括触摸事件、表单事件和系统事件: 触摸事件:用于响…...
操作系统快速入门(一)
😀前言 本篇博文是关于操作系统的,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉&…...
Spring Cloud微服务性能优化:策略、实践与未来趋势
标题:Spring Cloud微服务性能优化:策略、实践与未来趋势 摘要 在微服务架构中,服务调用链路的性能优化是确保系统高效运行的关键。Spring Cloud作为微服务架构的主流实现之一,提供了多种工具和方法来优化服务间的调用。本文将深…...
秒懂C++之多态
目录 一. 多态的概念 二. 多态的定义及实现 多态的构成条件 虚函数重写的例外 协变(基类与派生类虚函数返回值类型不同) 析构函数的重写(基类与派生类析构函数的名字不同) 练习例题 final override 重载、覆盖(重写)、隐藏(重定义)的对比 三. 抽象类 四. 多态的原理…...
C语言:求最大数不用数组
(1)题目: 输入一批正数用空格隔开,个数不限,输入0时结束循环,并且输出这批整数的最大值。 (2)代码: #include "stdio.h" int main() {int max 0; // 假设输入…...
零门槛成为HelpLook推荐官,邀好友加入,奖励享不停!
什么!? 还有谁不知道HelpLook推荐官计划! 只需要简单地注册加入 在好友成功订阅套餐之后 可一次性获得20%的丰厚现金返佣 HelpLook是一款快速搭建AI知识库的系统,并帮助企业0代码搭建帮助中心、FAQs、SOPs、产品文档、说明书和…...
基于python的图书馆大数据可视化分析系统设计与实现
博主介绍: 大家好,本人精通Java、Python、C#、C、C编程语言,同时也熟练掌握微信小程序、Php和Android等技术,能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验,能够为学生提供各类…...
利用formdata自动序列化和xhr上传表单到后端
//FormData对象是XMLHTTPRequest level2新增的类型,它可以自动序列化表单内容,不再需要我们去写序列化表单方法; FormData()即可以直接把整个表单给它,也可以分别使用append(‘字段’,‘值’)方法给FormData(); 现在就…...
视频号小店大地震?还好我看了原文
关注卢松松,会经常给你分享一些我的经验和观点。 我X,如果不是看了原文,我差点也上当了。虽然视频号小店关闭了450个类目,但又重新开放了412个类目啊。 昨天(8月9日),视频号一口气发了10个公…...
Genymotion adb shell
Genymotion 账户是 qq邮箱 参考 Ubuntu 20.04 安装 Android 模拟器 Genymotion https://www.zzzmh.cn/post/553cd96d4e47490a90b3302a76a93c0d Genymotion adb shell adb shell C:\Program Files\Genymobile\Genymotion\tools>adb shell lsusb Bus 001 Device 001: ID …...
探索AI与社交的交汇点:看Facebook如何引领智能化革命
在当今数字化时代,人工智能(AI)正成为各大科技公司变革的重要驱动力。作为全球领先的社交媒体平台,Facebook(现Meta Platforms)正处于这一智能化革命的前沿。通过不断创新和应用AI技术,Facebook…...
JVM 加载阶段 Class对象加载位置是在 堆中还是方法区?
在JVM(Java虚拟机)的类加载过程中,Class对象的加载位置涉及到堆(Heap)和方法区(Method Area)两个关键区域。具体来说,类的加载阶段涉及到将类的.class文件中的二进制数据读入到内存中…...
Android 获取短信验证
Android 获取短信验证 Android 获取短信验证 输入发短信的手机号,点击获取验证码,等接收到验证码后就会自动获取 SmsReceiver.Java import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; impor…...
负载均衡详细概念介绍之(四层和七层实现)
目录 一、负载均衡介绍 1.1什么是负载均衡 编辑 1.2 为什么要用负载均衡 二、负载均衡的类型 2.1 通过一些硬件实现 2.2 四层负载均衡 2.3 七层负载均衡 三、四层和七层的区别 及特点 一、负载均衡介绍 1.1什么是负载均衡 负载均衡:Load Balance,简称LB&a…...
力扣 | 递增子序列 | 动态规划 | 最长递增子序列、最长递增子序列的个数、及其变式
文章目录 一、300. 最长递增子序列二、673. 最长递增子序列的个数三、变式1、646. 最长数对链2、1218. 最长定差子序列3、1027. 最长等差数列4、354. 俄罗斯套娃信封问题5、1964. 找出到每个位置为止最长的有效障碍赛跑路线 最长递增子序列:原序-递增数值问题 最长定…...
008 | 基于RNN和LSTM的贵州茅台股票开盘价预测
基于RNN和LSTM的贵州茅台股票开盘价预测 项目简介: 本项目旨在通过使用Tushare下载贵州茅台的股票数据,并基于这些历史数据,使用TensorFlow 2.0实现循环神经网络(RNN)和长短期记忆网络(LSTM)来…...
尚硅谷谷粒商城项目笔记——六、使用navciat连接docker中的mysql容器【电脑CPU:AMD】
六、使用navciat连接docker中的mysql容器 注意: 因为电脑是AMD芯片,自己知识储备不够,无法保证和课程中用到的环境一样,所以环境都是自己根据适应硬件软件环境重新配置的,这里的虚拟机使用的是VMware。 1navicat免费…...
【git】本地更改了,但又想直接从远端拉取覆盖本地(放弃本地更改前行下载)
拉取时错误信息 error: cannot pull with rebase: You have unstaged changes. error: Please commit or stash them.个错误信息表明你在尝试使用git pull --rebase命令时,你的工作目录中存在未提交的更改(即未暂存(unstaged)的更…...
LDDC:开源歌词工具的高效解决方案
LDDC:开源歌词工具的高效解决方案 【免费下载链接】LDDC 简单易用的精准歌词(逐字歌词/卡拉OK歌词)下载匹配工具|A simple and user-friendly tool for downloading and matching precise lyrics (word-by-word lyrics/Karaoke lyrics) 项目地址: https://gitcode…...
TradingAgents-CN终极指南:3步搭建你的AI量化投资分析系统
TradingAgents-CN终极指南:3步搭建你的AI量化投资分析系统 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN 还在为复杂的金融量化系统…...
MALSync快速入门:5分钟掌握自动剧集追踪技巧
MALSync快速入门:5分钟掌握自动剧集追踪技巧 【免费下载链接】MALSync Integrates MyAnimeList/AniList/Kitsu/Simkl into various sites, with auto episode tracking. 项目地址: https://gitcode.com/gh_mirrors/ma/MALSync MALSync是一款强大的浏览器扩展…...
突破平台局限:AirPods跨平台体验增强方案全解析
突破平台局限:AirPods跨平台体验增强方案全解析 【免费下载链接】AirPodsDesktop ☄️ AirPods desktop user experience enhancement program, for Windows and Linux (WIP) 项目地址: https://gitcode.com/gh_mirrors/ai/AirPodsDesktop AirPodsDesktop是一…...
Vant Weapp组件库无障碍颜色方案实践指南
Vant Weapp组件库无障碍颜色方案实践指南 【免费下载链接】vant-weapp 轻量、可靠的小程序 UI 组件库 项目地址: https://gitcode.com/gh_mirrors/va/vant-weapp 问题引入:被忽视的视觉障碍用户体验痛点 在小程序开发中,颜色设计往往聚焦于视觉美…...
C语言多线程同步实战:从竞态到协同的四种武器
1. 多线程售票问题:竞态条件的典型场景 想象一下春运期间的火车站售票窗口,4个售票员同时售卖20张车票。如果缺乏有效的管理机制,很可能出现同一张票被重复售卖,或者票数统计出错的情况。这个场景完美模拟了多线程编程中最经典的…...
重磅!GPT-6曝光了
就在刚刚,有知情人士爆料:GPT-6正在内测,预计4月16日正式发布。消息源头,是X平台上的科技大V 草莓哥iruletheworldmo。他说,最近OpenAI内部将有大动作,他从中搞到了不少猛料。草莓哥说了一些关键信息&#…...
告别背包焦虑:TQVaultAE如何彻底改变《泰坦之旅》装备管理体验
告别背包焦虑:TQVaultAE如何彻底改变《泰坦之旅》装备管理体验 【免费下载链接】TQVaultAE Extra bank space for Titan Quest Anniversary Edition 项目地址: https://gitcode.com/gh_mirrors/tq/TQVaultAE 对于《泰坦之旅》玩家来说,最令人沮丧…...
EF Core 拦截器实战:SaveChangesInterceptor、CommandInterceptor 与审计落地
一、背景与问题缘起 MySQL 5.6.51 版本下 2000 万行核心业务表开展新增字段操作,需求为新增BIGINT(19) NOT NULL DEFAULT 0 COMMENT 注释(因业务实际需要存储大数值关联字段)。 表的核心特性为Java 多线程密集读写,业务请求持续高…...
自动化规划工具提升工单分配效率
自动化规划工具使工单分配更高效 “分支定界”方法可排除混合整数非线性规划问题中的非最优解。 作者:Anupam Purwar 2023年3月28日 阅读时长:4分钟自动化规划工具是结合人工智能与设计算法的程序,用于规划与调度任务、资源和活动。它们广泛应…...
