-
第一步……產(chǎn)生key.再獲得key查看全部
-
生成一個key……用了類KeyGenerator查看全部
-
發(fā)送消息時的常用dang'shi查看全部
-
嗯查看全部
-
圖查看全部
-
jdkmd5查看全部
-
消息摘要算法的應(yīng)用場景: 1.發(fā)送方與接收方 消息發(fā)送方需要公布使用哪種消息摘要算法,然后對待發(fā)送的信息進(jìn)行摘要處理(密文). 發(fā)送方首先發(fā)送摘要信息(密文)給接收方,再發(fā)送信息(明文)給接收方. 接收方在接收到所有信息后會進(jìn)行一個消息鑒別,將接收到的源信息通過發(fā)送方聲明的摘要算法進(jìn)行消息摘要處理,判斷得到的摘要信息是否與接收到的摘要信息一致,進(jìn)而判斷接收到的信息是否是完整的. 2.用戶注冊 將用戶提供的密碼進(jìn)行消息摘要處理,即MD或SHA或MAC算法加密,并把加密后的密碼存入數(shù)據(jù)庫. 數(shù)據(jù)庫表中用戶名以明文的形式存在,密碼以密文的形式存在. 用戶登錄,需將用戶提供的密碼經(jīng)過同一個消息摘要算法處理,然后根據(jù)用戶名與處理后的密碼到數(shù)據(jù)庫中查詢是否存在此用戶. 消息摘要算法作用是保證數(shù)據(jù)的完整、安全.查看全部
-
CommonCodec實(shí)現(xiàn)SHA1算法: (仍然使用DigestUtils工具類,有g(shù)etXXX方法獲取MessageDigest實(shí)例或XXXHex方法直接將指定內(nèi)容通過摘要處理并轉(zhuǎn)為16進(jìn)制) //方式一 DigestUtils.sha1Hex(str.getBytes())); //方式二 MessageDigest digest=DigestUtils.getDigest("SHA"); byte[] data=digest.digest(str.getBytes()); Hex.encodeHexString(data); //方式三 MessageDigest digest=DigestUtils.getSha1Digest(); byte[] data=digest.digest(str.getBytes()); Hex.encodeHexString(data); CommonCodec實(shí)現(xiàn)SHA-224、SHA-256、SHA-384、SHA-512算法,只需使用算法對應(yīng)的方法即可.參照J(rèn)DK的實(shí)現(xiàn)方式.查看全部
-
BouncyCastle實(shí)現(xiàn)SHA1算法: (仍然是使用Digest接口,換上對應(yīng)算法的實(shí)現(xiàn)類) Digest digest=new SHA1Digest(); digest.update(str.getBytes(),0,str.getBytes().length); byte [] data=new byte[digest.getDigestSize()]; digest.doFinal(data,0); System.out.println("BouncyCastle SHA-1 "+Hex.toHexString(data)); BouncyCastle實(shí)現(xiàn)SHA-224、SHA-256、SHA-384、SHA-512算法,只需要給Digest接口注入對應(yīng)算法的實(shí)現(xiàn)類即可. 例:SHA224Digest()、SHA256Digest()....查看全部
-
SHA算法實(shí)現(xiàn) JDK實(shí)現(xiàn)SHA1算法: (仍然是使用MessageDigest類,與MD實(shí)現(xiàn)方法一致) //在jdk中,getInstance("SHA")即為SHA-1,SHA-1的名稱就是SHA. MessageDigest digest=MessageDigest.getInstance("SHA"); byte [] data=digest.digest(str.getBytes()); Hex.encodeHexString(data); JDK實(shí)現(xiàn)SHA-224、SHA-256、SHA-384、SHA-512算法只要在getInstance()方法中換上對應(yīng)的算法名即可. 即:getInstance(SHA-224)、getInstance(SHA-256)查看全部
-
在使用JDK的MessageDigest類的時候,可以使用MessageDigest的update(byte [] b)方法指定要摘要的數(shù)據(jù),那么就可以使用不帶參數(shù)的digest()方法. MessageDigest md=new MessageDigest("MD5"); md.update("imooc".getBytes()); String date=md.digest(); MessageDigest md=new MessageDigest("MD5"); String date=md.digest("imooc".getBytes());查看全部
-
消息摘要算法-SHA(安全散列算法) SHA具有固定長度的摘要信息,在MD4的基礎(chǔ)上發(fā)展過來的,由美國國家安全局設(shè)定. SHA算法包括: 1.SHA-1 2.SHA-2 (SHA-224、SHA-256、SHA-384、SHA-512這4種統(tǒng)稱為SHA-2) SHA-2只是一個統(tǒng)稱,實(shí)際上SHA總共有5種算法. 表格中分別顯示了這5種算法的固定摘要長度,其中沒有顯示CommonCodec,是因?yàn)镃ommonCodec SHA的算法實(shí)現(xiàn)是為了簡化JDK SHA算法實(shí)現(xiàn)的操作. JDK與BouncyCastle都提供了這5種算法的實(shí)現(xiàn).查看全部
-
消息摘要算法的主要特征是加密過程不需要密鑰,并且經(jīng)過加密的數(shù)據(jù)無法被解密,只有輸入相同的明文數(shù)據(jù)經(jīng)過相同的消息摘要算法才能得到相同的密文. 消息摘要算法的應(yīng)用場景: 用戶注冊,將用戶提供的密碼進(jìn)行消息摘要處理,即MD或SHA或MAC算法加密,并把加密后的密碼存入數(shù)據(jù)庫. 數(shù)據(jù)庫表中用戶名以明文的形式存在,密碼以密文的形式存在. 用戶登錄,需將用戶提供的密碼經(jīng)過同一個消息摘要算法處理,然后根據(jù)用戶名與處理后的密碼到數(shù)據(jù)庫中查詢是否存在此用戶.查看全部
-
CommonCodec實(shí)現(xiàn)MD算法 CommonCodec提供了DigestUtils類,該類有g(shù)etDigest(String algorithm)、getMd2Digest()、getMd5Digest()、getSha..方法等,返回一個MessageDigest實(shí)例. 這個MessageDigest就是JDK提供的MessageDigest類. 因此CommonCodec的MD算法實(shí)現(xiàn)實(shí)際是為了簡化JDK MD算法實(shí)現(xiàn)的操作. 1.直接使用DigestUtils的md5Hex(byte [] b)靜態(tài)方法,直接把字節(jié)數(shù)組通過MD5加密并且轉(zhuǎn)換為16進(jìn)制,返回字符串類型.還有md2Hex()以及其他算法的方法實(shí)現(xiàn),沒有md4Hex(). CommonCodec實(shí)現(xiàn)MD2算法 System.out.println(DigestUtils.md2Hex("imooc".getBytes())); CommonCodec實(shí)現(xiàn)MD5算法 System.out.println(DigestUtils.md5Hex("imooc".getBytes())); 在MD系列中,CC與BC區(qū)別比較大,CC MD系列的方法只是為了簡便JDK實(shí)現(xiàn)MD算法的操作,減少代碼量,而BC則是自己獨(dú)立的操作,并且提供MD4算法. 實(shí)際上,CommonCodec所有算法實(shí)現(xiàn)都是為了簡化jdk的操作.BouncyCastle是為了做額外的補(bǔ)充.查看全部
-
BouncyCastle實(shí)現(xiàn)MD算法 1.使用BouncyCastle中的Digest接口,該接口有很多實(shí)現(xiàn)類,包括MD2Digest()、MD4Digest()、MD5Digest()、SHA等實(shí)例.根據(jù)使用加密算法的不同,自行選擇對應(yīng)的實(shí)現(xiàn)類. 2.調(diào)用Digest接口的update(byte[] b,inOff,len)方法進(jìn)行加密,有三個參數(shù),第一個參數(shù)是要加密的明文字節(jié)數(shù)組,第二個參數(shù)是從字節(jié)數(shù)組的哪里開始加密,第三個參數(shù)是要加密的長度.方法返回void. 3.調(diào)用Digest接口的doFinal(byte[] b,outOff)方法來獲取經(jīng)過加密后的密文.參數(shù)一是用來存放加密后信息的字節(jié)數(shù)組,參數(shù)二是從字節(jié)數(shù)組的哪里開始存放.方法返回void. BouncyCastle實(shí)現(xiàn)MD4加密 Digest digest=new MD4Digest(); digest.update("imooc".getBytes(),0,"imooc".getBytes().length); byte [] b=new byte[digest.getDigestSize()]; digest.doFinal(b,0); System.out.println(Hex.toHexString(b)); //getDisgestSize()方法可以獲取經(jīng)過加密后摘要的長度. //MD4的使用與MD2、MD5的方式類似,換成對應(yīng)算法的實(shí)現(xiàn)類即可.查看全部
舉報
0/150
提交
取消