當前位置:首頁 » 操作系統 » java摘要演算法

java摘要演算法

發布時間: 2023-05-13 04:23:28

A. java加密和數字簽名 1消息摘要

本文主要談一下密碼學中的加密和數字簽名 以及其在java中如何進行使用 對密碼學有興趣的夥伴 推薦看Bruce Schneier的著作 Applied Crypotography 在jdk 的發行版本中安全性方面有了很大的改進 也提供了對RSA演算法的直接支持 現在我們從實例入手解決問題(本文僅是作為簡單介紹)

一 密碼學上常用的概念

)消息摘要

這是一種與消息認證碼結合使用以確保消息完整性的技術 主要使用單向散列函數演算法 可用於檢驗消皮神清息的完整性 和通過散列密碼直接以文本形式保存等 目前廣泛使用的演算法有MD MD SHA jdk 對上面都提供了支持 在java中進行消息摘要很簡單 java security MessageDigest提供了一個簡易的操作方法

Java代碼

燃前 /***MessageDigestExample java*Copyright */import java security MessageDigest;/***單一的消息摘要演算法 不使用密碼 可以用來對明文消息(如 密碼)隱藏保存*/public class MessageDigestExample{public static void main(String[] args) throws Exception{if(args length!= ){System err println( Usage:java MessageDigestExample text );System exit( );}byte[] plainText=args[ ] getBytes( UTF );//使用getInstance( 演算法 )來獲得消息摘要 這里使用SHA 的 位演算法MessageDigest messageDigest=MessageDigest getInstance( SHA );System out println( +messageDigest getProvider() getInfo());//開始使用演算法messageDigest update(plainText);System out println( Digest: );//輸出演算法運瞎缺算結果System out println(new String(messageDigest digest() UTF ));}}

lishixin/Article/program/Java/gj/201311/27287

B. JAVA中有沒有提供MD5演算法的包啊

有,在java.security包的MessageDigest類。
例子:
import java.security.MessageDigest;
public class Test2 {
public static void main(String[] args) {
Test2 t = new Test2();
System.out.println(t.bytesToMD5("a".getBytes()));
}
//把位元組數組轉成16進位制數
public String bytesToHex(byte[] bytes) {
StringBuffer md5str = new StringBuffer();
//把數組每一位元組換成16進制連成md5字元串
int digital;
for (int i = 0; i < bytes.length; i++) {
digital = bytes[i];
if(digital < 0) {
digital += 256;
}
if(digital < 16){
md5str.append("0");
}
md5str.append(Integer.toHexString(digital));
}
return md5str.toString();
}
//把位元組數組轉換成md5
public String bytesToMD5(byte[] input) {
String md5str = null;
try {
//創建一個提供信息摘要演算法的對象,初始化為md5演算法對象
MessageDigest md = MessageDigest.getInstance("MD5");
//計算後獲得位元組數組
byte[] buff = md.digest(input);
//把數組每一位元組換成16進制連成md5字元串
md5str = bytesToHex(buff);
} catch (Exception e) {
e.printStackTrace();
}
return md5str;
}
}

C. java項目如何加密

Java基本的單向加密演算法:

1.BASE64 嚴格地說,屬於編碼格式,而非加密演算法
2.MD5(Message Digest algorithm 5,信息摘要演算法)
3.SHA(Secure Hash Algorithm,安全散列演算法)
4.HMAC(Hash Message Authentication Code,散列消息鑒別碼)
按 照RFC2045的定義,Base64被定義為:Base64內容傳送編碼被設計用來把任意序列的8位位元組描述為一種不易被人直接識別的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.)
常見於郵件、http加密,截取http信息,你就會發現登錄操作的用戶名、密碼欄位通過BASE64加密的。
主要就是BASE64Encoder、BASE64Decoder兩個類,我們只需要知道使用對應的方法即可。另,BASE加密後產生的位元組位數是8的倍數,如果不夠位數以=符號填充。
MD5
MD5 -- message-digest algorithm 5 (信息-摘要演算法)縮寫,廣泛用於加密和解密技術,常用於文件校驗。校驗?不管文件多大,經過MD5後都能生成唯一的MD5值。好比現在的ISO校驗,都 是MD5校驗。怎麼用?當然是把ISO經過MD5後產生MD5的值。一般下載linux-ISO的朋友都見過下載鏈接旁邊放著MD5的串。就是用來驗證文 件是否一致的。

HMAC
HMAC(Hash Message Authentication Code,散列消息鑒別碼,基於密鑰的Hash演算法的認證協議。消息鑒別碼實現鑒別的原理是,用公開函數和密鑰產生一個固定長度的值作為認證標識,用這個 標識鑒別消息的完整性。使用一個密鑰生成一個固定大小的小數據塊,即MAC,並將其加入到消息中,然後傳輸。接收方利用與發送方共享的密鑰進行鑒別認證 等。

D. java加密的幾種方式

朋友你好,很高興為你作答。

首先,Java加密能夠應對的風險包括以下幾個:

1、核心技術竊取

2、核心業務破解

3、通信模塊破解

4、API介面暴露

本人正在使用幾維安全Java加密方式,很不錯,向你推薦,希望能夠幫助到你。

幾維安全Java2C針對DEX文件進行加密保護,將DEX文件中標記的Java代碼翻譯為C代碼,編譯成加固後的SO文件。默認情況只加密activity中的onCreate函數,如果開發者想加密其它類和方法,只需對相關類或函數添加標記代碼,在APK加密時會自動對標記的代碼進行加密處理。

與傳統的APP加固方案相比,不涉及到自定義修改DEX文件的載入方式,所以其兼容性非常好;其次Java函數被完全轉化為C函數,直接在Native層執行,不存在Java層解密執行的步驟,其性能和執行效率更優。

如果操作上有不明白的地方,可以聯系技術支持人員幫你完成Java加密。

希望以上解答能夠幫助到你。

E. java中使用MD5加密演算法進行加密

在各種應用系統的開發中 經常需要存儲用戶信息 很多地方都要存儲用戶密碼 而將用戶密碼直接存儲亮衫唯在伺服器上顯然是不安全的 本文簡要介紹工作中常用的 MD 加密演算法 希望能拋磚引玉

(一)消息摘要簡介

一個消息摘要就是一個數據塊的數字指紋 即對一個任意敬培長度的一個數據塊進行計算 產生一個唯一指印(對於SHA 是產生一個 位元組的二進制數組) 消息摘要是一種與消息認證碼結合使用以確保消息完整性的技術 主要使用單向散列函數演算法 可用於檢驗消息的完整性 和通過散列密碼直接以文本形式保存等 目前廣泛使用的演算法有MD MD SHA

消息摘要有兩個基本屬性

兩個不同的報文難以生成相同的摘要難以對指定的摘要生成一個報文 而可以由該報文反推算出該指定的摘要代表 美國國家標准技術研究所的SHA 和麻省理工學院Ronald Rivest提出的MD

(二)對字元串進行加密

/***//**利用MD 進行加密*@paramstr待加密的字元串*@return加密後的字元串*塌仔@沒有這種產生消息摘要的演算法*@*/publicStringEncoderByMd (Stringstr) UnsupportedEncodingException {//確定計算方法MessageDigestmd =MessageDigest getInstance( MD );BASE Encoderbase en=newBASE Encoder();//加密後的字元串Stringnewstr=base en encode(md digest(str getBytes( utf )));returnnewstr;}

調用函數 String str=

System out println(EncoderByMd (str))

輸出 eB eJF ptWaXm bijSPyxw==

(三)驗證密碼是否正確

/***//**判斷用戶密碼是否正確*@paramnewpasswd用戶輸入的密碼*@paramoldpasswd資料庫中存儲的密碼--用戶密碼的摘要*@return*@*@*/publicbooleancheckpassword(Stringnewpasswd Stringoldpasswd) UnsupportedEncodingException {if(EncoderByMd (newpasswd) equals(oldpasswd))returntrue;elsereturnfalse;} lishixin/Article/program/Java/hx/201311/26374

F. java如何算md5碼

可以利用JDK自帶的MD5來加密。

publicclassMD5Util{
publicfinalstaticStringMD5(Strings){
charhexDigits[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
try{
byte[]btInput=s.getBytes();
//獲得MD5摘要演算法的MessageDigest對象
MessageDigestmdInst=MessageDigest.getInstance("MD5");
//使用指定的位元組更新摘要
mdInst.update(btInput);
//獲得密文
byte[]md=mdInst.digest();
//把密文轉換成十六進制的字元串形式
intj=md.length;
charstr[]=newchar[j*2];
intk=0;
for(inti=0;i<j;i++){
bytebyte0=md[i];
str[k++]=hexDigits[byte0>>>4&0xf];
str[k++]=hexDigits[byte0&0xf];
}
returnnewString(str);
}catch(Exceptione){
e.printStackTrace();
returnnull;
}
}
publicstaticvoidmain(String[]args){
System.out.println(MD5Util.MD5("20121221"));
System.out.println(MD5Util.MD5("加密"));
}
}

G. Java 加密解密的方法都有哪些

加密解密並非java才有的,所有編程語言都有加密和解密。

目前的加密解密主要可分為以下2大類:

  1. 對稱秘鑰加密:如DES演算法,3DES演算法,TDEA演算法,Blowfish演算法,RC5演算法,IDEA演算法等。其主要特點是加密方和解密方都有同一個密碼,加密方和解密方可以使用秘鑰任意加密解密。

  2. 非對稱密碼加密:這種加密方式加密方僅有加密秘鑰,對加密後的密文無法反向解密,解密方僅有解密秘鑰,無法對明文進行加密。


另外還有一些摘要演算法,比如MD5和HASH此類演算法不可逆,但經常用來作為確認欄位或者對一些重要匹配信息簽名防止明文內容被修改。

H. 1.1 信息摘要演算法簡介

數據摘要演算法(信息摘要)是密碼學演算法中非常重要的一個分支,它通過對所有數據提取指紋信息以實現數據簽名、數據完整性校驗等功能,由於演算法具有其不可逆性,有時候也會被用做敏感信息加密。

消息摘要演算法(雜湊演算法,哈希演算法)的主要特徵是加密過程不需要密鑰,並且經過加密的數據無法被解密,只有輸入相同的明文數據經過相同的消息摘要演算法才能得到相同的密文。

一般地,把對一個信息的摘要稱為該消息的指紋或數字簽名,信息摘要演算法的主要用途是 信息完整性校驗 ,就好比我們接到一個快遞,肯定都會先確定快遞包裝是否完整,有沒有被人打開過,裡面的東東有沒有被人動過。

在計算機領域,我們也希望能知道別人傳遞的消息是否完整、是否有被篡改,這里就用到信息摘要演算法。

舉例:我們傳遞 password 時,需要將 password 加 salt 後做信息摘要,接收方核對摘要,相同則接受處理,不相同則認為本次的 password 傳輸過程中被篡改,拒絕本次請求。

信息摘要演算法來源於 CRC演算法 ,最初 CRC演算法 是用來驗證數據完整性的,即我們常見的 奇偶校驗碼 、 循環冗餘校驗返物鎮 ,在CRC基礎上發展出了MD和SHA兩大演算法家族,螞液CRC比這些演算法都要早,MD演算法比SHA演算法早,SHA演算法是對MD演算法的改進。再後來則發展出了可以帶有密碼的信息摘要演算法- MAC演算法 。

信息摘要演算法包括三大類,MD、SHA和MAC演算法,MD的分類是按照版本規定的,SHA一漏粗般是按照產生的消息長度分類的,但是SHA系列演算法在學術上會按照演算法版本區分SHA-0、SHA-1、SHA-2、SHA-3,
MAC演算法是Hmac加融合的其他算來命名的。

下表是主要的信息摘要演算法的特點比較,關於MD5、SHA1等演算法的具體過程,非安全、演算法專業人士可不學習,如有需要可以參考下面的維基網路:

美國對於演算法出口有著嚴格的限制,Sun公司(現在應該是甲骨文了)限於美國演算法出口法律的限制和本身的一些原因,並有提供特別全面的演算法支持,不過java的加密模塊被設計為:以SPI方式提供演算法具體實現,可以用來透明的接入其他演算法供應商,通過SPI機制可以直接使用其他演算法供應商的jar包工具。

在Java中主要的演算法供應商有三類:Sun本身的演算法,包含在JDK中,大部分在JDK 1.6之後,Bouncy Castle和Commons Codec。

I. java的signature類提供了哪些演算法

Signature 類用來為應用程序提供數字簽名演算法功能。數字簽名用於確保數字數據的驗證和完整性。
在所有演算法當中,數字簽名可以是 NIST 標準的 DSA,它使用 DSA 和 SHA-1。可以將使用 SHA-1 消息摘要演算法的 DSA 演算法指定為 SHA1withDSA。如果使用 RSA,對消息摘要演算法則會有多種選擇,因此,可以將簽名演算法指定為 MD2withRSA、MD5withRSA 或 SHA1withRSA。因為沒有默認的演算法名稱,所以必須為其指定名稱。
Signature 對象可用來生成和驗證數字簽名。

熱點內容
編程找點 發布:2025-05-15 20:43:10 瀏覽:587
php上傳臨時文件夾 發布:2025-05-15 20:43:00 瀏覽:657
impala資料庫 發布:2025-05-15 20:42:12 瀏覽:649
android安裝插件 發布:2025-05-15 20:41:31 瀏覽:241
神秘顧客訪問 發布:2025-05-15 20:33:39 瀏覽:298
安卓市場手機版從哪裡下載 發布:2025-05-15 20:17:28 瀏覽:815
幼兒速演算法 發布:2025-05-15 20:15:08 瀏覽:87
best把槍密碼多少 發布:2025-05-15 20:13:42 瀏覽:549
android安裝程序 發布:2025-05-15 20:13:20 瀏覽:560
c語言跳出死循環 發布:2025-05-15 20:06:04 瀏覽:825