常用的加密算法

21 篇文章 0 订阅
订阅专栏

一。摘要算法

    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);
	}
    2》SHA算法Secure Hash Algorithm(安全hash算法) 安全散列算法(hash函数 将原始信息压缩 返回散列值)可以是SHA-1,SHA1是目前最安全

的摘要算法 摘要的长度为 20字节 

     其他的SHA 包括 SHA-256(32字节)

    

public static void main(String[] args) throws NoSuchAlgorithmException {
		MessageDigest md=MessageDigest.getInstance("SHA") ;//或者SHA-1 SHA1
		String code="hello";
		byte[] bt=md.digest(code.getBytes());
		System.out.println(bt.length);
		
	}

二。编码和解码

   1》16进制 编码  计算机系统使用 2进制 为了编写存储方便一般将2进制 转换为16进制字符串 其中base64也是其中类似转换一种 16进制编码和base64都是

可逆的 一般用于存储

public static byte[] toByte(String src){
		ByteArrayOutputStream baos=new ByteArrayOutputStream();
		for(int i=0;i<src.length();i=i+2){
			char fchar=src.charAt(i);
			char nchar=src.charAt(i+1);
			byte srcb=0;
			if(fchar=='0'){
				srcb=Byte.parseByte(nchar+"", 16);
			}else{
				srcb=(byte)(Integer.parseInt(fchar+""+nchar, 16));
			}
			baos.write(srcb);
		}
		return baos.toByteArray();
	}
	
	
	public static String toHex(byte[] src){
		StringBuffer sb=new StringBuffer();
		for(byte s:src){
			//0XFF表示  8位的 11111111  和它&后 只剩下 8位 其他位都为0
			String result=Integer.toHexString(s&0xFF);
			if(result.length()==1){
				result='0'+result;
			}
			sb.append(result);
		}
		return sb.toString();
	}

  

 2》Base64编码  用于将字节数组和字符串互相转换

public static void main(String[] args) throws NoSuchAlgorithmException, IOException {
		byte[] src="hello".getBytes();
		//摘要出来的结果为字节数组  存储到数据库不方便
		MessageDigest md=MessageDigest.getInstance("SHA") ;
		byte[] bt=md.digest(src);
		//使用base64转换为字符串方便存储
		BASE64Encoder base=new BASE64Encoder();
		String str=base.encode(bt);
		System.out.println(str);
		
		//还原成字节数组
		BASE64Decoder de=new BASE64Decoder();
		byte[] bts=de.decodeBuffer(str);
		System.out.println(bt.length==bts.length);
	}

三。对称加密

   1》DES算法 (Data Encryptin Standard) 是对称加密算法的一种 使用秘钥加解密  秘钥必须是56字节  

      概念解释:

            秘钥 :用于加密和解密的钥匙  秘钥可以使用 getEncoded方法 获取byte[] 存储在文件系统中

            公钥和私钥:用于非对称加密的钥匙 公钥加密 私钥解密  私钥一般用于解密所以私钥一般存储在密钥库中

            口令:一般是自定义的字符串  可以通过口令和盐生成秘钥 

/**
	 * 生成56字节的秘钥
	 */
	public static SecretKey genKey(int len) throws NoSuchAlgorithmException{
		KeyGenerator kg=KeyGenerator.getInstance("DES");
		kg.init(len);
		return kg.generateKey();
	}
	public static void main(String[] args) throws Exception {
		//SecretKey sk=new SecretKeySpec(kl.getBytes(), "DES");
		SecretKey sk=genKey(57);
		//---------加密
		String password="tiger";
		Cipher cipher=Cipher.getInstance("DES");
		cipher.init(Cipher.ENCRYPT_MODE, sk);
		//被加密之后获取的字节数组
		byte[] mcontent=cipher.doFinal(password.getBytes());
		//---------解密
		Cipher cipher1=Cipher.getInstance("DES");
		cipher1.init(Cipher.DECRYPT_MODE, sk);
		System.out.println(new String(cipher1.doFinal(mcontent)));
		
	
	}

   2》AES算法 (Advanced Encryptin Standard 高级加密标准) 是对称加密算法一种升级 因为 56位秘钥 在计算机系统性能越来越高的前提下 56位很容易被

  破解 所以 AES将秘钥的长度提高到128, 192 or 256  必须是这三个数 128默认可以使用  192和256由于美国限制 需要相关授权 否则抛出异常

public static final String AL="AES";
	/**
	 * 生成56字节的秘钥
	 */
	public static SecretKey genKey(int len) throws NoSuchAlgorithmException{
		KeyGenerator kg=KeyGenerator.getInstance(AL);
		kg.init(len);
		return kg.generateKey();
	}
	public static void main(String[] args) throws Exception {
		//SecretKey sk=new SecretKeySpec(kl.getBytes(), "DES");
		SecretKey sk=genKey(128);
		//---------加密
		String password="tiger";
		Cipher cipher=Cipher.getInstance(AL);
		cipher.init(Cipher.ENCRYPT_MODE, sk);
		//被加密之后获取的字节数组
		byte[] mcontent=cipher.doFinal(password.getBytes());
		//---------解密
		Cipher cipher1=Cipher.getInstance(AL);
		cipher1.init(Cipher.DECRYPT_MODE, sk);
		System.out.println(new String(cipher1.doFinal(mcontent)));
		
	
	}

 3》PBE算法(Password Base Encryption) 基于自定义口令的加解密算法  定义口令 同时还必须定义 盐和 使用盐混淆的次数 

加解密过程中 该三个参数都必须一致

//盐 用于将明文进行多次混淆
	static byte[] salt = new byte[8];
	static Random r = new Random();
	static int saltCount=100;
	static{
		r.nextBytes(salt);
	}
	public static final String AL="PBEWithMD5AndDES";
	/**
	 * 生成自定义口令的秘钥
	 */
	public static SecretKey genKey(String kl) throws Exception{
		char[] klChar=kl.toCharArray();
		PBEKeySpec pbe=new PBEKeySpec(klChar);
		SecretKeyFactory skf=SecretKeyFactory.getInstance(AL);
		return skf.generateSecret(pbe);
	}
	/**
	 * 使用口令和盐进行加密
	 */
	public static  byte[] encrypt(SecretKey key,byte[] src) throws Exception{
		Cipher cipher=Cipher.getInstance(AL);
		//使用口令  盐(100次混淆)
		PBEParameterSpec parameter=new PBEParameterSpec(salt, saltCount);
		cipher.init(Cipher.ENCRYPT_MODE, key,parameter);
		//被加密之后获取的字节数组
		byte[] mcontent=cipher.doFinal(src);
		return mcontent;
	}
	/**
	 * 使用口令和盐进行解密  盐和口令和混淆的次数都必须和加密之前一致
	 */
	public static byte[] decrypt(SecretKey key,byte[] src) throws Exception{
		Cipher cipher=Cipher.getInstance(AL);
		//使用口令  盐(100次混淆)
		PBEParameterSpec parameter=new PBEParameterSpec(salt, saltCount);
		cipher.init(Cipher.DECRYPT_MODE, key,parameter);
		//被加密之后获取的字节数组
		byte[] mcontent=cipher.doFinal(src);
		return mcontent;
	}
	
	
	public static void main(String[] args) throws Exception {
		//SecretKey sk=new SecretKeySpec(kl.getBytes(), "DES");
		SecretKey sk=genKey("123456");
		//---------加密
		String password="tiger";
		byte[] mw=encrypt(sk, password.getBytes());
		//---------解密
		System.out.println(new String(decrypt(sk, mw)));
	}


四。非对称加密

  1》DH算法  是一种对称加密到非对称加密的过度算法 使用DH算法生成密钥对 使用对称加密算法获取秘钥后 进行加解密 双方必须都存在公钥和私钥

 

模型分析

    我们以消息传递模型为例,甲方作为发送者,乙方作为接受者,分述甲乙双方如何构建密钥、交互密钥和加密数据。

    首先,甲乙双方需要在收发消息前构建自己的密钥对,如图1所示。


甲乙双方构建密钥需要经过以下几个步骤:

    1)由消息发送的一方构建密钥,这里由甲方构建密钥。

    2)由构建密钥的一方向对方公布其公钥,这里由甲方向乙方发布公钥。

    3)由消息接收的一方通过对方公钥构建自身密钥,这里由乙方使用甲方公钥构建乙方密钥。

    4)由消息接收的一方向对方公布其公钥,这里由乙方向甲方公布公钥。

    这里要注意的是,乙方构建自己密钥对的时候需要使用甲方公钥作为参数这是很关键的一点,如果缺少了这一环节则无法确保甲乙双方获得同一个密钥,消息加密更无从谈起。

    其次,假设甲乙双方事先约定好了用于数据加密的对称加密算法(如AES算法),并构建本地密钥(即对称加密算法中的密钥),如图2所示。


甲方需要使用自己的私钥和乙方的公钥才能构建自己的本地密钥,乙方需要使用自己的私钥和甲方的公钥才能构建自己的本地密钥。

    虽然甲乙双方使用了不同的密钥来构建本地密钥,但是甲乙两方得到的密钥其实是一致的,后面的demo可以证明,也正是基于此,甲乙双方才能顺利地进行加密消息的传送。

    最后,甲乙双方构建了本地密钥后,可按照基于对称加密算法的消息传递模型完成消息传递。如图4所示。


作为对称加密体制向非对称加密体制的一种过渡,DH算法仅仅比一般的对称加密算法多了密钥对的构建和本地密钥的构建这两项操作,而真正的数据加密/解密操作仍由对称加密算法完成。

测试代码:

public static void main(String[] args) throws Exception {
		// 生成DH密钥对
		KeyPairGenerator kpg=KeyPairGenerator.getInstance("DH");
		kpg.initialize(512);
		KeyPair kp=kpg.generateKeyPair();
		PublicKey pk=kp.getPublic();
		PrivateKey prk=kp.getPrivate();
		//实例化  
        KeyAgreement keyAgree = KeyAgreement.getInstance("DH");  
        //初始化  
        keyAgree.init(prk);  
        keyAgree.doPhase(pk, true);  
        //生成本地密钥  
        SecretKey secretKey = keyAgree.generateSecret("DES");  

        //还是使用对称方式加解密
		//使用本地秘钥加密
		Cipher cip=Cipher.getInstance("DES");
		cip.init(Cipher.ENCRYPT_MODE, secretKey);
		byte[] mw=cip.doFinal("test".getBytes());
		//使用本地秘钥解密
		Cipher cip1=Cipher.getInstance("DES");
		cip1.init(Cipher.DECRYPT_MODE, secretKey);
		System.out.println(new String(cip1.doFinal(mw)));
		
	}

dh算法过程:

package alao;

import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.util.Base64;

import javax.crypto.Cipher;
import javax.crypto.KeyAgreement;
import javax.crypto.SecretKey;
import javax.crypto.interfaces.DHPublicKey;
import javax.crypto.spec.DHParameterSpec;

public class DH {
	
	public static KeyPair genernateKeyPair() throws NoSuchAlgorithmException {
	    KeyPairGenerator kpg=KeyPairGenerator.getInstance("DH");  
        kpg.initialize(512);  
        KeyPair kp=kpg.generateKeyPair();  
	    return kp;
	}
	public static byte[] encrypt(SecretKey secretKey,byte[] data) throws Exception
	   {
	      // 数据加密
	      Cipher cipher = Cipher.getInstance(secretKey.getAlgorithm());
	      cipher.init(Cipher.ENCRYPT_MODE, secretKey);

	      return cipher.doFinal(data);
	   }
	public static byte[] decrypt(SecretKey secretKey,byte[] data) throws Exception
	   {
	      // 数据加密
	      Cipher cipher = Cipher.getInstance(secretKey.getAlgorithm());
	      cipher.init(Cipher.DECRYPT_MODE, secretKey);
	      return cipher.doFinal(data);
	   }
	public static void main(String[] args) throws Exception {
		//生成A用户的公私钥对
		KeyPair apair=genernateKeyPair();
		PublicKey apubKey=apair.getPublic();
		System.out.println("B接受到A的公钥:"+Base64.getEncoder().encodeToString(apubKey.getEncoded()));
		
		//生成B用户的公私钥对
		//A和B协商生成对象加密的秘钥过程
	    //1 A发送公钥给B 模拟获取变量  传送b过程 getEncode获取byte数组后 转换base64 传送
        DHParameterSpec dhParameterSpec = ((DHPublicKey)apair.getPublic()).getParams();  
        KeyPairGenerator kpg=KeyPairGenerator.getInstance("DH");   
        kpg.initialize(dhParameterSpec);//传入A的公钥
        KeyPair bpair=kpg.generateKeyPair();  
		
		
		//2 B通过A的公钥和自己的公私钥 生成秘钥
		 //实例化    
        KeyAgreement keyAgree = KeyAgreement.getInstance("DH");    
        
        //传入B的私钥和A的公钥 
        keyAgree.init(bpair.getPrivate());    
        keyAgree.doPhase(apair.getPublic(), true);    
        //生成本地密钥    
        SecretKey secretKey = keyAgree.generateSecret("DES");  
        System.out.println("此时A生成了秘钥:"+Base64.getEncoder().encodeToString(secretKey.getEncoded()));
	
        //4 A通过B的公钥和自己的公私钥 生成秘钥
		 //实例化    
       keyAgree = KeyAgreement.getInstance("DH");    
       //传入A的私钥和B的公钥 
       keyAgree.init(apair.getPrivate());    
       keyAgree.doPhase(bpair.getPublic(), true);    
       //生成本地密钥    
       SecretKey secretKey1 = keyAgree.generateSecret("DES");  
       System.out.println("此时B生成了秘钥:"+Base64.getEncoder().encodeToString(secretKey1.getEncoded()));
	
	
	   byte[] bbb=encrypt(secretKey, "hello".getBytes());
	   System.out.println(new String(decrypt(secretKey1, bbb)));
	
	}
	
}

2》RSA算法  目前影响力最大的非对称加密算法  一般公钥对外公开 加密后传送给服务器 服务器使用独有的私钥解密(当然也可以私钥加密 公钥解密 一般不这样 因为谁都有公钥都能解密 加密就没有意义了) 加密的数据在传输过程是 无法破解的  秘钥对初始化大小必须是64的倍数  实际值 只能在512-1024中


public static void main(String[] args) throws Exception {
		// 生成RSA密钥对
		KeyPairGenerator kpg=KeyPairGenerator.getInstance("RSA");
		kpg.initialize(512);
		KeyPair kp=kpg.generateKeyPair();
		PublicKey pk=kp.getPublic();
		PrivateKey prk=kp.getPrivate(); 

		//公钥加密
		Cipher cip=Cipher.getInstance("RSA");
		cip.init(Cipher.ENCRYPT_MODE, pk);
		byte[] mw=cip.doFinal("test".getBytes());
		//私钥解密
		Cipher cip1=Cipher.getInstance("RSA");
		cip1.init(Cipher.DECRYPT_MODE, prk);
		System.out.println(new String(cip1.doFinal(mw)));
		
	}

RSA算法中 一般公钥和私钥都都可以调用getEncoded()转换为byte数组 使用base64编码后 存储在文件中 方便公钥分发 读取文件后需要转换对应

的公钥和私钥的方法为:

/**
	 * 读取公钥字节数组转换为对象
	 * @throws Exception 
	 */
	public PublicKey getPub(byte[] bt) throws Exception{
		X509EncodedKeySpec x=new X509EncodedKeySpec(bt);
		KeyFactory fac=KeyFactory.getInstance("RSA");
		return fac.generatePublic(x);
	}
	/**
	 * 读取私钥字节数组转换为对象
	 * @throws Exception 
	 */
	public PrivateKey getPri(byte[] bt) throws Exception{
		PKCS8EncodedKeySpec x=new PKCS8EncodedKeySpec(bt);
		KeyFactory fac=KeyFactory.getInstance("RSA");
		return fac.generatePrivate(x);
	}
	


五。数据签名(DSA)

   签名是非对称加密技术和摘要技术的综合运用用户A将明文和使用私钥加密的明文摘要一起发送给用户B 用户B使用公钥解密出摘要 然后使用相同的摘要

算法将明文摘要  将两个摘要字符串比较如果相等 则表明内容没有被篡改

  原理实现过程如下

public static void main(String[] args) throws Exception {
		//获取公钥和私钥
		KeyPairGenerator kpg=KeyPairGenerator.getInstance("RSA");
		kpg.initialize(512);
		KeyPair kp=kpg.generateKeyPair();
		PublicKey pk=kp.getPublic();
		PrivateKey prk=kp.getPrivate(); 
		//使用私钥签名
		String message="hello my name is jiaozi";
		//返回的byte就可以进行传输
		byte[] srcByte=sign(message.getBytes(),prk);
		//假设这里模拟篡改数据 肯定会出现异常 或者检验不通过
		srcByte[9]=10;
		//存在公钥的用户 接受到该srcByte 就可以验证是否被篡改
		System.out.println(verify(srcByte,pk));
	}
	/**
	 * 签名过程
	 */
	public static byte[] sign(byte[] content,PrivateKey pk) throws Exception{
		//对明文进行摘要
		MessageDigest md=MessageDigest.getInstance("MD5");
		byte[] zy=md.digest(content);
		
		//对摘要进行加密
		Cipher cp=Cipher.getInstance("RSA");
		cp.init(Cipher.ENCRYPT_MODE, pk);
		byte[] enZy=cp.doFinal(zy);
		//要一起传送的数据 双方约定好使用Map
		Map map=new HashMap();
		map.put("content", content);
		map.put("enZy", enZy);
		//传输过程使用byte数组 这里使用序列化将对象打包转换为字节数组
		ByteArrayOutputStream baos=new ByteArrayOutputStream();
	    ObjectOutputStream oos=new ObjectOutputStream(baos);
	    oos.writeObject(map);
	    oos.close();
	    return baos.toByteArray();
	}
	
	/**
	 * 验证签名过程
	 */
	public static boolean verify(byte[] content,PublicKey pk) throws Exception{
		//将获取的数据转换为Map 
		ByteArrayInputStream baos=new ByteArrayInputStream(content);
	    ObjectInputStream oos=new ObjectInputStream(baos);
	    Map map=(Map)oos.readObject();
	    oos.close();
	    //获取到明文和加密的摘要信息
	    byte[] srcContent=(byte[])map.get("content");
	    byte[] enZy=(byte[])map.get("enZy");
	    
	    //使用相同的摘要算法 将明文摘要
	    MessageDigest md=MessageDigest.getInstance("MD5");
		byte[] contentZy=md.digest(srcContent);
	    //将加密的摘要解密
		Cipher cp=Cipher.getInstance("RSA");
		cp.init(Cipher.DECRYPT_MODE, pk);
		byte[] zy=cp.doFinal(enZy);
		BASE64Encoder bas=new BASE64Encoder();
		if(bas.encode(contentZy).equals(bas.encode(zy))){
			return true;
		}
		return false;
	}
自己实现这个过程略显复杂 java提供了MD5WithRSA和SHA1WithRAS算法直接实现上述过程

public static void main(String[] args) throws Exception {
			//获取公钥和私钥
			KeyPairGenerator kpg=KeyPairGenerator.getInstance("RSA");
			kpg.initialize(512);
			KeyPair kp=kpg.generateKeyPair();
			PublicKey pk=kp.getPublic();
			PrivateKey prk=kp.getPrivate(); 
			//使用私钥签名
			String message="hello my name is jiaozi";
			//返回的byte和明文就可以进行传输
			byte[] hash=sign(message.getBytes(),prk);
			//存在公钥的用户 接受到该srcByte 就可以验证是否被篡改
			System.out.println(verify(message.getBytes(),hash,pk));
			
			
		}
		/**
		 * 签名过程 返回的是加密的摘要
		 */
		public static byte[] sign(byte[] content,PrivateKey pk) throws Exception{
			Signature si=Signature.getInstance("MD5WithRSA");//或者使用SHA1WithRSA
		    si.initSign(pk);
		    si.update(content);
		    return si.sign();
		}
		
		/**
		 * 验证签名过程  content表示原文可能获取原文的hash  hash表示sign函数返回的加密摘要
		 */
		public static boolean verify(byte[] content,byte[] hash,PublicKey pk) throws Exception{
			Signature si=Signature.getInstance("MD5WithRSA");//或者使用SHA1WithRSA
			si.initVerify(pk);
			si.update(content);
			return si.verify(hash);
		}



常见加密算法概述
03-25
常见加密算法概述
C语言常用加密算法.rar
09-16
本资源包"**C语言常用加密算法.rar**"可能包含了多个C语言实现的经典加密算法源代码,帮助开发者深入理解和应用这些算法。 首先,我们来看看几种常见的加密算法: 1. **DES(Data Encryption Standard)数据加密...
常用加密算法
杨思默
10-27 400
加密算法是为了保护数据的安全性而设计的。常见的加密算法包括哈希算法、对称加密和非对称加密。本文将介绍这些加密算法的原理和应用。加密算法是计算机安全领域的重要内容之一,用于保护数据的安全性和机密性。常见的加密算法包括对称加密算法、非对称加密算法和哈希算法等。对称加密算法是指加密和解密使用相同密钥的加密算法,常见的对称加密算法有DES、3DES、AES等。对称加密算法的优点是加密和解密速度快,适用于大量数据加密,但密钥的管理和分发比较困难。
常见的七种加密算法及实现
最新发布
harmful_sheep的博客
07-12 1627
以。
常用加密算法概述
weixin_33698043的博客
06-30 439
2019独角兽企业重金招聘Python工程师标准>>> ...
常见加密算法简介
lilonglongwz1的专栏
12-04 833
本文介绍常见的算法(MD5/SHA,DSA,RSA,DES)的应用场景,以及在java上的使用方法. 1)      MD5/SHA MessageDigest是一个数据的数字指纹.即对一个任意长度的数据进行计算,产生一个唯一指纹号. MessageDigest的特性: A)     两个不同的数据,难以生成相同的指纹号 B)      对于指定的指纹号,难以逆向计算出原始数据 代表:
加密算法介绍及如何选择加密算法
IcyCoffee
05-18 2718
加密算法介绍褚庆东 一.          密码学简介据记载,公元前400年,古希腊人发明了置换密码。1881年世界上的第一个电话保密专利出现。在第二次世界大战期间,德国军方启用“恩尼格玛”密码机,密码学在战争中起着非常重要的作用。随着信息化和数字化社会的发展,人们对信息安全和保密的重要性认识不断提高,于是在1997年,美国国家标准局公布实施了“美国数据加密标准(DES)”,民
常见的加密算法
热门推荐
xiatiancc的专栏
11-08 2万+
加密算法,是现在每个软件项目里必须用到的内容。广泛应用在包括了用户登入、数字签名、数据传输等多个场合。那大家都知道那些呢?今天我把常见的加密算法全部整理在这里,供大家学习参考。 首先,大家要知道加密算法能干什么,利用加密算法来对数据通信的过程进行加密传输是一种最常见的安全手段。利用该手段能够达到一下三个目的: 1、数据保密性,防止用户数据被窃取或泄露; 2、数据完整性,防止用户传输的数据被篡改; 3、通信双方身份确认,确保数据来源合法; 常见的加密算法 目前常见的加密算法分类如下: 1,.
常用加密算法+软件相关+各种常用加密算法
06-20
RSA是最流行的公钥加密算法之一,广泛用于数字签名和密钥交换。 加密过程: RSA加密使用公钥进行加密,解密则使用私钥。 数字签名: RSA可以用于生成和验证数字签名,确保消息的完整性和认证性。 3.3 ElGamal...
基于C++实现对常用加密算法改进及对抗思路源码+项目说明(含哈希、对称、校验码、编码格式等加密).zip
03-24
基于C++实现对常用加密算法改进及对抗思路源码+项目说明(含哈希、对称、校验码、编码格式等加密).zip基于C++实现对常用加密算法改进及对抗思路源码+项目说明(含哈希、对称、校验码、编码格式等加密).zip基于C++...
技术分析:常用加密算法比较
09-20
常用加密算法,如DES/3DES/MD2/MD4/MD5/SHA256/SHA512/PANANA/RIPEMD/HAVAL/WHIRLPOOL等等。 从输出大小,内部大小,区块大小,长度大小,字符尺寸,碰撞情形等方面进行比较。
常用加密算法介绍
记录 IT 领域经验与见解的博客
04-24 7518
RSA算法的加密过程包括选择两个大的质数、求出模数、生成公钥和私钥、加密和解密等操作。AES算法是目前最流行的对称密钥加密算法之一,它使用128、192或256位的密钥来加密数据。3DES算法是DES算法的加强版,它使用3个56位的密钥来加密数据。3DES算法的加密过程包括3个DES算法的轮次,每个轮次都使用不同的密钥进行加密。DES算法的加密过程包括16个轮次的变换,每个轮次都包括置换、代换、移位和异或等操作。SHA-2算法是一种哈希算法,它将任意长度的消息映射为256、384或512位的哈希值。
常见的加密方式总结(哈希算法、对称、非对称)
m0_60469045的博客
04-06 4490
哈希算法是一种用数学方法对数据生成一个固定长度的唯一标识的技术,可以用来验证数据的完整性和一致性,常见的哈希算法有 MD、SHA、MAC 等。 对称加密算法是一种加密和解密使用同一个密钥的算法,可以用来保护数据的安全性和保密性,常见的对称加密算法有 DES、3DES、AES 等。 非对称加密算法是一种加密和解密使用不同的密钥的算法,可以用来实现数据的安全传输和身份认证,常见的非对称加密算法有 RSA、DSA、ECC 等。
加密与安全——数字证书
weixin_46722612的博客
03-16 550
我们知道,摘要算法用来确保数据没有被篡改,非对称加密算法可以对数据进行加解密,签名算法可以确保数据完整性和抗否认性,把这些算法集合到一起,并搞一套完善的标准,这就是数字证书。 因此,数字证书就是集合了多种密码学算法,用于实现数据加解密、身份认证、签名等多种功能的一种安全标准。 数字证书可以防止中间人攻击,因为它采用链式签名认证,即通过根证书(Root CA)去签名下一级证书,这样层层签名,直到最终的用户证书。而Root CA证书内置于操作系统中,所以,任何经过CA认证的数字证书都可以对其本身进行校验,确保证
常见加密算法介绍
qq_39939541的博客
07-11 4800
随着计算机和技术的发展,密码学家和黑客之间的竞争变得更加激烈,破解密码的技术也不断进步。但需要注意的是,随着计算技术的发展,SHA算法的某些变种也可能会面临安全性的挑战,因此在选择哈希算法时应考虑最新的安全标准和推荐算法。安全性:SHA算法设计时考虑了MD5算法存在的一些弱点,并采用了更复杂的算法结构和更多的运算步骤,增加了抗碰撞和抗碰撞攻击的能力。算法长度:SHA-256生成的哈希值长度为256位,相对于较短的哈希算法(如MD5和SHA-1),SHA-256生成的哈希值较长,可能会占用更多的存储空间。
常用的加密方式
六月长安的博客
01-24 1838
对称加密、单向加密、base64、AES、DES、SHA、MD5、RSA
前端常用加密算法和特点
05-25
前端常用加密算法包括: 1. 对称加密算法:如AES(Advanced Encryption Standard)、DES(Data Encryption Standard)和3DES(Triple Data Encryption Standard),特点是加密解密速度快,但密钥安全性较低。 2. 非对称加密算法:如RSA(Rivest-Shamir-Adleman)和ECC(Elliptic Curve Cryptography),特点是加密解密速度较慢,但密钥安全性较高。 3. 哈希算法:如MD5(Message-Digest Algorithm 5)和SHA(Secure Hash Algorithm),特点是不可逆且不同的明文生成的哈希值相同的概率极小。 4. 对称加密算法与非对称加密算法结合使用:如SSL(Secure Socket Layer)和TLS(Transport Layer Security),通过使用对称加密算法加密通信过程中的数据,使用非对称加密算法加密密钥,从而兼顾了加密速度和密钥安全性。 常用加密算法的特点主要包括: 1. 加密强度:指加密算法对攻击者破解的难度,一般用密钥长度来衡量,密钥长度越长,加密强度越高。 2. 加密速度:指加密算法对数据加密、解密的速度,一般对称加密算法速度较快,非对称加密算法速度较慢。 3. 密钥管理:指加密算法对密钥生成、存储、分发和更新的支持程度,一般非对称加密算法需要密钥管理较为复杂。 4. 可逆性:指加密算法是否支持加密后数据可逆解密,对称加密算法和非对称加密算法的可逆性不同。 5. 安全性:指加密算法的安全性是否被攻击者破解,一般安全性高的加密算法需要较高的加密强度和密钥管理。
写文章

热门文章

  • 当oracle出现 格式与字符串格式不匹配解决办法 78179
  • ETL工具-Kettle Spoon教程 77563
  • centos7切换图像界面和dos界面 60981
  • 深度学习02-神经网络(MLP多层感知器) 53423
  • oracle job的创建和删除 46683

分类专栏

  • transformers 1篇
  • 大数据 7篇
  • 管理 1篇
  • php 1篇
  • 前端 6篇
  • 网络 1篇
  • go 2篇
  • servlet教程
  • activeMQ 4篇
  • ant 4篇
  • apache abdera 1篇
  • axis 2篇
  • C# 6篇
  • C++ 35篇
  • css 7篇
  • CXF 5篇
  • dwr 1篇
  • eclipse插件开发 18篇
  • extjs 3篇
  • Freemarker
  • ftp 2篇
  • hibernate 10篇
  • ibatis 6篇
  • installshield 5篇
  • JasperReport 6篇
  • javamail 4篇
  • javascript 32篇
  • javaweb 5篇
  • java基础 71篇
  • java数据结构 16篇
  • jboss 3篇
  • jdbc 6篇
  • jndi 3篇
  • jquery 8篇
  • Json 4篇
  • jxl 1篇
  • LDAP 2篇
  • linux 57篇
  • lucene+quartz 17篇
  • memcached 1篇
  • mysql 14篇
  • ORACLE 71篇
  • OSGI 2篇
  • PowerDesigner
  • rmi 2篇
  • RPC 2篇
  • Spring 24篇
  • struts 5篇
  • svn架设 5篇
  • UML 2篇
  • vbscript 11篇
  • webservice 2篇
  • web服务器 7篇
  • XML 3篇
  • 免费空间 1篇
  • 其他 32篇
  • 分布式应用 62篇
  • 多线程 13篇
  • 安全性 21篇
  • 技巧性文章 3篇
  • 数字证书 8篇
  • 数据库 90篇
  • 数据库系统原理 1篇
  • 服务器 5篇
  • 标签 1篇
  • 模式 3篇
  • 正则表达式 3篇
  • 项目管理 11篇
  • 武术
  • 硬件和系统 7篇
  • 软件工程 2篇
  • photoshop技巧 2篇
  • 汇编 27篇
  • cjdbc 3篇
  • 游戏 5篇
  • 驱动
  • 测试 5篇
  • office 2篇
  • sap 2篇
  • 系统学ORACLE 19篇
  • hadoop 5篇
  • 系统学驱动开发 1篇
  • android 10篇
  • redis 1篇
  • zookeeper 3篇
  • maven 5篇
  • python 4篇
  • 机器学习 10篇
  • 容器 10篇

最新评论

  • 深度学习03-卷积神经网络(CNN)

    FrodoBg: 表情包

  • 深度学习02-神经网络(MLP多层感知器)

    上课玩手机。。: 很好的文章

  • Transformers实战05-模型量化

    ha_lydms: 博主文章写的十分细致,结构严谨。感谢博主分享,期待博主持续输出好文,同时也希望可以来我博客指导我一番。

  • 深度学习04-CNN经典模型

    m0_57507825: 第五层池化之后应该是6×6吧,不是13×13

  • Transformer模型详解03-Self-Attention(自注意力机制)

    新西兰做的饭: 最后的代码矩阵乘法的维度有问题

最新文章

  • Transformers实战05-模型量化
  • Transformers实战04-微调gpt-2生成python代码。
  • Transformers实战03-PEFT库使用LORA方法微调VIT图像分类。
2024年10篇
2023年22篇
2022年15篇
2021年4篇
2020年7篇
2019年25篇
2018年49篇
2017年79篇
2016年25篇
2015年47篇
2014年24篇
2013年29篇
2012年67篇
2011年86篇
2010年255篇
2009年59篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家宁德玻璃钢广场雕塑厂家最大的玻璃钢雕塑基地民裕人物玻璃钢雕塑松江区镜面玻璃钢雕塑推荐关于玻璃钢雕塑玻璃钢佛像雕塑厂家价格成品玻璃钢雕塑摆件有哪些玻璃钢奔马雕塑滁州玻璃钢雕塑景观设计和田气球商场美陈怎样收费日照玻璃钢卡通雕塑定制深圳厂家玻璃钢雕塑公司深圳关公玻璃钢雕塑定做厂家公园摆件玻璃钢卡通雕塑费用玻璃钢卡通雕塑安装固定玻璃钢雕塑苏厂家绍兴玻璃钢雕塑制作厂家玻璃钢雕塑骨架怎么固定玻璃钢雕塑节庆美陈小品海口玻璃钢雕塑的设计精准推荐玻璃钢海豚雕塑介绍濮阳公园景观玻璃钢雕塑厂家太湖玻璃钢仿真水果雕塑玻璃钢雕塑保证几年日照玻璃钢雕塑订购丽水玻璃钢仿铜雕塑厂家玻璃钢酒店人物雕塑供应商北京龙虾玻璃钢雕塑厂家开玻璃钢雕塑加工厂怎么样濮阳玻璃钢雕塑制作流程香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化