Java加密演算法(MD5、SHA-1)
1.MD5演算法(Message Digest Algorithm 5) 可以保證資料傳輸完整性和一致性 摘要後長度為16位元組 摘要資訊中不包含原文資訊,所有加密結果不可逆(無法解密) 一般在傳送檔案時 對原始檔進行md5 hash 傳送到對方後 檢測hash值是否相等 如果相等檔案傳輸正確,如果不相等 說明檔案被篡改或者未傳送完成。
2.SHA演算法Secure Hash Algorithm(安全hash演算法) 安全雜湊演算法(hash函式 將原始資訊壓縮 返回雜湊值)可以是SHA-1,SHA1是目前最安全的摘要演算法 摘要的長度為 20位元組
下面是這兩種演算法的程式碼
package com.cherry.test;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import com.sun.org.apache.xml.internal.security.exceptions.Base64DecodingException;
import com.sun.org.apache.xml.internal.security.utils.Base64;
/**
* @author [email protected]
* @create 2018/5/8 17:14
* @desc
**/
public class MD5EncryptionTechnique {
/**
* main method
* @param args
*/
public static void main(String[] args) {
System.out.println(getMD5Digest("admin"));//d033e22ae348aeb5660fc2140aec35850c4da997密文結果採用MD5演算法
System.out.println(ReversibleW("admin"));//自定義加密技術,密文
System.out.println(ReversibleW(""));//admin自定義解密,明文 用統一加密演算法得到的密文
System.out.println(encode("admin"));//YWRtaW4= Base64加密密文
System.out.println(decode("YWRtaW4="));//admin Base64解密明文
}
/**
* MD5演算法或者SHA-1演算法要用到的加密演算法
* 二進位制資料轉換成十六進位制字串
* @author [email protected]
* @param b byte[] 位元組流
* @return String 十六進位制字串
*/
public static String byteToHexString(byte[] b) {
String hs = "";
String stmp = "";
for (int n = 0; n < b.length; n++) {
stmp = (Integer.toHexString(b[n] & 0XFF));
if (stmp.length() == 1) {
hs = hs + "0" + stmp;
} else {
hs = hs + stmp;
}
if (n < b.length - 1)
hs = hs + "";
}
return hs;
}
/**
* 對源字串進行md5/SHA-1編碼
* @author [email protected]
* @param sourceData 明文
* @return 密文
*/
public static String getMD5Digest(String sourceData) {
try {
//此句話是採用MD5演算法加密
//MessageDigest alga = MessageDigest.getInstance("MD5");
//此句話是採用SHA-1演算法
MessageDigest alga=MessageDigest.getInstance("SHA-1");
alga.update(sourceData.getBytes());
byte[] digesta = alga.digest();
return byteToHexString(digesta);
} catch (NoSuchAlgorithmException ex) {
ex.printStackTrace();
}
return null;
}
/**
* reversible encryption technique
* 這個方法是可逆的加密解密演算法,傳過去明文,得到的是密文;傳過去密文,得到的是明文
* 自定義方法,可以稍微瞭解一下
* @author [email protected]
* @param inStr
* @return
*/
public static String ReversibleW(String inStr) {
// String s = new String(inStr);
char[] a = inStr.toCharArray();
for (int i = 0; i < a.length; i++) {
a[i] = (char) (a[i] ^ 'w');//w可以換成任一字母,加密後結果不同*********解密時要用加密的同一個字母
}
String s = new String(a);
return s;
}
/**
* Base64加密演算法
* @param sourceData 明文
* @return 密文
*/
public static String encode(String sourceData) {
String str = Base64.encode(sourceData.getBytes(), 0);
return str;
}
/**
* Base64解密演算法
* @param str 密文
* @return 明文
*/
public static String decode(String str) {
try {
byte[] sourceData = Base64.decode(str);
return new String(sourceData);
} catch (Base64DecodingException e) {
e.printStackTrace();
}
return null;
}
}
相關推薦
Java加密演算法(MD5、SHA-1)
1.MD5演算法(Message Digest Algorithm 5) 可以保證資料傳輸完整性和一致性 摘要後長度為16位元組 摘要資訊中不包含原文資訊,所有加密結果不可逆(無法解密) 一般在傳送檔案時 對原始檔進行md5 hash 傳送到對方後 檢測hash值是否相等 如
java 實現各種加密(MD5 ,SHA-1,SHA-256)
常用加密演算法通用方法: package BinTest.bin; import java.security.MessageDigest; import java.security.NoSuchAl
專案裡面常用的加密方式base64、AES、MD5、sha-1
今天重新整理了一遍以前專案中經常用到過的幾種加密的方式,發現以前其實對這幾種加密的方式理解的不是特別的深刻首先從加密的本質是來看,是把一些不定長度的資料按照一定的編碼規則輸出為一種一定長度的資料串。這個是我理解的加密,其中不同的加密手段採用不同的編碼規則。閱讀之前先了解一些
數字簽名演算法MD5和SHA-1的比較
什麼是MD5,什麼是SHA-1,如何校驗這些Hash。還有拿單個ISO檔案的MD5,SHA-1訊問是不是原版的問題,在這裡,對以上問題做一個終結解釋!瞭解hashHash,一般翻譯做“雜湊”,也有直接音譯為”雜湊”的,就是把任意長度的輸入(又叫做預對映,pre-image),
加密演算法—MD5、RSA、DES
最近因為要做一個加密的功能,簡單瞭解了一下加密演算法,現在比較常用的有三個加密演算法MD5加密演算法、RSA加密演算法、DES加密演算法。 MD5加密演算法 定義:MD5演算法是將任
BASE64、MD5、SHA、HMAC幾種加密演算法(轉)
本篇內容簡要介紹BASE64、MD5、SHA、HMAC幾種加密演算法。 BASE64編碼演算法不算是真正的加密演算法。 MD5、SHA、HMAC這三種加密演算法,可謂是非可逆加密,就是不可解密的加密方法,我們稱之為單向加密演
java加密演算法BASE64&MD5&SHA
1、BASE64 Base64定義:Base64內容傳送編碼被設計用來把任意序列的8位位元組描述為一種不易被人直接識別的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary s
加密演算法中BASE64、MD5、SHA、HMAC等之間的區別
根據專案需要了解了一下幾種加密演算法(參考其他部落格),內容簡要介紹BASE64、MD5、SHA、HMAC幾種加密演算法。BASE64編碼演算法不算是真正的加密演算法。MD5、SHA、HMAC這三種加密演算法,可謂是非可逆加密,就是不可解密的加密方法,我們稱之為單向加密演算
JAVA加密演算法(1)- 密碼學概述及BASE64演算法使用
密碼學綜述 密碼學綜述 密碼學基本功能 機密性、鑑別、報文完整性、不可否認性 基本模型 sender-->加密演算法 --> 密文 --> 解密演算法 --> receiver 金鑰源 密碼學演算法分類: 訊息編碼:Base64 訊息
[C#] 簡單的 Helper 封裝 -- SecurityHelper 安全助手:封裝加密算法(MD5、SHA、HMAC、DES、RSA)
cat equals des input ignore uri put class style #region using System; using System.IO; using System.Security.Cryptography; using
Python實現DES、DES3、AES、RSA、MD5、SHA、HMAC加密方式及示例
對上述七中加密方式的整理,始於前端js對密碼加密實現的需要,目前使用最多是AES、RSA、MD5,當然這三個的巢狀和混合使用情況也比較多。 這應該是Python3目前最全的整理,所有案列都親自測試可行,並標註了使用的一些注意事項和說明。 目前總結有下面幾點: 對稱加密(加密解密金
Java 加密解密 對稱加密演算法 非對稱加密演算法 MD5 BASE64 AES RSA
【前言】 本文簡單的介紹了加密技術相關概念,最後總結了java中現有的加密技術以及使用方法和例子 【最簡單的加密】1.簡單的概念 明文:加密前的資訊 密文:機密後的資訊 演算法:加密或解密的演算法 金鑰:演算法使用的鑰匙(讀作miyao,正確應該是miyue,但是大家都讀m
支援APP手機應用(android和ios)介面呼叫 傳輸驗證可用 shiro 的 MD5、SHA 等加密
A 程式碼生成器(開發利器);全部是原始碼 增刪改查的處理類,service層,mybatis的xml,SQL( mysql 和oracle)指令碼, jsp頁面 都生成 就不用寫搬磚的程式碼了,生成的放到專案裡,可以直接執行B 阿里巴巴資料庫連線池druid; 資料庫連線池 阿里
Android網路傳輸中必用的兩個加密演算法:MD5 和 RSA (附java完成測試程式碼)
MD5和RSA是網路傳輸中最常用的兩個演算法,瞭解這兩個演算法原理後就能大致知道加密是怎麼一回事了。但這兩種演算法使用環境有差異,剛好互補。一、MD5演算法首先MD5是不可逆的,只能加密而不能解密。比如明文是yanzi1225627,得到MD5加密後的字串是:14F2AE15
如何應對SHA-1加密演算法升級為SHA-256
經過權威機構證實,sha1加密演算法的不安全性越來越高,sha指紋造假成本越來越低,隨即微軟、谷歌等IT巨頭相繼釋出棄用sha1加密演算法宣告,第三方認證機構自2016年1月1日起,將全面停止簽發SHA1演算法的數字證書。這一切表明都表明從1995年誕生至今的SHA1演算法
MD5帶鹽值的java加密演算法
我們直接看一張圖: 不知看後,會有何感觸。現在的MD5密碼資料庫的資料量已經非常龐大了,大部分常用密碼都可以通過MD5摘要反向查詢到密碼明文。為了防止內部人員(能夠接觸到資料庫或者資料庫備份檔案的人員)和外部入侵者通過MD5反查密碼明文,更
MD5和SHA-1
術語 說明 iges object類 改變 href edi 一個 個數字 MD5和SHA-1都是我們耳熟能詳的術語了,很多人可能知道他們跟加密有關系,但是他們是怎麽做到加密的,他們各自的特點又是什麽。我來簡單的講一講。 MD5和SHA-1都被稱作哈希(Hash)函數,用過
生成文件的MD5、SHA、SHA256
生成文件 md5sum sun linux系統 windows csdn sha2 lin tps 生成文件的MD5、SHA、SHA256 Linux系統生成MD5、SHA、SHA256md5sum file1.zip >> MD5.txt sha1
Go語言與AES加密演算法 —— 簡介、AES演算法案例
AES簡介 高階加密標準(英語:Advanced Encryption Standard,縮寫:AES),在密碼學中又稱Rijndael加密法,是美國聯邦政府採用的一種區塊加密標準。這個標準用來替代原先的DES,已經被多方分析且廣為全世界所使用。經過五年的甄選流程,高階加密標準由美國國家標準
Java常用演算法原理、實現及總結
一、概念 1、內部排序與外排序 內部排序:待排序記錄存放在計算機隨機儲存器中(說簡單點,就是記憶體)進行的排序過程,接下來講的十大演算法都是內部排序。 外部排序:待排序記錄的數量很大,以致於記憶體不能一次容納全部記錄,所以在排序過程中需要對外存進行訪問的排序過程