java byte md5_Java开发网 - byte[]按自定义编码转换成String(MD5)

差不多了,这样应该就可以了,剩下的就是扩展能接受的类型了。import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

public class HashPasswords {

public String getPassword(byte[] input) {

byte[] digest;

synchronized (MD) {

digest = MD.digest(input);

MD.reset();

}

return digestToPswd(digest);

}

public String getPassword(String input) {

return getPassword(input.getBytes());

}

public String getPassword(String[] input) {

StringBuffer StrBuffer = new StringBuffer();

for (int i = 0; i < input.length; i++) {

StrBuffer.append(input[i]);

}

return getPassword(StrBuffer.substring(0).getBytes());

}

private MessageDigest MD;

public HashPasswords(String HashAlgorithm) {

super();

try {

MD = MessageDigest.getInstance(HashAlgorithm);

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

}

}

private static final char[] CodeTBL = {

'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f',

'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v',

'w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L',

'M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','#','*'};

private static String digestToPswd(byte[] bytes) {

int lb = bytes.length;

char[] Password = new char[((lb / 3 * 4) + (lb % 3))];

int lP = Password.length;

for (int i = 0, j = 0; i + 3 < lP && j + 2 < lb; j++) {

Password[i++] = CodeTBL[(((bytes[j] < 0) ? (256 + bytes[j]) : (int) (bytes[j])) >> 2)];

Password[i++] = CodeTBL[(((((bytes[j] < 0) ? (256 + bytes[j]) : (int) (bytes[j])) & 3) << 4) +

(((bytes[++j] < 0) ? (256 + bytes[j]) : (int) (bytes[j])) >> 4))];

Password[i++] = CodeTBL[(((((bytes[j] < 0) ? (256 + bytes[j]) : (int) (bytes[j])) & 15) << 2) +

(((bytes[++j] < 0) ? (256 + bytes[j]) : (int) (bytes[j])) >> 6))];

Password[i++] = CodeTBL[(((bytes[j] < 0) ? (256 + bytes[j]) : (int) (bytes[j])) & 63)];

}

switch (lb % 3) {

case 0 :

{

break;

}

case 1 :

{

lP-=1;lb-=1;

Password[lP] = CodeTBL[(((bytes[lb] < 0) ? (256 + bytes[lb]) : (int) (bytes[lb])) >> 2)];

break;

}

case 2 :

{

lP-=2;lb-=2;

Password[lP] = CodeTBL[(((bytes[lb] < 0) ? (256 + bytes[lb]) : (int) (bytes[lb])) >> 2)];lP++;

Password[lP] = CodeTBL[(((((bytes[lb] < 0) ? (256 + bytes[lb]) : (int) (bytes[lb])) & 3) << 4) +

(((bytes[++lb] < 0) ? (256 + bytes[lb]) : (int) (bytes[lb])) >> 4))];

break;

}

}

return new String(Password);

}

}

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

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

相关文章

Java线程生命周期

当你需要使用Java线程在多线程环境下进行编程时&#xff0c;理解Java的线程周期与线程的状态是非常重要的。通过实现Runnale接口或者继承Thread类&#xff0c;我们可以创建线程&#xff0c;为了启动一个线程&#xff0c;我们需要创建一个Thread对象&#xff0c;并且调用它的sta…

转,JSON解析2

JSON 使用讲解 这篇文章讲解了&#xff0c;JSON的介绍以及使用GSON解析。今天&#xff0c;我们就在Android项目中使用两种方式解析JSON数据。如果你对JSON&#xff0c;还不熟悉&#xff0c;那么请看JSON 使用讲解。 一.搭建服务以及制造JSON数据。 1.服务器选择的Tomcat&#x…

面试问题汇总 精选 分析 解答 职业规划 part 2

面试困惑问与答&#xff08;2&#xff09;——感觉挺好&#xff0c;为啥被拒了&#xff1f; 问&#xff1a;技术面试的时候&#xff0c;题目挺简单的&#xff0c;我觉得自己都做出来了。可最后怎么还是被拒了啊&#xff1f; 答&#xff1a;面试被拒有很多种可能&#xff0c;比…

js顺序加载

2019独角兽企业重金招聘Python工程师标准>>> js想要顺序加载&#xff0c;分开js代码块&#xff0c;jsp页面在加载的时候&#xff0c;是顺序加载&#xff0c;遇到<script></script>代码块&#xff0c;先加载完成&#xff0c;然后继续往下&#xff0c;遇到…

java swingworker_Java中的SwingWorker

L&#xff06;F物质的输出(因为您对EDT的不确定性有待测试)run:JButton openDialog >>> Is there EDT ??? trueWorker started >>> Is there EDT ??? falsewaiting 30secondsWorker endeded >>> Is there EDT ??? falsebefore JOptionP…

持续交付与滚动升级

介绍 持续交付是频繁对软件应用程序持续更新的概念. 这个想法使在大量频繁的更新面前, 你不必等待在一个指定的特殊时间点, 并且使你的组织在响应过程中变得更好. 一些 Ansible 用户每小时都在部署更新给他们的最终用户甚至更加频繁 – 每时每刻都有代码修改的批准. 要实现这一…

2-05 使用固态存储SSD或PCIe卡

在大量并发的情况下&#xff0c;才能体现固态磁盘的吞吐量&#xff0c;在大并发下提供良好随机io的性能&#xff0c;这正是关系型数据库所需要的&#xff0c;相对应机械磁盘&#xff0c;固态磁盘更容易损坏&#xff08;第三点是固态磁盘的缺点&#xff09;&#xff0c;由于固态…

面试问题汇总 精选 分析 解答 职业规划 part 3

《剑指Offer——名企面试官精讲典型编程题》已经出版 非常感谢博客上的读者&#xff0c;是大家的关心、支持和鼓励让我有信心写完这本书并最终出版发行&#xff08; china-pub互动网、 亚马逊卓越网、 淘宝网、 京东网、 当当网上有售&#xff09;。网友们的鼓励让我在 博客上的…

java 分布式rpc框架_分布式RPC框架Apache Dubbo(一)

4 Dubbo快速入门Dubbo作为一个RPC框架&#xff0c;其最核心的功能就是要实现跨网络的远程调用。本小节就是要创建两个应用&#xff0c;一个作为服务的提供方&#xff0c;一个作为服务的消费方。通过Dubbo来实现服务消费方远程调用服务提供方的方法。4.1 服务提供方开发开发步骤…

轻松获知数据库事务

标题索引事务作用事务流程隔离级别实例验证事务作用事务是确保数据库系统数据的完整性的功能&#xff0c;如现在互联网行业支付业务&#xff0c;不管服务器出于什么原因异常中断&#xff0c;客户要么支付成功要么支付不成功&#xff0c;支付成功数据库金额即会发生变化&#xf…

Python冒泡排序(4)

Python代码&#xff1a; """ 冒泡排序&#xff08;4&#xff09;在未排序的数中&#xff0c;通过两两比较[换位]的方式&#xff0c;将最小的数移至首位 N个数排序&#xff0c;则需要执行N-1轮&#xff0c;第1轮比较N-1次&#xff0c;后续每轮比上一轮少比较1次本…

打印hello world java_java – 如何打印“hello world”?

数字4946144450195624适合64位&#xff0c;其二进制表示为&#xff1a;10001100100100111110111111110111101100011000010101000该程序对每5位组的字符进行解码&#xff0c;从右到左00100|01100|10010|01111|10111|11111|01111|01100|01100|00101|01000d | l | r | o | w | | o…

研发人员为什么留不住

研发人员为什么留不住&#xff1f;(1)——问题与现象 研发团队做为公司的核心&#xff0c;承担了完成项目为公司赚钱的目的。研发人员在公司倍受重视的同时&#xff0c;并没有降低流失率。 问题与现象 以下问题相信您会在朋友口中&#xff0c;甚至自己的公司听到。 老板说&a…

算法与编程--1

1、编写一个程序&#xff0c;将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中&#xff0c;a.txt文件中的单词用回车符分隔&#xff0c;b.txt文件中用回车或空格进行分隔。 package com.test;import java.io.File; import java.io.FileNotFoundException; import …

Safari支不支持HTML5录音? 现在浏览器中最好的解决方案是WebRTC下的 navigator.getUserMedia API。...

先放结论&#xff1a;Safari支不支持HTML5录音&#xff1f; ——据我调查&#xff0c;不支持。 现在浏览器中最好的解决方案是WebRTC下的 navigator.getUserMedia API。 可是当使用Can I use查看兼容性的时候&#xff0c;我发现 不过这个是有历史原因的&#xff0c;我记得RTC是…

python lambda map reduce_简单了解python filter、map、reduce的区别

这篇文章主要介绍了简单了解python filter、map、reduce的区别,文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下python中有一些非常有趣的函数&#xff0c;面试的时候可能会遇到。今天也来总结一下&#xff0c;不…

面试问题汇总 精选 分析 解答 职业规划 part 4

程序员做业余项目、记笔记和写博客的重要性【经典】 编程是一种创造过程&#xff0c;业余项目允许程序员在没有截止日期或各种限制的条件下&#xff0c;以探索形式编程。业余项目之所以重要&#xff0c;有以下几个原因。 探索新技术 每天都会不断有新技术出现&#xff0c;而…

NB-IOT连接移动onenet平台流程

1. 先创建账号&#xff0c;然后创建产品 2. 创建设备&#xff0c;用ATCGSN和ATCIMI查询NB-IOT的IMEI和IMSI填写上去。 3. 创建好的设备。 转载于:https://www.cnblogs.com/429512065qhq/p/8359247.html

sort,uniq,wc指令简单用法

sort用于排序&#xff0c;可以根据不同的数据类型来进行排序&#xff0c;例如想要查看最后一个登陆的用户信息&#xff0c;可以把last和sort结合起来使用&#xff0c;按照登陆时间排序。 使用sort排序&#xff1a; sort常用参数&#xff1a; -f &#xff1a;忽略大小写的差异 -…

java ejb jsp 架构_JavaEE架构

B/S 体系结构image.pngJava EE 经典架构image.pngJava EE 13规范JDBCimage.pngJDBC 对象与接口java.sql.DriverManager&#xff1a;用于管理JDBC驱动的服务类&#xff0c;当JDBC驱动加载至内存后&#xff0c;DriverManager会自动注册JDBC驱动&#xff0c;然后通过getConnection…