精华内容
下载资源
问答
  • 不安全的加密算法
    千次阅读
    2021-03-24 14:32:15

    不安全的加密算法

    【SKIPJACK\RC4\RSA】(1024位以下) des、md2、md4、md5

    属于经过验证、安全的、公开的加密算法

    RSA DSA ECDSA 加入盐值的SHA256

    推荐使用的数字签名算法有:

    DSA ECDSA

    更多相关内容
  • 网络安全:常见安全算法

    千次阅读 2019-07-22 11:10:50
    废话多说,本文将介绍常见的几种安全算法:数字摘要,对称加密,非对称加密,数字签名,数字证书。 1.数字摘要 数字摘要(消息摘要)是将一个消息或者文本内容使用函数或算法转换成固定长度的值。 如 函数y= f...

    废话不多说,本文将介绍常见的几种安全算法:数字摘要,对称加密,非对称加密,数字签名,数字证书。

    1.数字摘要

    数字摘要(消息摘要)是将一个消息或者文本内容使用函数或算法转换成固定长度的值。

    如  函数y= f(x)   x即为消息或文本, y为数字摘要。当消息和摘要(y1)在网络传递时,如果消息在网络传递过程中被恶意的篡改了,接收者通过对消息使用相同的算法或函数重新计算得到新数字摘要(y2),新数字摘要(y2)与原数字摘要(y1)进行比较,就可以判断消息是否被篡改。因此数字摘要可以验证消息的完整性。

    hash碰撞:如果两个消息时相同的,计算出的值(数字摘要)一定时相同的,如果两个不同的消息,计算出的值不一定相同,这种情况称之为hash碰撞。因此一个hash函数的好坏取决于碰撞的概率,如果说攻击者能够利用hash碰撞轻易的伪造出不同的消息hash值(数字摘要)时相同的。那么这样的hash函数时危险的。可以认为,摘要的长度越长算法越安全。由于数字摘要并不包含原文的完整信息,因此,要从摘要信息逆向得出摘要的明文,原则上是不肯能完成的。

                                                    

    数字摘要的特点:

          (1)无论输入的消息有多长,计算出的摘要长度是固定的。MD5算法计算出的摘要长度是128位,SHA-1算法计算出的摘要160位。

          (2)一般输入的消息不同,则对应摘要不同,这种情况是hash碰撞。但消息相同,对应摘要必然相同。

          (3)摘要并不包含原文的完整信息,因此逆向得不到原文信息。如果你想通过穷举的方式,采用暴力手段,尝试每一个信息计算出摘要,然后于原摘要进行对比,是可以回复原文的,但以目前的计算水平来看,需要消耗很长时间,因此被认为是不可能实现的。

    接下来一起看一下获取数字摘要相关的算法。

    MD5 算法:     

     MD5(Message Digest  Algorithm 5) 信息摘要算法5,是数字摘要算法的一种实现摘要长度为128位。MD5由MD2,MD3,MD4改进而来,主要增强了算法复杂度和不可逆性。该算法具有普遍,稳定,快速的特点,因此业内广泛使用。目前主流编程语言都有MD5实现,下面是java中MD5的使用:

    public static byte[] encode(String content) throws Exception{
            //获取MD5算法
            MessageDigest  md = MessageDigest.getInstance("MD5");
         
           //通过MD5中digest方法获取数字摘要 
            byte[] bytes = md.digest(content.getBytes("utf-8"));
         
            return bytes;
    
    }
    
    //原文 content:hello,world
    //生成的摘要(16进制编码后):22bd33d4c72d1986ccb4227ff7fle7265
    

      SHA算法:    

       SHA(Secure Hash Algorithm) 安全散列算法 其修订版本 SHA-1 是基于MD4算法的,是目前公认的安全散列算法之一,其生成摘要的长度为160位。由于摘要 长度比MD5长,运算过程更加复杂,因此在相同的硬件上,SHA-1的效率相对MD5较慢,但安全性更高。下面是Java中SHA-1的使用:

    public static byte[] encode(String content) throws Exception{
           //获取SHA-1
           MessageDigest md = MessageDigest.getInstance("SHA-1");
    
           //获取摘要
           byte[] bytes = md.digest(content.getBytes("utf-8"));
    
           return bytes;
    
    }
    
    //原文 content: hello,world
    //数字摘要(16进制编码后):deb945d3e6fe72dbla290bcfcf53057clcaafdel

     16进制编码:

    16进制由0-9和a-f表示,其中a-f对应10进制中的10-15

    java 实现16进制编码:

       /**
         * byte数组 转换成 16进制小写字符串
         */
        public static String bytes2Hex(byte[] bytes) {
            if (bytes == null || bytes.length == 0) {
                return null;
            }
    
            StringBuilder hex = new StringBuilder();
    
            for (byte b : bytes) {
                hex.append(HEXES[(b >> 4) & 0x0F]);
                hex.append(HEXES[b & 0x0F]);
            }
    
            return hex.toString();
        }
    

    java 实现16进制解码:

       /**
         * 16进制字符串 转换为对应的 byte数组
         */
        public static byte[] hex2Bytes(String hex) {
            if (hex == null || hex.length() == 0) {
                return null;
            }
    
            char[] hexChars = hex.toCharArray();
            byte[] bytes = new byte[hexChars.length / 2];   // 如果 hex 中的字符不是偶数个, 则忽略最后一个
    
            for (int i = 0; i < bytes.length; i++) {
                bytes[i] = (byte) Integer.parseInt("" + hexChars[i * 2] + hexChars[i * 2 + 1], 16);
            }
    
            return bytes;
        }
    

    Base64编码:

    很多人认为Base64是安全加密算法,并且将其当作加密算法使用,实际并非如此,因为任何人得到Base编码后的内容,通过相同的方法就可以得到原文信息。因此Base64只能算作编码算法。下面是java中base64的使用:

    //编码
    private static String encode(byte[] bytes) throws Exception{
               BASE64Encoder encoder = new BASE64Encoder();
    
               return encoder.encode(bytes);
    }
    
    //解码
    private static byte[] decode(String content) throws Exception{
               BASE64Dncoder decoder = new BASE64Dncoder();
    
               return dncoder.decode(content);
    }

    2.对称加密:

    数据发送方将密文(明文通过密钥加密的)和加密密钥一起经过特殊加密算法处理后,生成复杂的加密密文进行发送,数据接收方是收到密文后,若想读取数据,则需要使用加密使用的密钥及相同算法的逆算法对加密的密文进行解密,才能使其回复可读明文,在对称加密算法中,使用的密钥只有一个,发送和接收方都使用这个密钥进行加密和解密,这就要求发送方和接受方事先必须知道加密的密钥。

            

    对称加密算法特点:算法公开,计算量小,加密速度快,加密效率高。其安全性依赖于密钥,因此保护密钥不被泄露至关重要。

    常见的对称加密:AES,DES等。

    AES:

    AES(Advanced Encryption Standard)高级加密标准,用来替代DES算法,是对称加密算法中最流行的算法之一。主要特点:强安全性,高性能,高效率,易用灵活等特点。设计有3个密钥长度(128,192,256位)比DES更安全。

    java中AES算法的使用:

    /**
     * 生成base64编码的密钥字符串
     */ 
    public static String genKeyAes() throws Exception{
      //获取AEA生成器
      KeyGenerator  keyGen = KeyGenerator.getInstance("AES");
     
     //设置密钥位数
      keyGen.init(128);
     
    //获取密钥
      SecretKey key = kenGen.generateKey();
     
      //将密钥转成base64字符串 
     String base64Str = byte2Base64(key.getEncode()); 
    
    return base64Str ;
    
    }
    
    
    
    /**
     * 将base64编码格式的密钥字符串 转成 SecretKey对象
     */ 
    public static SecretKey loadKeyAES(String base64Str) throws Exception{
      //获取密钥
      byte[] bytes = base642byte(base64Str);
     
      //将密钥转成 SecretKey对象
      SecretKey key = new SecretKeySpec(bytes,"AES");
    
       return key;
    
    }

    加密与解密:

    /**
     * 对称加密
     */
    public static String encryptAES(String source,SecretKey key) throws Exception{
         //实例化对象cipher
         Cipher cipher = Cipher.getInstance("AES");
       
         //初始化加密模式
         cipher.init(Cipher.ENCRYPT_MODE,key);
         
        //得到加密字节数组
         byte[] bytes = cipher.dofinal(source.getBytes());
        
        //将加密字节数组 转成base64编码格式字符串
        String miwen = byte2Base64(bytes);
       
      return miwen ;
    
    }
    
    
    /**
     * 对称解密
     */
    public static String decryptAES(String source,SecretKey key) throws Exception{
         //实例化对象cipher
         Cipher cipher = Cipher.getInstance("AES");
       
         //初始化加密模式
         cipher.init(Cipher.DECRYPT_MODE,key);
         
        //得到原文字节数组
         byte[] bytes = cipher.dofinal(source.getBytes());
        
        //将原文字节数组 转成base64编码格式字符串
        String yuanwen = byte2Base64(bytes);
       
      return yuanwen;
    
    }

                   

    DES基于java的用法和AES一样 只是将上诉代码中的"AES"换成 DES即可 这里就不多赘述了。

    3.非对称加密:

    非对称加密:需要两把密钥,一把公钥,一把私钥。公钥加密对应私钥解密,私钥加密对应公钥解密。

    非对称加密算法实现信息交换的基本过程:

                                 

    非对称加密的特点:非对称加密的公钥是公开的,因此不需要在网络上传送密钥,大大提高了安全性,但非对称加密比对称加密复杂,加密速度相对较慢。

    因此广泛使用非对称与对称加密结合使用的方法,优缺点互补,达到时间与安全的平衡。对称加密速度快,用来加密较长的文件(明文),然后用非对称加密来给文件密钥加密。

    当前使用最广泛的非对称加密算法为RSA。

    基于java的RSA算法的使用:

    公钥和私钥字符串:

    /**
     *获取keyPair对象
     */ 
    public static keyPair getKeyPair() throws Exception{
            //获取RSA生成器
            KeyPairGenerator  k = KeyPairGenerator.getInstance("RSA");
            
            //初始化密钥长度
            k.initialize(512);
           
            //获取keyPair对象
            KeyPair keyPair = k.generateKeyPair();
     
            return keyPair;
    
    }
    
    
    /**
     *获取公钥字符串:通过keyPair对象
     */ 
    
     public static String getPublicKey(KeyPair keyPair){
           //公钥对象
           PublicKey publicKey = keyPair.getPublic(); 
           
           //公钥字节数组
           byte[] bytes = publicKey.getEncode();
           
           //公钥转成base64格式编码字符串
           return byte2Base64(bytes);
    
    }
    
    
    /**
     *获取私钥字符串:通过keyPair对象
     */ 
    
     public static String getPrivateKey(KeyPair keyPair){
           //私钥对象
           PrivateKey privateKey = keyPair.getPublic(); 
           
           //私钥字节数组
           byte[] bytes = privateKey .getEncode();
           
           //私钥转成base64格式编码字符串
           return byte2Base64(bytes);
    
    }
    

    通过公钥和私钥字符串获取公钥对象(PublicKey)和私钥对象(PrivateKey):

    /**
     *获取PublicKey 对象
     */
    public static  PublicKey string2PublicKey(String pubStr) throws Exception{
         //将base64编码的字符串 转成 字节数组公钥
         byte[] keyBytes = base642byte(pubStr);
    
         //将字节数组公钥转成 X509EncodeKeySpec 对象
         X509EncodeKeySpec keySpec = new X509EncodedKeySpec(keyBytes);
       
        //获取KeyFactory
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
    
        //获取PublicKey 对象
        PublicKey publicKey = keyFactory .generateFactory(keySpec);
    
       return publicKey;
    
    }
    
    
    /**
     *获取PrivateKey 对象
     */
    public static  PrivateKey string2PrivateKey (String priStr) throws Exception{
         //将base64编码的字符串 转成 字节数组公钥
         byte[] keyBytes = base642byte(priStr);
    
         //将字节数组公钥转成 X509EncodeKeySpec 对象
         PKCS8EncodeKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
       
        //获取KeyFactory
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
    
        //获取PrivateKey 对象
        PrivateKey privateKey = keyFactory .generateFactory(keySpec);
    
       return privateKey ;
    
    }

    根据PublicKey与PrivateKey 进行加密和解密,这里使用公钥加密,私钥解密:

    /**
     *公钥加密
     */
    public static String publicEncrypt(String content,PublicKey publicKey) throws Exception{
       //获取Cipher对象
       Cipher cipher = Cipher.getInstance("RSA");
       
       //初始化加密模式
       cipher.init(Cipher.ENCRYPT_MODE,publicKey);
    
       //获取公钥加密的密文字节数组
       byte[] bytes = cipher.dofinal(content.getBytes());
    
       //转成bas64编码格式的字符串
       return byte2Base64(bytes); 
    
    
    }
    
    
    /**
     *私钥解密
     */
    public static String privateDecrypt(String content,PrivateKey privateKey) throws Exception{
       //获取Cipher对象
       Cipher cipher = Cipher.getInstance("RSA");
       
       //初始化加密模式
       cipher.init(Cipher.DECRYPT_MODE,privateKey);
    
       //获取公钥加密的密文字节数组
       byte[] bytes = cipher.dofinal(content.getBytes());
    
       //转成bas64编码格式的字符串
       return byte2Base64(bytes); 
    
    
    }

    4.数字签名

    数字签名是对非对称加密与数字摘要的综合使用,指的是将通信内容的摘要信息使用发送者的私钥进行加密。

    接收方通过发送者的公钥解密得到摘要信息,然后使用发送者相同的摘要算法对原文进行摘要,将两者摘要信息进行对比校验,判断原文是否被串改。

                          

    校验是否被串改过程:

    介绍完上面的各种加密算法后,来个支付包加密流程,是各种加密算法的综合运用:

                                    

    流程讲解:

          主要看加密包(发送的数据包)部分:分为信息,签名,会话密钥。

         信息:将原文通过会话密钥(对称加密的密钥)加密生成密文           (步骤1)

         签名:将原文通过MD5进行数字摘要,在对摘要使用信息发送方A的私钥加密 生成签名    (步骤2)

         会话密钥:其实就是对称加密的密钥,可以是AES。使用接收方B的公钥加密会话密钥      (步骤3)

        将加密包发送给信息接收方B:                              

          使用接收方B的私钥解密 得到会话密钥     (步骤4)

          使用会话密钥对信息进行解密 得到原文     (步骤5)

          将原文使用相同的摘要算法MD5 得到摘要A     (步骤6)

          使用发送方A的公钥解密数字签名 得到 摘要B    步骤6)

          校验摘要A与摘要B是否相等,不相等,说明原文被篡改。

    本文主要参考书籍:

                                                                                   

    展开全文
  • 千万别再用了,这些加密算法

    万次阅读 多人点赞 2021-10-29 23:10:14
    CSDN博客专家????,华为云享专家????,Linux、C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

    🎈 作者:Linux猿

    🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

    🎈 关注专栏:Linux 技术 (优质好文持续更新中……)🚀

    🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬


    目录

    🍓一、消息摘要算法

    ✨1.1 特性

    ✨1.2 在线计算摘要

    🍓二、对称加密算法

    ✨2.1 特性

    ✨2.2 在线加解密

    🍓三、非对称加密算法

    ✨2.2 特性

    ✨2.3 在线加解密

    🍓四、不安全的加密算法

    ✨4.1 DES

    ✨4.2 3DES

    ✨4.3 md2、md4、md5

    🍓五、总结


    通常意义上,加密算法可以分为三大种类:消息摘要算法、对称加密算法和非对称加密算法。下面先来看一下这三种加密算法。

    🍓一、消息摘要算法

    消息摘要算法是将一段信息经过加密后产生一段固定长度的字符串,比如:128 位、256位长度。

    图1 消息摘要算法加密过程

    ✨1.1 特性

    (1)相同信息加密后产生的字符串相同;

    (2)具有不可逆性,不能从加密后的字符串推到出原消息;

    (3)可以用于数字签名;

    ✨1.2 在线计算摘要

    下面直接来看一个例子,如下所示:

    图2 在线计算摘要

    上图中,使用 MD5 算法对 "CSDN Linux猿" 进行了加密,可以看到,哈希值为:48e93a303a9454a94697e1f86056f54a,这个哈希值具有唯一性。

    🔶🔶🔶🔶🔶 我是华丽的分割线 🔶🔶🔶🔶🔶

    🍓二、对称加密算法

    对称加密算法是指加密秘钥和解密秘钥都是同一个秘钥的加密算法。

    图3 对称加密算法原理

    ✨2.1 特性

    (1)只有一个密钥,既用于加密,也用于解密;

    (2)加/解密速度较快;

    ✨2.2 在线加解密

    下面直接来看一个例子,如下所示:

    图4 在线对称加解密过程

     在上图中,对明文 “CSDN Linux猿” 使用密钥“Linux”,加密算法 AES 进行了加密。在解密过程中,使用同样的密钥“Linux”进行了解密,得到了原来的明文,这就是对称加密算法加解密原理。

    🔶🔶🔶🔶🔶 我是华丽的分割线 🔶🔶🔶🔶🔶

    🍓三、非对称加密算法

    非对称加密算法是指加密秘钥和解密秘钥不是同一个秘钥的加密算法。

    图5 非对称加密算法

    ✨2.2 特性

    (1)有两个秘钥,公钥用于解密,私钥用于加密,私钥一般不公开;

    (2)信息经过公钥加密后,私钥能够解密,获取原消息;

    (3)加/解密速度较慢;

    ✨2.3 在线加解密

    下面直接来看一个例子,如下所示:

    首先,需要生成公钥和私钥,分别用于加密和解密,公钥如下所示:

    -----BEGIN PUBLIC KEY-----
    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1ZNOaC++tCgxjKRK/k84
    +h7klSMgrLi4efoZ+ib5ASKdvXVCpc/Nah/smTJcjztOjgWp4cesVWuqH92m0zlq
    PySFcMSDN3/RydBuUbQjisOqmQrY+4VEs0R+eVs2BuPJkfDnqP+LKk7Act56NqkO
    X9KoY4OV3Mqa8t2Os7vRBy+E2SdJeAvFEANVrv8FipXk8omxdNiixho4A7tKLEdM
    uI9BMTPGsz97S9OGwTli6XNjjU5mkMChr6G6XbRvewWh7W8K7JboDoqLn5xVWyp4
    D1HwhKipE0B1+nl84p1tS6evhybJflBIYtCU01skMWm2+4/r2IHUwjDLQ7CnYP6J
    cQIDAQAB
    -----END PUBLIC KEY-----

    私钥如下所示: 

    -----BEGIN PRIVATE KEY-----
    MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDVk05oL760KDGM
    pEr+Tzj6HuSVIyCsuLh5+hn6JvkBIp29dUKlz81qH+yZMlyPO06OBanhx6xVa6of
    3abTOWo/JIVwxIM3f9HJ0G5RtCOKw6qZCtj7hUSzRH55WzYG48mR8Oeo/4sqTsBy
    3no2qQ5f0qhjg5Xcypry3Y6zu9EHL4TZJ0l4C8UQA1Wu/wWKleTyibF02KLGGjgD
    u0osR0y4j0ExM8azP3tL04bBOWLpc2ONTmaQwKGvobpdtG97BaHtbwrslugOiouf
    nFVbKngPUfCEqKkTQHX6eXzinW1Lp6+HJsl+UEhi0JTTWyQxabb7j+vYgdTCMMtD
    sKdg/olxAgMBAAECggEAHJLYqpe4q+G0v1w7rEptFQmNC2bnuDP+elM7pnwQVFaN
    RAusHwLuOISM4vIZ8A+/MsEPOWW9aLA+0oSVDS1hSZFZSP0BkStIpfd8yvGOz8Hd
    0Rvia8QorNM9GH9bexB+p0fTtoh51e8zUCrzrtxvT+KfJLE2G5P/pv59WQ6HqK40
    J60x8XVJg1lngDO518LL1EIFR3/UNkyN3F1inw2CDwBAfvxSR4wTxYkGSQBbRzrK
    NROfXkYKpvWJfdG0UM7c1MZPNpUsN8izkxRUN2viNvWW3JCJvI+UFjld7PPyxxwM
    5mQ7MM+/e1ozhmUvUJ1FgfqVgs7cDRAS6onn+R7xAQKBgQD41PbKDbIU/W1AIC0q
    0p+ERNFtFCUJ1naI4jr8v1vFxCrJ6P3kDBWzYPArG6XBcuAHqDPhw0ExDTTOw1rQ
    +PNgDNN6VUMp6mujuYNucYlqsMtl0IYPpBWjqNWToNKi/zeFThFIdOOwVkWUReN3
    +7qsHrIFRqR7H/kkvNc+JQcbZwKBgQDbulb9lg04skR7lX/PK+ogeP6HXq8NFA4S
    11zUEdJEuIeEYnbIYSNgoSvjh3wl6ckKJaJUoW1tc7RhsdkW9dUhEgjDImkmZ7bd
    vqAp1vCncmKidzBuEt247Fek3jvZZEwTunPSpDMgIjdqHKEVJl4L0acGaY/WA/cv
    F8JyfSqFZwKBgERy8OBsHAzCGgeF0mbxQYg1FhcXb4jhQgItmWRlj207pTmdqhnN
    aTrK88Yn+NTaMN5qWrtD5u8DXv9xpc3ObcSCQrpoMe2Z2rpTEeCTwuVidNExJ2+u
    B3XZv8a4erjz0+YLr51q6idb1BARmZ0r1hH676Wb5SsphHOiruMddHMJAoGBANEM
    qFb7u/iFIsKxqbfhgA8FDqScYM+AlSM34wmhKvxW1BgP1hMu2AnHTYpcDLHFi5Ar
    3hXGv+Wyf5uzKWe+29dq4QtGYeQ4KLMv+hHUfYHSQiVwYJNZP7oAoiIpjad21Sqv
    6iIuNrYL180ND/SfXDrCbLadGEv12ebkJAvpKdthAoGAMROodRdek5W85EyK70WT
    WKBLb4X1+KRqjqmNCnv7LYJe4IMiX+hQ8t5yBgQbGtnD/s7KR9nkrfdPqnY1zoLC
    6Fg8A0ngNTWQAMjAjkGTWbwF5dfnJrYNthmAJtjbdvYEejYTQrfe+o8sgVehFJFk
    rAfPXxAuzK+o4m5vSivrAnY=
    -----END PRIVATE KEY-----
    

     使用公钥对 “CSDN Linux猿”,加密算法 RSA 进行加密,如下所示:

     使用私钥对加密后的数据进行解密,如下所示:

    上图中,将密文解密为 “CSDN Linux猿”。

     

    🔶🔶🔶🔶🔶 我是华丽的分割线 🔶🔶🔶🔶🔶

    🍓四、不安全的加密算法

    下面就来看一下哪些加密算法不建议再使用了。

    ✨4.1 DES

    DES 是数据加密标准(Data Encryption Standard)的缩写,是一种对称密钥加密算法。

    1976年美国联邦政府将其确定为国家标准。但是,在1999年1月,distributed.net 与电子前哨基金会合作,在22小时15分钟内公开破解了一个 DES 密钥。

    注意:通常说的加密算法被破解,一般是该加密算法有一组或几组密钥能在有限的时间内找到解,并不是说加密算法完全不能用了。

    ✨4.2 3DES

    3DES 是三重数据加密算法(Triple Data Encryption Algorithm)的缩写,是一种对称加密算法。

    从名称就可以知道,DES 和 3DES 有一定关系,3DES 比 DES 安全强度更高,3DES 是对每个数据块应用三次 DES,具有三个独立密钥。

    但是,在 2017 年 3DES 已被 NIST 弃用,自 OpenSSL 1.1.0 版 起,默认不包含 3DES,并将其视为“弱密码”。

    ✨4.3 md2、md4、md5

    从名称上来看,md2、md4、md5 显然是一个系列,MD 是 Message-Digest Algorithm 的简写,是一种信息摘要算法,也称为哈希算法,具有不可逆性。

    但是,在 2009年,中国科学院谢涛和冯登国仅用了 2^20.96 的碰撞算法复杂度,破解了 MD5 的碰撞抵抗。2011年,RFC 6151 禁止 MD5 用作密钥散列消息认证码。

    🔶🔶🔶🔶🔶 我是华丽的分割线 🔶🔶🔶🔶🔶

    🍓五、总结

    尽量避免过时/不安全/被遗弃的加密算法的使用,后面将会讲解推荐使用的加密算法。

    ⚡参考文献⚡

    [1] 在线RSA加密解密,RSA2加密解密(SHA256WithRSA)-BeJSON.com

    [2] 在线加密解密

    欢迎关注下方👇👇👇公众号👇👇👇,获取更多优质内容🤞(比心)!

    展开全文
  • 有哪些常用的安全算法

    千次阅读 2021-11-16 14:23:38
    关于安全算法分为对称和非对称,涉及加密、解密、认证、访问控制等。 比如最近比较热的汽车电子的OTA功能,就需要通过加密的方式实现,保证云端和MCU才能解密。 对称算法包括:DES、AES等,如AES-128(ECB、CBC)...

    关于安全算法分为对称和非对称,涉及加密、解密、认证、访问控制等。

    比如最近比较热的汽车电子的OTA功能,就需要通过加密的方式实现,保证云端和MCU才能解密。

    对称算法包括:DES、AES等,如AES-128/192/256(ECB、CBC)、DES-32、DES-128、3DES

    非对称算法包括:RSA、ECC等,如RSA-1024、RSA2048、RSA3072、RSA4096、ECC-133、ECC-256、ECIES、RSA OAEP、

    校验算法包括:CRC、Hash(SHA1-3、256)、RSA sig.或ECC sig,非对称验签、CMAC/HMAC、ECDH、ECDSA(P256)

    随机数支撑:TRNG、PRNG

    在汽车OTA方案中,有标准如SHE、HSM、EVITA等安全实现机制,如HSE(hardware security engine)。

    密钥管理涉及:key management、key import、key export、key generation、key derivation、key exchange

    展开全文
  • 常见的几种安全加密算法

    千次阅读 2017-11-17 10:58:12
    本文整理了常见的安全算法,包括MD5、SHA、DES、AES、RSA等,并写了完整的工具类(Java 版),工具类包含测试,大家可以放心使用。一、数字摘要算法 数字摘要也称为消息摘要,它是一个唯一对应一个消息或文本的固定...
  • 安全算法】一文带你简要了解常见常用的安全算法**0 前言****1 算法的大致分类****2 对称加解密算法****2.1 DES/TDES算法****2.2 AES算法****2.3 SM4算法****2.4 RC2、RC4算法****2.5 对称加密算法对比总结****3 非...
  • 死锁算法:银行家算法安全算法 借鉴了一些文章,自己总结了一下 银行家算法 首先,算法的核心在于,每次进程申请资源时,都会进行一次试探性分配,若成功,则真实分配。 基本思想: 在每个新进程进入系统时,他...
  • 银行家算法属于避免死锁的一个著名算法,由Dijkstra在1965年为T.H.E系统设计的一种避免死锁产生的算法。这是由于该算法用于银行系统现金贷款的发放而得名。 一 系统安全状态 指系统能按照某种顺序如<P1,P2,…,Pn&...
  • 常见的安全算法

    万次阅读 2017-03-28 10:00:36
    本文整理了常见的安全算法,包括MD5、SHA、DES、AES、RSA等,并写了完整的工具类(Java 版),工具类包含测试。一、数字摘要算法 数字摘要也称为消息摘要,它是一个唯一对应一个消息或文本的固定长度的值,它由一个...
  • 不安全的加密算法有哪几种

    千次阅读 2020-12-20 21:51:41
    不安全的加密算法有以下几种:1、DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。2、3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。3、AES...
  • 安全算法—Hash算法总结(一)

    千次阅读 2018-07-10 16:37:34
    Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远...
  • 银行家算法安全算法笔记

    万次阅读 多人点赞 2018-07-01 15:57:55
    银行家算法简框图 “`flow st=&amp;amp;gt;start: 开始 e=&amp;amp;gt;end: 结束 cond1=&amp;amp;gt;condition: 资源请求合法性检查 op1=&amp;amp;gt;operation: 进行尝试性的资源分配 op2=&...
  • 静态扫描规则:不安全的加密算法

    千次阅读 2022-03-07 18:03:43
    今天使用一款SAST扫描不安全的加密算法时,发现一个很明显的代码段,居然没有扫描到,代码段如下: private static void testdes() { try { //Creating a KeyGenerator object KeyGenerator keyGen = ...
  • 安全算法梳理

    千次阅读 2016-09-05 01:12:15
      经常见到RSA、MD5、SHA系列算法,另外还有数字摘要、数字签名、数字证书等名词,以及对称加密与非对称加密。他们之间到底是什么关系呢?下面就通过这篇文章来梳理一下。 一、加密算法  加密算法,简而言之...
  • 信息安全是近年来的热门话题,特别是最近随着物联网的全民化,安全已经成为移动支付,智能家居等领域...目前遇到的很多比特币钱包被盗,手机支付被盗刷等都与算法相关,读完本文,就可以让你成为安全算法领域的专家。
  • 文章目录5G安全算法测试caseNEA1 / EEA1算法测试case    输入参数:    输出参数:NEA2 / EEA2算法测试case    输入参数:    输出...
  • 在编程过程中,MD5加密算法和Base64编码都是十分常用的,那么MD5和Base64编码有什么作用和区别呢?
  • 安全帽 hat helmet识别算法,智慧工地

    千次阅读 2021-11-26 13:38:39
    人头检测,安全帽helmet检测
  • 通常情况下,在CANoe的Diagnostics/ISOTPConfiguration对话框中加载诊断描述文件(cdd、pdx、mdx等)后,我们就可以在诊断控制台(Diagnostic Console)面板里进行诊断服务的相关操作,但是在处理安全访问时就能...
  • 常见的安全算法--单向加密--Hash算法

    千次阅读 2019-07-25 11:31:17
    常见安全算法—数字摘要 数字摘要也称为消息摘要,它是一个唯一对应一个消息或文本的固定长度的值,它由一个单向 Hash函数对消息进行计算而产生。如果消息在传递的途中改变了,接收者通过对收到消息采用相同的Hash...
  • 什么是DES安全算法

    千次阅读 2016-04-20 13:58:32
    http://baike.baidu.com/link?url=a8RxsKgXSz3MIQNqzEjvxsIiTD7w5k171bi-KdPKH31aEu-9YWZ8PVBegLeO1oNYBbzw-tYKicuVl3quFTfXAqDES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,...
  • 安全算法—SHA-256算法

    千次阅读 2018-07-15 14:39:47
    1. 什么是SHA-256?SHA-256是SHA2中的一种。对于长度L(L&...2. SHA-256算法实现步骤2.1 把消息转换为位字符串 SHA-256算法是按照位作为输入,所以进行计算前必须把原始消息(比如字符串、文件等)...
  • Python3实现银行家算法安全算法

    千次阅读 2017-11-20 22:17:35
    Python3实现银行家算法安全算法学习期间写的,希望大家一起进步。 Available = [] #各可用资源数目 Used ={} #某进程目前占有各资源数 Need = {} #某进程目前需求资源数 zhan = [] #临时存储列表 order = [] #...
  • 数据安全及各种加密算法对比

    万次阅读 2018-06-22 11:55:40
    然而市场上存在着各种各样的抓包工具及解密算法,甚至一些公司有专门的逆向部门,这就加大了数据安全的风险,本文将通过以下几个方面对各种加密算法进行分析对比:Base64编码(基础)单项散列函数 MD5、SHA1、SHA256...
  • 安全架构-md5算法介绍

    千次阅读 2020-12-21 14:09:02
    安全架构-md5算法介绍 安全架构知识,我们必可少离开的就是md5,包括接口签名,文件摘要,密码加密等等。本文介绍md5算法。 文章目录安全架构-md5算法介绍一、md5是什么?二、特点三、作用四、应用场景4.1 一致...
  • 用银行家算法求解安全序列

    千次阅读 2020-12-20 13:27:09
    用银行家算法求解安全序列 进程 最大需求 已分配 需要 总计 可用 ABCD ABCD ABCD ABCD ABCD P1 4111 3011 1100 P2 0212 0100 0112 P3 4210 1110 3100 6342(已知) 1020 P4 1121 1101 0020 ...
  • 密码技术是解决核心安全问题的基础理论和技术,而传统的证书体系并适应于物联网环境,基于商密SM9的算法才是目前物联网安全认证的最佳选择。物联网安全平台依赖商密SM9算法的优势,有效克服了传统算法中密钥分发...
  • 银行家算法判断状态是否安全

    千次阅读 2020-06-20 12:57:04
    process allocation need avaiable p0 0 0 3 2 0 0 1 2 1 6 2 2 p1 1 0 0 0 1 7 5 0 p2 1 3 5 4 2 3 5 6 p3 0 3 3 2 ...p3--p1--p2--p4,当然了,唯一,只要在选择进程时满足finish可用即可。
  • 安全性要求高的应用程序必须避免使用不安全的或者强度弱的加密算法,现代计算机的计算能力使得攻击者通过暴力破解可以攻破强度弱的算法。例如,数据加密标准算法DES是极度不安全的,使用类似EFF(Electronic ...
  • 1、常用的加密算法分类 常见的加密算法可以分成五类: 对称加密算法、非对称加密算法和、Hash 算法(也称摘要算法)、数字签名(Hash&amp;RSA)和数字证书(Hash&amp;RSA&amp;CA)。 1)对称加密算法...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 722,040
精华内容 288,816
关键字:

不安全算法