精华内容
参与话题
问答
  • AES加密算法备忘

    万次阅读 2018-09-24 11:55:48
    AES加密算法备忘原理样例 原理 密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全...

    AES加密算法备忘

    原理

    密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院 (NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。
    该算法为比利时密码学家Joan Daemen和Vincent Rijmen所设计,结合两位作者的名字,以Rijndael之命名之,投稿高级加密标准的甄选流程。(Rijdael的发音近于 “Rhinedoll”)
    AES 是一个新的可以用于保护电子数据的加密算法。明确地说,AES 是一个迭代的、对称密钥分组的密码,它可以使用128、192 和 256 位密钥,并且用 128 位(16字节)分组加密和解密数据。与公共密钥密码使用密钥对不同,对称密钥密码使用相同的密钥加密和解密数据。通过分组密码返回的加密数据的位数与输入数据相同。迭代加密使用一个循环结构,在该循环中重复置换(permutations )和替换(substitutions)输入数据。Figure 1 显示了 AES 用192位密钥对一个16位字节数据块进行加密和解密的情形。

    对称密码体制的发展趋势将以分组密码为重点。分组密码算法通常由密钥扩展算法和加密(解密)算法两部分组成。密钥扩展算法将b字节用户主密钥扩展成r个子密钥。加密算法由一个密码学上的弱函数f与r个子密钥迭代r次组成。混乱和密钥扩散是分组密码算法设计的基本原则。抵御已知明文的差分和线性攻击,可变长密钥和分组是该体制的设计要点。
    AES是美国国家标准技术研究所NIST旨在取代DES的21世纪的加密标准。
    AES的基本要求是,采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。1998年NIST开始AES第一轮分析、测试和征集,共产生了15个候选算法。1999年3月完成了第二轮AES2的分析、测试。2000年10月2日美国政府正式宣布选中比利时密码学家Joan Daemen 和 Vincent Rijmen 提出的一种密码算法RIJNDAEL 作为 AES.
    AES加密数据块大小最大是256bit,但是密钥大小在理论上没有上限。AES加密有很多轮的重复和变换。大致步骤如下:

    1. 密钥扩展(KeyExpansion)
    2. 初始轮(Initial Round)
    3. 重复轮(Rounds),每一轮又包括:SubBytes、ShiftRows、MixColumns、AddRoundKey
    4. 最终轮(Final Round),最终轮没有MixColumns。

    样例

    import javax.crypto.BadPaddingException;
    import javax.crypto.Cipher;
    import javax.crypto.IllegalBlockSizeException;
    import javax.crypto.KeyGenerator;
    import javax.crypto.NoSuchPaddingException;
    import javax.crypto.SecretKey;
    import javax.crypto.spec.SecretKeySpec;
    import java.io.UnsupportedEncodingException;
    import java.security.InvalidKeyException;
    import java.security.NoSuchAlgorithmException;
    import java.security.SecureRandom;

    public abstract class AesHelper {

    /**
     * 加密
     *
     * @param content 需要加密的内容
     * @param salt    加密密码
     * @return
     */
    public static byte[] encrypt(String content, String salt) {
        try {
            SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
            random.setSeed(salt.getBytes());
            KeyGenerator kgen = KeyGenerator.getInstance("AES");
            kgen.init(128, random);
            SecretKey secretKey = kgen.generateKey();
            byte[] enCodeFormat = secretKey.getEncoded();
            SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
            Cipher cipher = Cipher.getInstance("AES");// 创建密码器
            byte[] byteContent = content.getBytes("utf-8");
            cipher.init(Cipher.ENCRYPT_MODE, key);// 初始化
            byte[] result = cipher.doFinal(byteContent);
            return result; // 加密
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (NoSuchPaddingException e) {
            e.printStackTrace();
        } catch (InvalidKeyException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IllegalBlockSizeException e) {
            e.printStackTrace();
        } catch (BadPaddingException e) {
            e.printStackTrace();
        }
        return null;
    }
    
    /**
     * 解密
     *
     * @param content 待解密内容
     * @param salt    解密密钥
     * @return
     */
    public static byte[] decrypt(byte[] content, String salt) {
        try {
            KeyGenerator kgen = KeyGenerator.getInstance("AES");
            SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
            secureRandom.setSeed(salt.getBytes());
            kgen.init(128, secureRandom);
            SecretKey secretKey = kgen.generateKey();
            byte[] enCodeFormat = secretKey.getEncoded();
            SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
            Cipher cipher = Cipher.getInstance("AES");// 创建密码器
            cipher.init(Cipher.DECRYPT_MODE, key);// 初始化
            byte[] result = cipher.doFinal(content);
            return result; // 加密
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (NoSuchPaddingException e) {
            e.printStackTrace();
        } catch (InvalidKeyException e) {
            e.printStackTrace();
        } catch (IllegalBlockSizeException e) {
            e.printStackTrace();
        } catch (BadPaddingException e) {
            e.printStackTrace();
        }
        return null;
    }
    
    public static String bytesToHexString(byte[] src) {
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < src.length; i++) {
            String hex = Integer.toHexString(src[i] & 0xFF);
            if (hex.length() == 1) {
                hex = '0' + hex;
            }
            sb.append(hex.toUpperCase());
        }
        return sb.toString();
    }
    
    public static String encryptToStr(String content, String password){
        return bytesToHexString(encrypt(content,password));
    }
    
    public static byte[] decrypt(String content, String keyWord) {
        return decrypt(hexStringToBytes(content), keyWord);
    }
    
    public static byte[] hexStringToBytes(String hexString) {
        if (hexString.length() < 1)
            return null;
        byte[] result = new byte[hexString.length() / 2];
        for (int i = 0; i < hexString.length() / 2; i++) {
            int high = Integer.parseInt(hexString.substring(i * 2, i * 2 + 1), 16);
            int low = Integer.parseInt(hexString.substring(i * 2 + 1, i * 2 + 2), 16);
            result[i] = (byte) (high * 16 + low);
        }
        return result;
    }
    

    }

    public class TestMain {
    public void main(){
    String content = “carl.zhao”;
    String Key = “http://www.csdn.net”;

        //加密
        String encryptResult = AesHelper.encryptToStr(content, Key);
    
        //解密
        byte[] decryptResult = AesHelper.decrypt(encryptResult,Key);
        Assert.assertEquals(content, new String(decryptResult));
    }
    

    }

    输出结果:
    @@eac7cf4369966a656d1355939632cab1611696f7aed973b20f13e8a0e08f1b2ae51d24b41678e12267cd7d8e549674b0fef081fbc0557ec7a7f1eb37bf28e4645a0f6863dae03c2278ea668b03b50102@@

    展开全文
  • 对称加密算法之DES算法和AES算法

    千次阅读 2019-01-22 13:44:36
    对称加密算法是应用最早的加密算法,技术成熟。在对称加密算法中,数据发送方将明文和加密密钥一起经过特殊加密算法处理后,生成复杂的加密密钥进行发送,数据接收方收到密文后,若想读取原文,则需要使用加密使用的...


        对称加密算法是应用最早的加密算法,技术成熟。在对称加密算法中,数据发送方将明文和加密密钥一起经过特殊加密算法处理后,生成复杂的加密密钥进行发送,数据接收方收到密文后,若想读取原文,则需要使用加密使用的密钥及相同算法的逆算法对加密的密文进行解密,才能是其恢复成可读明文。需要加密涉解密方事先都必须知道加密的密钥。

            DES算法
            DES算法属于对称加密算法,明文按64位进行分组,密钥长64位,但事实上只有56位参与DES运算(第8,16,24,32,40,48,56,64位是校验位,使得每个密钥都有个奇数个1),分组后的名为和56位的密钥按位替换或交换的方法形成密文。
            由于计算机运算能力的增强,原来DES密码的密钥长度变得容易被暴力破解,因此演变出了3DES算法。3DES是DES向AES过度的加密算法,它使3条56位的密钥对数据进行3次加密,是DES的一个更安全的变形。

        AES算法
            AES即高级加密标准,已经广为全世界所使用,成为对称加密算法的主流算法之一。
            AES算法作为新一代的数据集加密标准,汇聚了强安全性、高性能、高效率、易用和灵活等优点,设计有三个密钥长度(128,192,256位),比DES算法的加密强度更高,更安全。

    展开全文
  • MD5加密算法与SHA加密算法

    千次阅读 2015-11-09 14:57:05
    2、MD5加密 2.1 概述 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory ...

    2MD5加密

    2.1 概述

    Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992.

    MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer ScienceRSA Data Security IncRonald L. Rivest开发出来,经MD2MD3MD4发展而来。

    MD5用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2MD3MD4

    MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。

    2.2 算法原理

    MD5算法简要的叙述可以为:MD5512位分组来处理输入的信息,且每一分组又被划分为1632位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。

    MD5算法中,首先需要对信息进行填充,使其位长对512求余的结果等于448。因此,信息的位长(Bits Length)将被扩展至N*512+448N为一个非负整数,N可以是零。填充的方法如下,在信息的后面填充一个1和无数个0,直到满足上面的条件时才停止用0对信息的填充。然后,在这个结果后面附加一个以64位二进制表示的填充前信息长度。经过这两步的处理,信息的位长=N*512+448+64=(N+1*512,即长度恰好是512的整数倍。这样做的原因是为满足后面处理中对信息长度的要求。

    2.3 Java中的MD5实现

             MD5加密算法的Java实现如下所示:

    package amigo.endecrypt;
    
    import java.security.MessageDigest;
    
    /** 
     * 采用MD5加密
     * @author Xingxing,Xie
     * @datetime 2014-5-31 
     */
    public class MD5Util {
        /*** 
         * MD5加密 生成32位md5码
         * @param 待加密字符串
         * @return 返回32位md5码
         */
        public static String md5Encode(String inStr) throws Exception {
            MessageDigest md5 = null;
            try {
                md5 = MessageDigest.getInstance("MD5");
            } catch (Exception e) {
                System.out.println(e.toString());
                e.printStackTrace();
                return "";
            }
    
            byte[] byteArray = inStr.getBytes("UTF-8");
            byte[] md5Bytes = md5.digest(byteArray);
            StringBuffer hexValue = new StringBuffer();
            for (int i = 0; i < md5Bytes.length; i++) {
                int val = ((int) md5Bytes[i]) & 0xff;
                if (val < 16) {
                    hexValue.append("0");
                }
                hexValue.append(Integer.toHexString(val));
            }
            return hexValue.toString();
        }
    
        /**
         * 测试主函数
         * @param args
         * @throws Exception
         */
        public static void main(String args[]) throws Exception {
            String str = new String("amigoxiexiexingxing");
            System.out.println("原始:" + str);
            System.out.println("MD5后:" + md5Encode(str));
        }
    }

    测试结果:

    原始:amigoxiexiexingxing

    MD5后:e9ac094091b96b84cca48098bc21b1d6


    3SHA加密

    3.1 概述

    SHA是一种数据加密算法,该算法经过加密专家多年来的发展和改进已日益完善,现在已成为公认的最安全的散列算法之一,并被广泛使用。该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。散列函数值可以说是对明文的一种指纹或是摘要所以对散列值的数字签名就可以视为对此明文的数字签名。

             安全散列算法SHASecure Hash AlgorithmSHA)是美国国家标准技术研究所发布的国家标准FIPS PUB 180,最新的标准已经于2008年更新到FIPS PUB 180-3。其中规定了SHA-1SHA-224SHA-256SHA-384,和SHA-512这几种单向散列算法SHA-1SHA-224SHA-256适用于长度不超过2^64二进制位的消息。SHA-384SHA-512适用于长度不超过2^128二进制位的消息。

    3.2 原理

    SHA-1是一种数据加密算法,该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。

    单向散列函数的安全性在于其产生散列值的操作过程具有较强的单向性。如果在输入序列中嵌入密码,那么任何人在不知道密码的情况下都不能产生正确的散列值,从而保证了其安全性。SHA将输入流按照每块512位(64个字节)进行分块,并产生20个字节的被称为信息认证代码或信息摘要的输出。

    该算法输入报文的长度不限,产生的输出是一个160位的报文摘要。输入是按512 位的分组进行处理的。SHA-1是不可逆的、防冲突,并具有良好的雪崩效应。

    通过散列算法可实现数字签名实现,数字签名的原理是将要传送的明文通过一种函数运算(Hash)转换成报文摘要(不同的明文对应不同的报文摘要),报文摘要加密后与明文一起传送给接受方,接受方将接受的明文产生新的报文摘要与发送方的发来报文摘要解密比较,比较结果一致表示明文未被改动,如果不一致表示明文已被篡改。

    MAC (信息认证代码)就是一个散列结果,其中部分输入信息是密码,只有知道这个密码的参与者才能再次计算和验证MAC码的合法性。

    3.3 Java中的SHA实现

             SHA的在Java的实现与MD5类似,参考代码如下所示:

    package amigo.endecrypt;
    
    import java.security.MessageDigest;
    
    /** 
     * 采用SHAA加密
     * @author Xingxing,Xie
     * @datetime 2014-6-1 
     */
    public class SHAUtil {
        /*** 
         * SHA加密 生成40位SHA码
         * @param 待加密字符串
         * @return 返回40位SHA码
         */
        public static String shaEncode(String inStr) throws Exception {
            MessageDigest sha = null;
            try {
                sha = MessageDigest.getInstance("SHA");
            } catch (Exception e) {
                System.out.println(e.toString());
                e.printStackTrace();
                return "";
            }
    
            byte[] byteArray = inStr.getBytes("UTF-8");
            byte[] md5Bytes = sha.digest(byteArray);
            StringBuffer hexValue = new StringBuffer();
            for (int i = 0; i < md5Bytes.length; i++) {
                int val = ((int) md5Bytes[i]) & 0xff;
                if (val < 16) { 
                    hexValue.append("0");
                }
                hexValue.append(Integer.toHexString(val));
            }
            return hexValue.toString();
        }
    
        /**
         * 测试主函数
         * @param args
         * @throws Exception
         */
        public static void main(String args[]) throws Exception {
            String str = new String("amigoxiexiexingxing");
            System.out.println("原始:" + str);
            System.out.println("SHA后:" + shaEncode(str));
        }
    }

    测试结果如下所示:

    原始:amigoxiexiexingxing

    SHA后:04f79f496dd6bdab3439511606528a4ad9caac5e

    3SHA-1MD5的比较

    因为二者均由MD4导出,SHA-1MD5彼此很相似。相应的,他们的强度和其他特性也是相似,但还有以下几点不同:

    1)对强行攻击的安全性:最显著和最重要的区别是SHA-1摘要比MD5摘要长32 位。使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对MD52^128数量级的操作,而对SHA-1则是2^160数量级的操作。这样,SHA-1对强行攻击有更大的强度。

    2)对密码分析的安全性:由于MD5的设计,易受密码分析的攻击,SHA-1显得不易受这样的攻击。

    3)速度:在相同的硬件上,SHA-1的运行速度比MD5慢。


    展开全文
  • 对称加密算法和非对称加密算法

    千次阅读 2019-03-17 15:59:04
    有一种加密算法叫做对称加密,对称加密是以前比较常见的一种加密方式。所谓对称加密的意思是说假如有一个人A,他想把一个信号m传递给B,他不能直接将这个信息传递给B,否则会有人可能会窃听。于是通过一些算法,...

            比如说我们去银行存钱取钱,用到密码,密码是基于数学的,我们来讨论下关于密码学的问题:
            有一种加密算法叫做对称加密,对称加密是以前比较常见的一种加密方式。所谓对称加密的意思是说假如有一个人A,他想把一个信号m传递给B,他不能直接将这个信息传递给B,否则会有人可能会窃听。于是通过一些算法,比如通过加一个数字e变成了一个新的数字C,他把C传递给B,B接收到C之后再减去那个e就会得到原来的数字m。


           比如想要传递2  e=1 2+1=3    B接收到3之后3-1=2    ,于是我们就知道m了
    在这个过程中,我们将

    • m称为明文,就是我们希望表达的含义
    • C我们称之为密文,就是我们可以公开传递的一个信息
    • e就是密钥,密钥是要保密的,我们不可以告诉其他人

            算法其实可以比较复杂,不一定是加一个数字,他可能是m乘以e得到一个数字得到C,我们得到C之后可以除以e。也可以是m的e次方,得到一个数字,我们再开e次根号就可以了。算法可以非常复杂,但是再复杂也存在被窃听的可能,因为可以穷举,比如他一次又一次的尝试以前的算法,他还可以通过数字的频率,比如在英文的26个字母中,在一段话中出现的频率不一样,他只要截取到足够多的密文,一次又一次的尝试,他就可以把你的密钥给试出来,所以密钥是不保险的。

            于是人们就想能不能我们发一段文字之后就换一个密钥。再发一段文字,我再换一个密钥,这样别人就不知道我说的是什么了。但是问题是密钥的分发又成为了一个问题,你怎么才可以把这个e安全的传给B,你派一个人去传这样 的效率很低,你打电话给B,B有可能会被监听。所以密钥分发是一件非常麻烦的事情,那么现在的量子保密通信就可以实现密钥分发的保密性。

            那么除了这种对称加密以外,现在比较流行的一种算法叫做非对称加密。A想把一个信息m传递给B。首先B先干这么一件事情。B生成两个有相互关系的数字,这两个有相关性的数字,一个叫做e,一个叫做d。那么这个e就叫做公钥,公共的钥匙,而这个d就叫做私钥,私人的钥匙。然后B先把这个e公钥传递给A,可以通过公开的方式传递,这样的话我不怕你窃听。我告诉你公钥是什么,然后这个A通过这种公钥e的某一个算法得到一个密文C。然后再通过公开的方式将这个密文传递给B,那么这个不对称性就体现在这个地方了。通过密文求解原文的过程,不是减去e,而是要减去d,通过减去一个d我们就可以得到明文m。也就是说,这个d和e是有一定的关系的,我经过加密的时候,我是用的e对数字进行加密,我解密的时候呢,需要用到d数字进行解密
            我传递公钥的过程的我不怕你窃听。因为就算是你窃听了,你也不会知道这个密钥是什么。所以你窃听了我的公钥和密文之后,你依然无法得到明文,这个就是非对称加密的方式。

            那么非对称加密是基于什么样的一个数学原理呢?我们接下来的时间会来介绍一种典型的非对称加密方式,叫做RSA加密算法。敬请期待!

            撒花✿✿ヽ(°▽°)ノ✿!!!

     

    展开全文
  • 加密算法大全

    千次阅读 2016-02-20 16:38:00
    加密算法从大的方面可以非为两类: 对称密钥加密非对密钥称加密 其中对称加密还可以进一步分为: 块加密算法加密算法加密算法主要有: AES  Blowfish DES ( Triple DES) ·  Serpent ...
  • 对称加密非对称加密不可逆加密算法 根据密钥类型不同可以将现代密码技术分为两类:对称加密算法(私钥密码体系)和非对称加密算法(公钥密码体系)。 1对称加密算法 原理 对称加密算法中,数据加密和解密采用的都是...
  • AES 加密算法的原理详解

    万次阅读 多人点赞 2018-07-23 22:18:49
    高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图: 下面简单介绍下各个部分的....
  • 目录 一、概述 1、加密与解密 2、对称性加密与非对称性加密二、RSA算法流程 1、算法原理 2、公钥和私钥的生成 3、RSA加密 4、RSA解密 5、快速幂取模三、数论基础 1、同余 2、欧几里德算法 3、互素 4、...
  • 摘 要:本文提出了一种基于 DCT 域的自适应混沌加密的二值图像数字水印算法。该算法将含有版权信息的二值图像水印用混沌序列进行加密,利用人类视觉系统(HVS)的特性将原始图像进行块分类,根据分类结果将不同强度的...
  • 国密加密算法与国际加密算法

    千次阅读 2019-05-17 10:59:09
    国密算法: ...采用该算法已经研制了系列芯片、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域)。 ...
  • RSA加密算法

    千次阅读 热门讨论 2009-08-21 16:38:00
    RSA加密算法是一种非对称加密算法,它在公开密钥加密和电子商务中具有广泛应用。非对称加密体制中,加密和解密秘钥是不同的(或者已知公钥很难推得私钥)。公钥被用来对数据进行加密,私钥被用来对数据进行解密,...
  •  本篇使用java自带的MessageDigest实现对文本的md5加密算法,具体代码如下: /** *@Description: 将字符串转化为MD5 */ package cn.yicha.novel.util; import java.security.MessageDigest; import java....
  • 对称加密算法

    千次阅读 2017-01-22 09:33:23
    对称加密算法由古典加密算法演化而来,解密和加密互为逆运算,加密和解密秘钥相同,因而称为对称加密算法,具有代表性的有DES、3DES、AES、PBE、IDEA。DES由IBM提出堪称经典对称加密算法,不仅应用在软件行业,甚至...
  • 常用加密算法之非对称加密算法

    万次阅读 2018-03-16 21:44:45
    非对称加密算法 非对称加密算法是一种密钥的保密方法。非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有...
  • 如题,请教NTLM加密算法NTLM 密码加密算法NTLM 密码加密算法NTLM 密码加密算法
  • 常见加密算法及常见加密算法原理

    万次阅读 2018-08-09 17:16:11
    加密算法和协议 对称加密 简介:加密和解密使用同一个密钥 常见的算法: - DES:Data Encryption Standard; - 3DES:Triple DES; - AES:Advanced Encryption Standard; (128bits, 192bits, 256bits, 384...
  • 加密算法

    千次阅读 2018-08-28 09:50:40
    摘要算法: MD5 128位摘要 速度快 数据无论有多大,过程都不可逆转 ...对称加密算法: AES 128位、192位、256位 加密速度更快,安全性更高 DES 56位、 112位、168位 特点:加密和解密选择相同的秘钥。...
  • 加密算法总结

    万次阅读 2016-07-28 16:51:42
    加密算法总结, 对称加密,非对称加密,单向加密, MD5, MD5、SHA、HMAC、RIPE-MD、HAVAL、N-Hash、Tiger、DES、AES、IDEA、BlowFish、Twofish、RSA、DSA、ECC
  • 加密算法------DES加密算法详解

    万次阅读 多人点赞 2018-04-13 21:15:59
    一、加密算法的分类1.对称加解密算法a.通信双方同时掌握一个密钥,加密解密都是由一个密钥完成的(即加密密钥等于解密密钥,加解密密钥可以相互推倒出来)。b.双方通信前共同拟定一个密钥,不对第三方公开。c.不具有...
  • Java加密算法 AES

    万次阅读 2014-03-10 23:23:14
    package com.stone.security; import java.util.Arrays; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey;...import javax.crypto.spec.IvParameterSpec;... * *
  • Android加密算法之对称加密AES

    千次阅读 2017-03-22 23:46:45
    作为一名developer,一些重要文件存取,网络数据传输安全不可忽视,促使我们使用加密算法手段保证信息数据的安全。加密并不意味着绝对的安全,总有破解的时候,为了提高破解难度,在算法要求和品位上也越来越高,...
  • 加密算法介绍及加密算法的选择

    万次阅读 2015-09-22 13:57:46
    加密算法介绍 一. 密码学简介 据记载,公元前400年,古希腊人发明了置换密码。1881年世界上的第一个电话保密专利出现。在第二次世界大战期间,德国军方启用“恩尼格玛”密码机,密码学在战争中起着非常重要的...

空空如也

1 2 3 4 5 ... 20
收藏数 244,159
精华内容 97,663
关键字:

加密