日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

常用的加密算法---数字摘要

發布時間:2023/12/4 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常用的加密算法---数字摘要 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數字摘要:

數字摘要也稱為消息摘要,它是一個唯一對應一個消息或文本的固定長度的值,它是一個單向


Hash函數對消息進行計算產生的。



摘要生成的過程:待摘要串----->?Hash函數----->?摘要


消息摘要的特點:


1.無論輸入的消息多長,計算出來的消息摘要的長度是固定的。例如:MD5 的為128個比特位,SHA-1的為


160個比特位;


2.一般只要輸入的消息不同,對其產生的摘要消息也是不相同的,相同的輸入必然會產生相同的摘要消息;


3.由于消息摘要并不包含原文的完整信息,因此只能進行正向的消息摘要,而無法從摘要中恢復出原來的消息


甚至根本不可能找到任何與原信息相關的消息。


1.MD5:

基于java的MD5算法的使用:

/**

?*?實現MD5的加密

?*?

?*?@param?con

?* ? 需要加密的字符串

?*?@return

?*?@throws?Exception

?*/

?private?static?byte[]?testMD5(String?con)?throws?Exception?{

? ? ?MessageDigest?md5?=?MessageDigest.getInstance("MD5");

? ? ?byte[]?bytes?=?md5.digest(con.getBytes("utf-8"));

? ? ?return?bytes;

?}



2.SHA(摘要的信息長度160位 ?最安全的散列算法之一):

?/**

? *SHA?散列安全算法

? *?

? *?@param?con?

? *?????????????待加密的字符串

? *?@return

? *?@throws?Exception

? */

? private?static?byte[]?tstSHA1(String?con)?throws?Exception?{

? ? ?MessageDigest?sha?=?MessageDigest.getInstance("SHA-1");

? ? ?byte[]?bytes?=?sha.digest(con.getBytes("utf-8"));

? ? ?return?bytes;

?}



3.十六進制編碼:

?/**

? *?16進制加密

? *?

? *?@param?bytes

? *?@return

? */

?private?static?String?bytes2hex(byte[]?bytes)?{

?? StringBuilder?hex?=?new?StringBuilder();

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

? ? ? byte?b?=?bytes[i];

? ? ? boolean?negtive?=?false;

? ? ? if?(b?<?0)?{

? ? ? ? negtive?=?true;

? ? ? }

? ? ? int?inte?=?Math.abs(b);

? ? ? if?(negtive)

? ? ? inte?=?inte?|?0x80;

? ? ? String?temp?=?Integer.toHexString(inte?&?0xFF);

? ? ? if?(temp.length()?==?1)?{

? ? ? ? hex.append("0");

? ? ? }

? ? ? hex.append(temp.toLowerCase());

? ? ? }

? ? ? return?hex.toString();

? ?}

? /**

? ?*?16進制解密

? ?*?

? ?*?@param?hex

? ?*?@return

? ?*/

?private?static?byte[]?hex2bytes(String?hex)?{

? ?byte[]?bytes?=?new?byte[hex.length()?/?2];

? ?for?(int?i?=?0;?i?<?hex.length();?i?=?i?+?2)?{

? ? ? String?subStr?=?hex.substring(i,?i?+?2);

? ? ? boolean?negative?=?false;

? ? ? int?inte?=?Integer.parseInt(subStr,?16);

? ? ? if?(inte?>?127)?{

? ? ? ? negative?=?true;

? ? ? }

? ? ? if?(inte?==?128)?{

? ? ? ? inte?=?-128;

? ? ? }?else?if?(negative)?{

? ? ? ? inte?=?0?-?(inte?&?0x7F);

? ? ? }

? ? ? byte?b?=?(byte)?inte;

? ? ? bytes[i?/?2]?=?b;

? ? ? }

? ? ? return?bytes;

? }

4.Base64編碼:

?/**

? *?base64?編碼

? *?@param?base64

? *?@return

? *?@throws?IOException

? */

?private?static?byte[]?base642byte(String?base64)?throws?IOException?{

? ? BASE64Decoder?bs?=?new?BASE64Decoder();

? ? return?bs.decodeBuffer(base64);?

? }

?/**

? *?base64?解碼

? *?@param?bytes

? *?@return

? */

?private?static?String?byte2base64(byte[]?bytes)?{

? ? BASE64Encoder?bse?=?new?BASE64Encoder();

? ? return?bse.encode(bytes);

?}


??隨著數據化時代的到來,信息的安全性越來越成為我們關注的問題,本期博客寫了一些基礎的加密算法,希望對大家有用。其他的加密算法我也會在后期的書寫中逐漸補上。

轉載于:https://blog.51cto.com/wang963825/1734883

總結

以上是生活随笔為你收集整理的常用的加密算法---数字摘要的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。