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.pswp.cn/news/453605.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453605.shtml
英文地址,請注明出處:http://en.pswp.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…