敏感字段加密,叶俊峰
/**
标题:敏感字段加密 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限
【敏感字段加密】给定一个由多个命令字组成的命令字符串:
1、字符串长度小于等于127字节,只包含大小写字母,数字,下划线和偶数个双引号;
2、命令字之间以一个或多个下划线_进行分割;
3、可以通过两个双引号""来标识包含下划线_的命令字或空命令字(仅包含两个双引号的命令字),双引号不会在命令字内部出现;
请对指定索引的敏感字段进行加密,替换为******(6个*),并删除命令字前后多余的下划线_。如果无法找到指定索引的命令字,输出字符串ERROR。
输入描述:
输入为两行,第一行为命令字索引K(从0开始),第二行为命令字符串S。
输出描述:
输出处理后的命令字符串,如果无法找到指定索引的命令字,输出字符串ERROR
示例1
输入
1
password__a12345678_timeout_100
输出
password_******_timeout_100
示例2
输入
2
aaa_password_“a12_45678"timeout__100"”_
输出
aaa_password_******timeout_100""
*/
public class M_N_T_29 {
public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int K = Integer.parseInt(scanner.nextLine());String line = scanner.nextLine();char[] chars = line.toCharArray();ArrayList<Integer> int_shuang_ying_hao = new ArrayList<>();for (int i = 0; i < chars.length; i++) {if (chars[i] == '"') {int_shuang_ying_hao.add(i);}}if (int_shuang_ying_hao.size() == 0) {int_shuang_ying_hao.add(chars.length);int_shuang_ying_hao.add(chars.length + 1);}ArrayList<String> strings = new ArrayList<>();int left = 0;for (int i = 0; i < int_shuang_ying_hao.size() - 1; i++) {int le = int_shuang_ying_hao.get(i);int ri = int_shuang_ying_hao.get(i + 1);StringBuilder sb = new StringBuilder();if (le > left) {for (int j = left; j < le; j++) {if (chars[j] != '_') {sb.append(chars[j]);} else {if (sb.length() != 0) {strings.add(sb.toString());sb.setLength(0);}}}}for (int j = le + 1; j < ri; j++) {sb.append(chars[j]);}strings.add(sb.toString());sb.setLength(0);if (i == int_shuang_ying_hao.size() - 2 && ri < chars.length - 1) {for (int j = ri + 1; j < chars.length; j++) {if (chars[j] != '_') {sb.append(chars[j]);} else {if (sb.length() != 0) {strings.add(sb.toString());sb.setLength(0);}}}}left = ri + 1;i++;}StringBuilder sb = new StringBuilder();boolean flag = false;for (int i = 0; i < strings.size(); i++) {if (i == 0) {sb.append(strings.get(i));continue;}if (i == K) {sb.append("_").append("******");flag = true;continue;}sb.append("_").append("".equals(strings.get(i)) ? "\"\"" : strings.get(i));}System.out.println(flag ? sb : "ERROR");
敏感字段加密,叶俊峰相关推荐
- springboot实现敏感字段加密存储,解密显示
springboot实现敏感字段加密存储,解密显示,通过mybatis,自定义注解+AOP切面,Base64加解密方式实现功能. 1.代码实现: 创建springboot项目 添加依赖 <dep ...
- MYSQL敏感字段加密存储
出于安全考虑,有时会要求数据表存储的敏感字段加密,比如身份证和手机号. MySQL加密和解密 INSERT INTO user (`idcard`) VALUES(HEX(AES_ENCRYPT('x ...
- Java序列化敏感字段加密
在序列化过程中,虚拟机会试图调用对象类里的 writeObject 和 readObject 方法,进行用户自定义的序列化和反序列化,如果没有这样的方法,则默认调用是 ObjectOutputStre ...
- 华为od统一考试B卷【敏感字段加密】JavaScript 实现
所有题目均有五种语言实现.C语言实现目录.C++ 实现目录.Python实现目录.Java实现目录.JavaScript实现目录 题目 给定一个由多个命令字组成的命令字符串: 1.字符串长度小于 ...
- Springboot项目如何设计接口中敏感字段模糊查询?
目录 前言 场景分析 实现方案 环境配置 依赖配置 代码实现 总结 前言 在<Springboot项目如何设计接口中敏感字段的加密.解密>和<Springboot项目如何设计接口中敏 ...
- java使用mybatis拦截器对数据库敏感字段进行加密存储并解密
记录业务中遇到的使用场景:灵活对数据库敏感字段进行加密和解密 文章目录 前言 一.创建数据库表和实体类 二.Mapper.Service.Controller等 三.自定义注解 四.加密工具类 五.参 ...
- Spring-Web - 数据库 字段加密 解密
在工作中,为了保证数据安全,需要对数据库字段进行加解密,之前工作中就遇到了这种情况,因为线上数据库有很多的人都有权限,运维,账务,运营(通过后台系统查看),出口太多了,但有用户向我们平台举报,说有 ...
- 系统日志中敏感字段掩码处理
做为金融业务开发,很多接口都需要使用到用户信息,而在用户信息当中难免会有一些敏感字段,比如:用户姓名,银行卡号等等.所以在用户敏感信息保存以及日志打印的时候就不能把这些敏感信息明文的保存起来.对于数据 ...
- Django 字段加密存储并支持检索
本文将介绍一种在 Django 框架内将数据进行加密存储到数据库并且支持检索的方法,此方法采用单向加密和非对称加密解密技术结合来实现. 概念解释: 非对称加密算法需要两个密钥来进行加密和解密,这两个秘 ...
最新文章
- Linux 中FTP服务的应用(安装配置)
- Java 集合系列(四)—— ListIterator 源码分析
- SAP Business One on HANA登陆阿里云
- 晋职称计算机过几,晋职称怎样考计算机 昨日记者采访市人事局有关负责人
- acer清理工具 clear下载_SolidWorks绿色版下载-SolidWorks完全清理工具v1.0免费版
- PC顶级后次世代和主流次世代图像引擎技术规格表
- 练习-CSS3 多栏(Multi-column)
- May the Sunshine be with you!
- mysql清除内存不足_MySQL内存不足怎么办
- GIS的下个十年(Cary Mann, vice president, Bentley)
- 优秀实践采购团队的8个要点
- 四色定理c语言,阅读下列程序说明和C代码,将应填入(n)处。【程序5说明】著名的四色定理指出..._考试资料网...
- Ubuntu 14.04 安装配置 JDK8
- 如何利用TAM的API进行应用的开发
- 所有游戏类型简称的意思
- php 完全前后端分离使用jwt,前后端分离,在 angular 8 中利用 JWT 进行身份认证
- 计算机二级两个控件之间求偶,求,全国计算机等级考试二级java历年试题及答案合集,还有上机考试真题?...
- 微软今发免费安全软件套装 开放下载
- JavaEE12_EL和JSTL
- 20190915,我努力奔跑,只为追上那个曾经被寄予厚望的自己