常用的加密算法有哪些? 现在常用的数据加密算法主要有哪些

\u6700\u5e38\u7528\u7684\u52a0\u5bc6\u7b97\u6cd5\u662f\u4ec0\u4e48?

\u4f7f\u7528\u5206\u7ec4\u5bc6\u7801\u7b97\u6cd5\u6570\u5b57\u7b7e\u540d\u5e38\u7528\u7684\u52a0\u5bc6\u6807\u51c6\u6709\uff1aDES\uff0cTripl\uff0dDES,RC2,RC4,CAST\u7b49\u3002

\u4f7f\u7528\u516c\u94a5\u5bc6\u7801\u7b97\u6cd5\u8fdb\u884c\u6570\u5b57\u7b7e\u540d\u901a\u7528\u7684\u52a0\u5bc6\u6807\u51c6\u6709\uff1a RSA\uff0cDSA\u7b49\u3002

\u6570\u5b57\u7b7e\u540d\u662f\u6307\u4f7f\u7528\u5bc6\u7801\u7b97\u6cd5\u5bf9\u5f85\u53d1\u7684\u6570\u636e(\u62a5\u6587\u3001\u7968\u8bc1\u7b49)\u8fdb\u884c\u52a0\u5bc6\u5904\u7406\uff0c\u751f\u6210\u4e00\u6bb5\u4fe1\u606f\uff0c\u9644\u7740\u5728\u539f\u6587\u4e0a\u4e00\u8d77\u53d1\u9001\uff0c\u8fd9\u6bb5\u4fe1\u606f\u7c7b\u4f3c\u73b0\u5b9e\u4e2d\u7684\u7b7e\u540d\u6216\u5370\u7ae0\uff0c\u63a5\u6536\u65b9\u5bf9\u5176\u8fdb\u884c\u9a8c\u8bc1\uff0c\u5224\u65ad\u539f\u6587\u771f\u4f2a\u3002

Hash\u7b97\u6cd5\u6570\u5b57\u7b7e\u5b57\u901a\u7528\u7684\u52a0\u5bc6\u6807\u51c6\u6709\uff1a SHA\uff0d1\uff0cMD5\u7b49\u3002

\u81ea\u5b9a\u4e49\u7b97\u6cd5\uff1aX.509\u6570\u5b57\u8bc1\u4e66\uff0cXML\u6570\u5b57\u7b7e\u540d\u7b49\u3002

\u7528\u6570\u636e\u5e93\u505a\u7684md5\u6620\u5c04\uff0c\u6240\u4ee5\u53ea\u8981\u4ed6\u7684\u6570\u636e\u5e93\u91cc\u6709\u5c31\u8f7b\u677e\u7684\u7834\u89e3\u4e86\uff0c\u5176\u5b9e\u4f60\u8fd9\u4e2a\u95ee\u9898\u6211\u5728\u4ee5\u524d\u5c31\u89e3\u51b3\u4e86 \u4f60\u53ef\u4ee5\u5728md5\u7684\u7ed3\u679c\u91cc\u518d\u81ea\u5df1\u505a\u4e00\u4e0b\u7b80\u5355\u7684\u53d8\u6362\uff0c\u6bd4\u5982\u505a\u4e00\u6b21\u53cd\u8f6c\u4e4b\u7c7b\u7684\u53d8\u5316 \u5b9e\u73b0\u8d77\u6765\u4e5f\u5f88\u7b80\u5355\uff0c\u8fd9\u6837\u5f53\u4eba\u5bb6\u4e0d\u77e5\u9053\u4f60\u5728md5\u4e0a\u52a0\u4e86\u53cd\u8f6c \u5c31\u76f4\u63a5\u53bb\u7834\u89e3\u662f\u7834\u4e0d\u51fa\u6765\u7684 \u6211\u5199\u4e86\u4e00\u6bb5\u7a0b\u5e8f\uff0c\u5e0c\u671b\u5bf9\u4f60\u6709\u70b9\u5e2e\u52a9 import java.security.*; import java.io.*; import java.util.*; import sun.misc.BASE64Encoder; public class MD5 { public static String creatPassword(String password)throws Exception { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(password.getBytes("UTF8")); byte[] digest = md.digest(); /*\u5728\u8fd9\u91cc\u968f\u4fbf\u505a\u70b9\u4ec0\u4e48\u53d8\u6362\u5c31\u53ef\u4ee5\u4e86\uff0c\u53ef\u4ee5\u81ea\u7531\u53d1\u6325\u4e86\uff0c\u4f60\u4e5f\u53ef\u4ee5\u5199\u4e00\u4e2a\u53cd\u8f6c\u4ec0\u4e48\u7684\uff0c\u6211\u8fd9\u91cc\u5c31\u7b80\u5355\u70b9\u5199\u4e86,\u6ce8\u610f\u4e3a\u4e86\u4fdd\u8bc1md5\u7684\u78b0\u649e\u56f0\u96be\uff0c\u6700\u597d\u4e0d\u8981\u6539\u53d8\u539f\u6709\u7684\u5b57\u7b26\u96c6\uff0c\u5c31\u662f\u8bf4\u6700\u597d\u53ea\u4ea4\u6362\u67d0\u4e9b\u5b57\u7b26\u7684\u4f4d\u7f6e\uff0c\u4e0d\u8981\u6539\u53d8\u539f\u6709\u7684\u503c \u8fd8\u6709\u4f60\u5728\u9a8c\u8bc1\u7684\u65f6\u5019\u4e5f\u8981\u6309\u7167\u4f60\u53d1\u6325\u7684\u65b9\u6cd5\u5199*/ byte tt=digest[0];digest[0]=digest[7];digest[7]=tt; String outp; outp = new BASE64Encoder().encode(digest); /*\u987a\u4fbf\u8bf4\u4e00\u4e0b\u91c7\u7528BASE64Encoder\u7f16\u7801\u540e\u539f\u672c\u662f16\u4f4d\u7684\u5b57\u7b26\u53d8\u6210\u4e8624\u4f4d\uff0c\u5176\u4e2d\u524d22\u4f4d\u662f\u6709\u6548\u4f4d\uff0c\u4e0d\u662f\u6211\u4eec\u5e38\u89c1\u768416\u4f4d\u4e86 \u8fd9\u91cc\u4e5f\u548c\u6211\u4eec\u7528\u7684\u6570\u636e\u5e93\u7834\u89e3\u4e5f\u4e0d\u540c\uff0c\u53d8\u6362\u7684\u8fc7\u7a0b\u5176\u5b9e\u662f\u54278\u4f4d\u7684byte\u53ea\u53d66\u4f4d\uff0c\u7136\u540e\u901a\u8fc7\u52a0\u5b57\u7b26\u957f\u5ea6\u6765\u5b9e\u73b0*/ return outp; } public static void main(String args[])throws Exception{ String md=new MD5().creatPassword("message for test"); System.out.println(md); } } \u518d\u7ed9\u4f60\u4e00\u6bb5\u4ee3\u7801\uff0c\u8fd9\u6bb5\u4ee3\u7801\u4e2d\u7528\u5230\u7684\u662f\u4e00\u79cd\u6bd4\u8f83\u5b89\u5168\u7684\u65b9\u5f0f\uff0c\u7406\u8bba\u662f\u4f7f\u7834\u89e3\u4e0d\u51fa\u6765\u7684\uff0c\u56e0\u4e3a\u5b83\u4f7f\u7528\u4e86\u968f\u673a\u76d0\u5bf9\u5bc6\u7801\u52a0\u5bc6\uff0c\u5bf9\u540c\u6837\u4e00\u6bb5\u5bc6\u6587\u52a0\u5bc6\u7684\u4e24\u6b21\u7ed3\u679c\u662f\u4e0d\u4e00\u6837\u7684\uff0c\u4f46\u662f\u53c8\u540c\u6837\u80fd\u505a\u767b\u5f55\u8ba4\u8bc1\uff0c\u8fd9\u6837\u5c31\u6ca1\u529e\u6cd5\u505a\u6570\u636e\u5e93\u53bb\u5339\u914d\u4e86\uff0c\u6709\u5174\u8da3\u7684\u8bdd\u53ef\u4ee5\u7814\u7a76\u4e00\u4e0b\uff0c\u8fd8\u6709\uff0c\u52a0\u5bc6\u7ed3\u679c\u662f40\u4f4d import java.security.*; import java.io.*; import java.util.*; import sun.misc.*; public class MD { //\u52a0\u5bc6 public static String creatPassword(String password)throws Exception { SecureRandom random = new SecureRandom(); byte[] salt = new byte[12]; random.nextBytes(salt); MessageDigest md = MessageDigest.getInstance("MD5"); md.update(salt); md.update(password.getBytes("UTF8")); byte[] digest = md.digest(); String outp=new BASE64Encoder().encode(salt); outp = outp + new BASE64Encoder().encode(digest); return outp; } //\u8ba4\u8bc1,gavingPassword\u662f\u5ba2\u6237\u8f93\u5165\u7684\u5bc6\u7801\u660e\u6587\uff0cpassword\u662f\u5b58\u653e\u7684\u5bc6\u7801\u7684\u5bc6\u6587 public static boolean authenticatePassword(String gavingPassword,String password ) throws Exception { String saltString = password.substring(0,16); byte[] salt = new BASE64Decoder().decodeBuffer(saltString); String digest1=password.substring(16); MessageDigest md = MessageDigest.getInstance("MD5"); md.update(salt); md.update(gavingPassword.getBytes("UTF8")); byte[] digest = md.digest(); String digest2 = new BASE64Encoder().encode(digest); if(digest1.equals(digest2)) return true; else return false; } }

对称密钥加密

对称密钥加密 Symmetric Key Algorithm 又称为对称加密、私钥加密、共享密钥加密:这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单的相互推算的密钥,对称加密的速度一般都很快。



一。摘要算法

1》MD5算法(Message Digest Algorithm 5) 可以保证数据传输完整性和一致性 摘要后长度为16字节 摘要信息中不包含原文信息

所有加密结果不可逆(无法解密) 一般在传送文件时 对源文件进行md5 hash 传送到对方后 检测hash值是否相等 如果相等文件传输正确

如果不相等 说明文件被篡改(加入木马)或者未传送完成

其他MD算法 MD2(16字节)

public static void main(String[] args) throws NoSuchAlgorithmException {
MessageDigest md=MessageDigest.getInstance("MD5") ;
String code="hello";
byte[] bt=md.digest(code.getBytes());
System.out.println(bt.length);

对称加密算法用来对敏感数据等信息进行加密,常用的算法包括:
DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。

3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。

AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高。

1、常用密钥算法
密钥算法用来对敏感数据、摘要、签名等信息进行加密,常用的密钥算法包括:

DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合;

3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高;

RC2和RC4:用变长密钥对大量数据进行加密,比DES快;

RSA:由RSA公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件快的长度也是可变的;

DSA(Digital Signature Algorithm):数字签名算法,是一种标准的DSS(数字签名标准);

AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高,目前AES标准的一个实现是 Rijndael算法;

BLOWFISH:它使用变长的密钥,长度可达448位,运行速度很快;

其它算法:如ElGamal、Deffie-Hellman、新型椭圆曲线算法ECC等。

2、单向散列算法
单向散列函数一般用于产生消息摘要,密钥加密等,常见的有:

MD5(Message Digest Algorithm5):是RSA数据安全公司开发的一种单向散列算法,MD5被广泛使用,可以用来把不同长度的数据块进行暗码运算成一个128位的数值;

SHA(Secure Hash Algorithm):这是一种较新的散列算法,可以对任意长度的数据运算生成一个160位的数值;

MAC(Message Authentication Code):消息认证代码,是一种使用密钥的单向函数,可以用它们在系统上或用户之间认证文件或消息。HMAC(用于消息认证的密钥散列法)就是这种函数的一个例子;

CRC(Cyclic Redundancy Check):循环冗余校验码,CRC校验由于实现简单,检错能力强,被广泛使用在各种数据校验应用中。占用系统资源少,用软硬件均能实现,是进行数据传输差错检测地一种很好的手段(CRC并不是严格意义上的散列算法,但它的作用与散列算法大致相同,所以归于此类)。

  • 鍔犲瘑鏂囦欢鐨甯哥敤绠楁硶鏈夊摢浜
    绛旓細甯歌鐨勯潪瀵圭О鍔犲瘑绠楁硶鏈塕SA銆丏SA銆丒CC绛銆3.鍝堝笇绠楁硶鍝堝笇绠楁硶鏄竴绉嶄笉鍙嗙殑鍔犲瘑鏂瑰紡銆傚畠灏嗕换鎰忛暱搴︾殑鏁版嵁杞崲鎴愬浐瀹氶暱搴︾殑鍝堝笇鍊硷紝閫氬父涓32浣嶆垨64浣嶃傚搱甯屽间笌鍘熷鏁版嵁涓嶅彲閫嗭紝鍥犳鍙互闃叉鏁版嵁琚慨鏀瑰拰绡℃敼銆傚父瑙佺殑鍝堝笇绠楁硶鏈塎D5銆丼HA-1銆丼HA-256绛夈4.娣锋矊鍔犲瘑绠楁硶娣锋矊鍔犲瘑绠楁硶鏄竴绉嶅熀浜庢贩娌岀悊璁虹殑...
  • 鍔犲瘑绠楁硶鏈夊摢浜
    绛旓細DSA锛圖igital Signature Algorithm锛夛細鏁板瓧绛惧悕绠楁硶锛屾槸涓绉嶆爣鍑嗙殑 DSS锛堟暟瀛楃鍚嶆爣鍑嗭級锛汚ES锛圓dvanced Encryption Standard锛夛細楂樼骇鍔犲瘑鏍囧噯锛屾槸涓嬩竴浠g殑鍔犲瘑绠楁硶鏍囧噯锛岄熷害蹇紝瀹夊叏绾у埆楂橈紝鐩墠 AES 鏍囧噯鐨勪竴涓疄鐜版槸 Rijndael 绠楁硶锛BLOWFISH锛屽畠浣跨敤鍙橀暱鐨勫瘑閽ワ紝闀垮害鍙揪448浣嶏紝杩愯閫熷害寰堝揩锛涘叾瀹冪畻娉曪紝濡...
  • 甯歌瀵嗙爜绠楁硶鍘熺悊
    绛旓細4. RSA瀵嗙爜绠楁硶锛歊SA鏄竴绉嶉潪瀵圭О鍔犲瘑绠楁硶锛屽畠闇瑕佷竴瀵瑰叕閽ュ拰绉侀挜鏉ュ姞瀵嗗拰瑙e瘑鏁版嵁銆俁SA绠楁硶鐨勭壒鐐规槸瀹夊叏鎬ч珮锛屽瘑閽ラ暱搴﹀彲浠ョ伒娲昏皟鏁达紝鐢ㄤ簬鏁板瓧璇佷功銆佸姞瀵嗛氫俊绛夐鍩熴備絾鏄敱浜庡姞瑙e瘑閫熷害鎱紝涓嶉傚悎澶ч噺鏁版嵁鐨勫姞瀵嗗拰瑙e瘑銆5. Base64缂栫爜锛欱ase64鏄竴绉嶇紪鐮佺畻娉曪紝鍙互灏嗕换鎰忕殑浜岃繘鍒舵暟鎹紪鐮佹垚绾枃鏈牸寮忥紝...
  • 甯哥敤鐨勫姞瀵嗙畻娉曟湁鍝簺?
    绛旓細瀵圭О瀵嗛挜鍔犲瘑 Symmetric Key Algorithm 鍙堢О涓哄绉板姞瀵嗐佺閽ュ姞瀵嗐佸叡浜瘑閽ュ姞瀵嗭細杩欑被绠楁硶鍦ㄥ姞瀵嗗拰瑙e瘑鏃朵娇鐢ㄧ浉鍚岀殑瀵嗛挜锛屾垨鏄娇鐢ㄤ袱涓彲浠ョ畝鍗曠殑鐩镐簰鎺ㄧ畻鐨勫瘑閽ワ紝瀵圭О鍔犲瘑鐨勯熷害涓鑸兘寰堝揩銆傚垎缁勫瘑鐮 鍒嗙粍瀵嗙爜 Block Cipher 鍙堢О涓衡滃垎鍧楀姞瀵嗏濇垨鈥滃潡鍔犲瘑鈥濓紝灏嗘槑鏂囧垎鎴愬涓瓑闀跨殑妯″潡锛屼娇鐢ㄧ‘瀹氱殑绠楁硶鍜屽...
  • 甯歌鐨瀵嗙爜绠楁硶鏈鍝笁绉
    绛旓細甯哥敤鐨勫姞瀵嗙畻娉曟湁鍝簺1銆瀵圭О瀵嗛挜鍔犲瘑 Symmetric Key Algorithm 鍙堢О涓哄绉板姞瀵嗐佺閽ュ姞瀵嗐佸叡浜瘑閽ュ姞瀵嗭細杩欑被绠楁硶鍦ㄥ姞瀵嗗拰瑙e瘑鏃朵娇鐢ㄧ浉鍚岀殑瀵嗛挜锛屾垨鏄娇鐢ㄤ袱涓彲浠ョ畝鍗曠殑鐩镐簰鎺ㄧ畻鐨勫瘑閽ワ紝瀵圭О鍔犲瘑鐨勯熷害涓鑸兘寰堝揩銆2銆佸绉板姞瀵嗙畻娉 瀵圭О鍔犲瘑绠楁硶鏄寚鍔犲瘑鍜岃В瀵嗛噰鐢ㄧ浉鍚岀殑瀵嗛挜锛屾槸鍙嗙殑锛堝嵆鍙В瀵嗭級銆侫ES...
  • 甯哥敤鐨勫姞瀵嗙畻娉曟湁鍝簺
    绛旓細瀵圭О鍔犲瘑绠楁硶鐢ㄦ潵瀵规晱鎰熸暟鎹瓑淇℃伅杩涜鍔犲瘑锛屽父鐢ㄧ殑绠楁硶鍖呮嫭锛欴ES锛圖ata Encryption Standard锛夛細鏁版嵁鍔犲瘑鏍囧噯锛岄熷害杈冨揩锛岄傜敤浜庡姞瀵嗗ぇ閲忔暟鎹殑鍦哄悎銆3DES锛圱riple DES锛夛細鏄熀浜嶥ES锛屽涓鍧楁暟鎹敤涓変釜涓嶅悓鐨勫瘑閽ヨ繘琛屼笁娆″姞瀵嗭紝寮哄害鏇撮珮銆侫ES锛圓dvanced Encryption Standard锛夛細楂樼骇鍔犲瘑鏍囧噯锛屾槸涓嬩竴浠g殑鍔犲瘑...
  • 甯歌鐨缂栫爜鍜鍔犲瘑绠楁硶鏈夊摢浜
    绛旓細甯歌鐨缂栫爜鍜鍔犲瘑绠楁硶鍖呮嫭ASCII缂栫爜銆乁TF-8缂栫爜銆丄ES鍔犲瘑銆丷SA鍔犲瘑绛夈1. ASCII缂栫爜 ASCII (American Standard Code for Information Interchange) 鏄渶鍩虹鐨勫瓧绗︾紪鐮佹柟寮忋傚畠鐢7浣嶈〃绀轰竴涓瓧绗︼紝鎬诲叡鍙互琛ㄧず128涓瓧绗︼紝鍖呮嫭鑻辨枃瀛楁瘝锛堝ぇ鍐欏拰灏忓啓锛夈佹暟瀛椼佹爣鐐圭鍙枫佹帶鍒跺瓧绗︾瓑銆傜敱浜庡叾绠鍗曟槗鎳傦紝琚箍娉...
  • 甯歌鐨瀵嗙爜绠楁硶鏈夊摢浜?
    绛旓細2銆佲滃父瑙勫瘑鐮佲濓紝鍙堢О涓衡滃崟閽ュ瘑鐮佲濓紝鈥滃绉板瘑鐮佲濄3銆佲滃叕寮閽ュ瘑鐮佲濓紝鍙堢О涓衡滃弻閽ュ瘑鐮佲濓紝鈥滈潪瀵圭О瀵嗙爜鈥濄4銆 鍩轰簬韬唤鐨勫瘑鐮併5銆乀riple DES浣跨敤涓や釜鐙珛鐨56bit瀵嗛挜瀵逛氦鎹㈢殑淇℃伅杩涜3娆鍔犲瘑锛屼粠鑰屼娇鍏舵湁鏁堥暱搴﹁揪鍒112bit銆俁C2鍜孯C4鏂规硶鏄疪SA鏁版嵁瀹夊叏鍏徃鐨勫绉板姞瀵嗕笓鍒绠楁硶锛屽畠浠噰鐢ㄥ彲鍙...
  • 瀵嗙爜浣撳埗涓,鍔犲瘑绠楁硶涓鑸垎涓哄摢鍑犵?
    绛旓細鍏朵粬甯歌鐨勫姞瀵嗙畻娉 1銆丏ES绠楁硶鏄瘑鐮佷綋鍒朵腑鐨勫绉板瘑鐮佷綋鍒讹紝鎶64浣嶇殑鏄庢枃杈撳叆鍧楀彉涓64浣嶇殑瀵嗘枃杈撳嚭鍧楋紝瀹冩墍浣跨敤鐨勫瘑閽ヤ篃鏄64浣嶃2銆3DES鏄熀浜嶥ES鐨勫绉扮畻娉曪紝瀵逛竴鍧楁暟鎹敤涓変釜涓嶅悓鐨勫瘑閽ヨ繘琛屼笁娆″姞瀵嗭紝寮哄害鏇撮珮銆3銆丷C2鍜孯C4鏄绉扮畻娉曪紝鐢ㄥ彉闀垮瘑閽ュ澶ч噺鏁版嵁杩涜鍔犲瘑锛屾瘮DES蹇4銆両DEA绠楁硶鏄湪...
  • 甯歌鐨勫姞瀵嗙畻娉銆佸師鐞嗐佷紭缂虹偣銆佺敤閫
    绛旓細鍥剧ず锛歁D5銆乻ha1銆乻ha224绛夌瓑 瀵嗛挜浜ゆ崲IKE锛圛nternet Key Exchange锛夐氬父鏄寚鍙屾柟閫氳繃浜ゆ崲瀵嗛挜鏉ュ疄鐜版暟鎹鍔犲瘑鍜岃В瀵 甯歌鐨瀵嗛挜浜ゆ崲鏂瑰紡鏈変笅闈袱绉嶏細灏嗗叕閽ュ姞瀵嗗悗閫氳繃缃戠粶浼犺緭鍒板鏂硅繘琛岃В瀵嗭紝杩欑鏂瑰紡缂虹偣鍦ㄤ簬鍏锋湁寰堝ぇ鐨勫彲鑳芥ц鎷︽埅鐮磋В锛屽洜姝や笉甯哥敤 DH绠楁硶鏄竴绉嶅瘑閽ヤ氦鎹㈢畻娉曪紝鍏舵棦涓嶇敤浜庡姞瀵嗭紝涔熶笉浜х敓鏁板瓧...
  • 扩展阅读:10种常用的加密算法 ... 目前常用的加密方法 ... 常用的加密方法四种 ... 常用的加密方法有几种 ... 常用的四种加密方式 ... 最简单的加密算法 ... 常见的加密算法三类 ... 常见的加密方法 ... 常见的三种简单加密算法 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网