SHA256加密之显示明文密码的处理方法
好久没写博客了!!!今天记录一下!!!
今天遇到一个SHA256密码加密后,我还要看到密码,这个该如何处理?SHA256类似于MD5都是单向加密的,如果要靠算法实现解密,目前理论上是不可能的。不过如果你是开发人员,那么你是可以做一些处理的,因为SHA256加密后是256位,也就是64个字符,所以可以从这里下手。解决方法就是将密码隐藏到加密后的密文中,你可以设置一套只有自己知道的排序方式,那么当你要解密后,你就可以通过自己的这套排序方式将密码"挖"出来!
附上我处理的java代码
//加密public static String SHA256(String param) {String pwd256=DigestUtils.sha256Hex(param);StringBuffer pwd=new StringBuffer(pwd256);return pwd.toString();}//解密public static String decryPwd(String param){String pwd=StringUtils.substring(param,64);return pwd;}
其实原理很简单,我做的处理就是将密码放到加密后的密文后面,解密的话直接截取第64个字符开始就行了。
这样的处理方法确实显得有点草率,不过确实是解决了我的问题,不过安全系数比较低。所以可以再复杂一点,原理也就是将密码拆开成字符,按照一定的规则插入到密文中,解密的话就按照这样的规则取字符拼接就行了。
附上我处理的java代码
public static String SHA256_3(String param){char paramChars[]=param.toCharArray();String pwd256=DigestUtils.sha256Hex(param);System.out.println("pwd256:"+pwd256);char pwd256Chars[]=pwd256.toCharArray();int ss=0;int ss2=0;collations=new ArrayList<>();collations.add(5);//按间隔3的规则插入,一般密码不会长于16位,所以不会出界for(int i=0;i<paramChars.length-1;i++){collations.add(collations.get(i)+3);}for(Integer integer:collations){System.out.println("integer:"+integer);}char newpwd256[]=new char[64+paramChars.length];for(int i=0;i<newpwd256.length;i++){for(Integer integer:collations){if(i==integer){newpwd256[i]=paramChars[ss];System.out.println("ss:"+ss);ss++;break;}}for(int j=0;j<collations.size();j++){if(i==collations.get(j)){break;}if(i!=collations.get(j)&&j==collations.size()-1){newpwd256[i]=pwd256Chars[ss2];ss2++;System.out.println("ss2:"+ss2);}}}return new String(newpwd256);}public static String decryPwd2(String pwd){char pwdChars[]=pwd.toCharArray();StringBuffer sb=new StringBuffer();for(int i=0;i<pwdChars.length;i++){for(Integer integer:collations){if(i==integer){sb.append(pwdChars[i]);}}}return sb.toString();}
写的有点复杂,逻辑有一点乱,不过还是能用的!密码6-16位是能用的!
SHA256加密之显示明文密码的处理方法相关推荐
- linux 查明文密码,win10系统查看明文密码的操作方法
很多小伙伴都遇到过对win10系统查看明文密码的设置方法,想必大家都遇到过需要对win10系统查看明文密码进行设置的情况吧,那么应该怎么设置win10系统查看明文密码的操作方法非常简单,只需要1.因为 ...
- sha256加密_python中使用加盐哈希函数加密密码
开发网站离不开用户的注册与登录,今天来说说在网站开发的时候关于用户密码的保存方式,传统的方式有以下几种 - 明文存储:肉眼就可以识别,没有任何安全性. 谁用谁傻缺 - 加密存储:通过一定的变换形式,使 ...
- EditText显示明文与密码
布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayoutxmlns:android=&q ...
- 仿京东显示隐藏密码明文案例(字体图标实现)
仿京东显示隐藏密码明文案例(字体图标实现) 眼睛使用的是 iconfont 阿里矢量图标库的内容 链接:https://www.iconfont.cn/search/index?代码案例展示: 字体图 ...
- android判断密码字符串,逆向分析苏宁易购安卓客户端加密到解密获取明文密码(附demo验证) | WooYun...
第一次花这么长时间测一个漏洞(主要时间都花在写demo上了...),求加精 1.苏宁易购Android最新版客户端使用的是通过本地xml文件和db方式存储用户登录凭证的. (1)/data/data/ ...
- springboot明文密码加密解密
第一步:pom文件加入依赖 如图: 这里提供一个版本, <dependency><groupId>com.github.ulisesbocchio</groupId> ...
- java web系统明文密码加密传输
最近项目PL提出系统数据越权和明文密码传输问题,涉及网络安全的问题,这让我一脸懵逼,查阅相关资料后做相关记录 1. 数据越权: 涉及重要功能需要验证用户是否当前用户操作,修改密码功能接口参数用户Id人 ...
- RSA加密明文密码传输
前言:前端对用户输入的密码明文传输给后端是不安全的行为,所以要将明文密码转成密文.而相比md5.对称加密.base64来说,用 RSA 非对称加密是较安全的方式. 下面便是代码实现,拿来即用. 1.生 ...
- android布局密码,Android中EditText显示明文与密码的两种方式
效果图如下所述: 布局 xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="h ...
最新文章
- 从硬件到软件 统一沟通将引领通讯市场
- c# 可选参数与命名实参
- Stream流与Lambda表达式(四) 自定义收集器
- Just another board game 博弈-vector套vector
- 吃鸡服务器8月10日维护,《黑潮之上》2021年8月10日不停服维护公告
- python 函数进度条怎么_python输出结果刷新及进度条的实现操作
- Ajax实现原理详解
- LightGBM最强解析,从算法原理到代码实现~
- python re正则查找_python正则表达式 - re
- 计算机网络之数据链路层:10、CSMA协议-随机访问介质访问控制
- java播放声音类和一个简单示例
- mysql快速启动_GitHub - TianSiQiang/Spring-Boot-MyBatis-Mysql: Spring Boot+MyBatis+Mysql 快速启动示例...
- python3.6安装pip3_python3.6如何安装pip
- Android实战开发通用流行框架大全
- 如何在EdrawMax中同时画有箭头和没箭头的直线
- elasticsearch使用中文分词器和拼音分词器,自定义分词器
- java字符串第一个字母表达_取一个字符串的第一个字母
- 数据库的应用之(智慧城市)
- 英语单词:through; fall through; write through
- C#使用ODBC链接MySQL数据库