c#加密证件号的中间部分,改为*号

前言
使用场景:在我项目中,我需要给前端提供接口,所以我要吧证件号进行加密。例如:411421199510225612,这是一个身份证号,18为的,那么我加密完成之后就会是
411421********5612,类似这样的一个信息传给前端。当然,如果只是这样的话,我完全可以用一个正则来完成,但是问题就在于,这个加密的证件号长度不确定,他可能是一个身份证号(18位),可能是一个驾驶证号(12位),也有可能是一个手机号(11位),等等等等。都有可能,那么怎么才能做到加密效果呢。

一、解决问题思路


就拿身份证做例子:
string card=“411421199510225612”
int length = card.length;
int start = length / 4
int end = length *3 / 4
上面的身份证,18位的,然后start等于4.5,因为是int类型,所以向下取整4.5就是4。
end等于13.5,因为是int类型,所以向下取整13.5就是13。
那么我们现在就相当于获取到了两个下标索引:4和13,所以我们就可以用substring把4到13之间的数字给变成※号。
同理,就算是12或者11位都可以这样做,只要不是小于四位数字。

二、使用步骤

下面是我根据自己项目需求写的一个公共方法,可以根据自己需要更改。

   /// <summary>/// 加密字符串/// 加密规则:字符长度/4 到 字符长度*3/4 进行加密/// </summary>/// <returns></returns>public static string EncryptionNum(string nums){if (nums.Length > 4){string hideNum = nums.Substring(nums.Length / 4, (nums.Length * 3 / 4) - (nums.Length / 4) + 1);string Asterisk = "";for (int i = 0; i < hideNum.Length; i++){Asterisk += "*";}nums = nums.Substring(0, nums.Length / 4) + Asterisk + nums.Substring((nums.Length * 3 / 4) + 1, nums.Length - (nums.Length * 3 / 4) - 1);return nums;}else{return nums;}}

总结

上面的方法就是传入一个证件号,会判断是否大于四位,小于四位直接原样返回,大于四位就用上面讲的方法进行加密成星号后返回。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/80424.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

存储新势力:助力DeepSeek一体机

宝子们&#xff0c;今天要给大家分享一个超酷的科技话题——各大厂商陆续推出的DeepSeek训推一体机方案。 【集成人工智能训推平台】 它就像是一个超级智能的大脑中枢&#xff0c;为各种复杂的AI任务搭建AI模型流水线。预置算法模版、训练框架、推理框架、模型任务调度和自动…

同样机身尺寸下伺服电机比无刷电机扭矩更大的原因

点击下面图片带您领略全新的嵌入式学习路线 &#x1f525;爆款热榜 88万阅读 1.6万收藏 在电机应用领域&#xff0c;伺服电机和无刷电机&#xff08;BLDC&#xff09;都是常见的动力源&#xff0c;但两者在性能上存在显著差异。尤其是在相同机身尺寸下&#xff0c;伺服电机的…

.dat 文件一般可以用什么打开

DAT文件是一种常见的文件格式,通常由多种应用程序生成。打开DAT文件的方法取决于其内容和生成它的软件。 使用文本编辑器 如果DAT文件是一个简单的文本文件,可以使用Windows的记事本或macOS的文本编辑器打开它。 右键点击文件 -> 选择“打开方式” -> 选择“记事本”…

Java实现加密(七)国密SM2算法的签名和验签(附商用密码检测相关国家标准/国密标准下载)

目录 一、国密标准中&#xff0c;关于SM2签名验签的定义二、SM2签名和验签的实现原理1. 前置知识2. 签名生成过程3. 验签过程4. 数学正确性证明5. 安全性与注意事项 三、带userId、不带userId的区别1. 核心区别2.算法区别(1) 哈希计算过程(2) 签名验签流程 四、Java代码实现1. …

Feign接口调用失败降级机制

是的&#xff0c;通过 FallbackFactory 实现的降级逻辑在 Feign 接口调用失败时会被触发&#xff0c;但需要注意以下关键点以确保降级生效&#xff1a; 一、代码有效性分析 降级逻辑是否生效&#xff1f; • 是的&#xff0c;当 Feign 调用 BaseServiceFeign 接口的 updateMoni…

React-JSX语法

1、React和Vue的区别 &#xff08;1&#xff09;设计理念&#xff1a;react是一个声明式UI库&#xff0c;强调的是函数式编程&#xff0c;学习难度较高&#xff0c;vue是渐进式框架&#xff0c;学习难度较低 &#xff08;2&#xff09;模板语法&#xff1a;react使用的是JSX语…

RocketMQ 主题与队列的协同作用解析(既然队列存储在不同的集群中,那要主题有什么用呢?)---管理命令、配置安装

学习之前呢需要会使用linux的基础命令 一.RocketMQ 主题与队列的协同作用解析 在 RocketMQ 中&#xff0c;‌主题&#xff08;Topic&#xff09;‌与‌队列&#xff08;Queue&#xff09;‌的协同设计实现了消息系统的逻辑抽象与物理存储分离。虽然队列实际存储在不同集群的 B…

三菱FX PLC频率采集

基于高速计数器&#xff0c;计算从X点输入方波个数&#xff0c;定时提取计数器值&#xff0c;换算得到频率。直接通过定时器数值判断来实现定时计数的精度不高&#xff0c;提高精度需要考虑定时中断方式。 初始化寄存器&#xff0c;通过M8235&#xff0c;M8236复位来选择C235&a…

一种专用车辆智能配电模块的设计解析:技术革新与未来展望

关键词&#xff1a;智能配电模块、STM32、CAN总线、电子开关、新能源汽车 引言&#xff1a;传统配电系统的痛点与智能化转型 传统配电系统依赖继电器和保险丝&#xff0c;存在体积大、寿命短、智能化低等缺陷&#xff08;如图1&#xff09;。而新能源汽车和无人驾驶技术对配电…

python——异常

1、定义 异常是在代码执行过程中发生的&#xff0c;它会影响到程序的正常运行。python程序不会自动来进行异常处理。python中常见异常父类&#xff1a;Exception。 2、常见异常 TypeError&#xff1a;类型错误异常。ValueError&#xff1a;值的异常。KeyError&#xff1a;键…

深入浅出Sentinel:分布式系统的流量防卫兵

引言 在当今的微服务架构和分布式系统中&#xff0c;服务间的依赖关系错综复杂&#xff0c;一个服务的故障可能会像多米诺骨牌一样引发整个系统的崩溃。如何有效地保护系统免受突发流量、不稳定依赖服务的影响&#xff0c;成为每个架构师和开发者必须面对的挑战。今天&#xf…

leetcode0106. 从中序与后序遍历序列构造二叉树-medium

1 题目&#xff1a;从中序与后序遍历序列构造二叉树 官方标定难度&#xff1a;中 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入…

【Pandas】pandas DataFrame rsub

Pandas2.2 DataFrame Binary operator functions 方法描述DataFrame.add(other)用于执行 DataFrame 与另一个对象&#xff08;如 DataFrame、Series 或标量&#xff09;的逐元素加法操作DataFrame.add(other[, axis, level, fill_value])用于执行 DataFrame 与另一个对象&…

【信息系统项目管理师】高分论文:论人力资源管理与成本管理(医院信息系统)

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 论文一、规划人力资源管理二、组建项目团队三、建设项目团队四、管理项目团队论文 一个完善的医院信息系统通常由上百个子系统构成,而这些系统随着医院发展需求逐步建设的,他们来源于不同厂家,基于不同的技…

【python】如何将python程序封装为cpython的库

python程序在发布时&#xff0c;往往会打包为cpython的库&#xff0c;并且根据应用服务器的不同架构&#xff08;x86/aarch64&#xff09;&#xff0c;以及python的不同版本&#xff0c;封装的输出类型也是非常多。本文介绍不同架构指定python下的代码打包方式&#xff1a; 首…

Android 14 修改侧滑手势动画效果

涉及关键类 SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java SystemUI/src/com/android/systemui/navigationbar/gestural/BackPanelController.kt 修改如下&#xff1a; 一&#xff0c;覆盖系统的默认手势效果 SystemUI/src/com/andro…

RHEL与CentOS:从同源到分流的开源操作系统演进

RHEL与CentOS&#xff1a;从同源到分流的开源操作系统演进 一、核心关系&#xff1a;源代码的重构与社区化 RHEL&#xff08;Red Hat Enterprise Linux&#xff09;与CentOS&#xff08;Community ENTerprise Operating System&#xff09;的关系可以概括为“同源异构”。RHE…

EFISH-SBC-RK3588 —— 厘米级定位 × 旗舰算力 × 工业级可靠‌

一、核心参数速览‌ ‌类别‌ ‌技术规格‌ ‌处理器‌ RK3588 八核&#xff08;4Cortex-A762.4GHz 4Cortex-A551.8GHz&#xff09; Mali-G610 GPU 6 TOPS NPU ‌定位能力‌ 双天线差分 GNSS&#xff08;GPS/北斗/GLONASS/Galileo&#xff09;&#xff0c;支持 RTK 动态…

【Unity 与c++通信】Unity与c++通信注意事项,参数传递

一、在Unity中使用c代码 Unity想调用C代码&#xff0c;则需要c开发人员打包成so库。 在Unity中通过DllImport&#xff0c;和dll一样调用。 需要注意的点&#xff1a; C代码需要extern"C"来封装成dll 因为unity默认使用c语言调用外部接口&#xff0c;会对c代码进行命…