精华内容
下载资源
问答
  • 2020-11-11 21:54:15

    主要区别

    • 对称加密算法的加密密钥和解密密钥相同。或者虽然不同,但是可以通过其中一个密钥推导出另外一个密钥。
    • 非对称加密算法的加密密钥和解密密钥不相同,并且从其中一个很难退出推导出另外一个。

    对称加密优缺点

    • 优点
      1、加解密效率高,适合加密大量数据
      2、密钥相对比较短
      3、硬件容易实现
    • 缺点
      1、需要以安全方式进行密钥交换
      2、密钥管理复杂,如每个人需持有许多密钥

    非对称加密算法优缺点

    • 优点
      1、安全性更高,公钥是公开的,但私钥只有自己知道
    • 缺点
      1、加密和解密花费时间长,速度慢,只适合对小数据加密

    常见的对称加密算法

    1. DES
    2. 3DES
    3. Blowfish
    4. IDEA
    5. RC4
    6. RC5
    7. RC6
    8. AES

    常见的非对称加密算法

    1. RSA
    2. ECC(移动设备用)
    3. Diffie-Hellman
    4. El Gamal
    5. DSA(数字签名用)

    好啦,分享到这里,我去复习啦!
    明天下午考试,希望一切顺利!!!

    更多相关内容
  • 主要介绍了java 非对称加密算法RSA实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 主要介绍了C#实现简单的RSA非对称加密算法,结合实例形式分析了C#实现RSA加密的具体步骤与相关操作技巧,需要的朋友可以参考下
  •  假如现实世界中存在A和B进行通讯,为了实现安全的通讯通道上实现信息的保密性、完整性、可用性(即信息安全的三个性质),A和B约定使用非对称加密通道进行通讯,具体过程如下:  说明:  国内目前使用双...

    1、非对称加密过程:

            假如现实世界中存在A和B进行通讯,为了实现在非安全的通讯通道上实现信息的保密性、完整性、可用性(即信息安全的三个性质),A和B约定使用非对称加密通道进行通讯,具体过程如下:

      说明:

            国内目前使用双证书体系,即用户同时拥有签名证书、加密证书两张证书。签名证书是用户的身份认证,是和CA协商的结果,可用于对用户A的身份验证;加密证书是用来对信息进行加密,是用户和秘钥管理系统生成。我们在这里假设都适合CA进行交互。

            ①:此过程是生成公钥私钥的过程,我们这里基于RSA算法实现,RSA算法的详细说明在后面讲解。

            ②:此过程是CA对用户的身份进行签名,目的验证A的身份。这样在A与B通讯的过程中,A可以把自己的数字签名发给B,B得到此数字签名后就可以通过CA的公钥对其进行解密并进行身份验证,具体过程在后面讲解。

            ③④同理。

            ⑤:A对要传输的信息进行加密并传输,B接受到以后进行解密的过程。

     

    2、RSA算法:

            RSA原理:RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

            算法:

            (1)选择两个不同的大素数p和q;

            (2)计算乘积n=pq和Φ(n)=(p-1)(q-1);

            (3)选择大于1小于Φ(n)的随机整数e,使得gcd(e,Φ(n))=1;注:gcd即最大公约数。

            (4)计算d使得d*e=1mod Φ(n);注:即d*e mod Φ(n) =1。

            (5)对每一个密钥k=(n,p,q,d,e),定义加密变换为Ek(x)=xe mod n,解密变换为Dk(x)=yd mod n,这里x,y∈Zn;

            (6)p,q销毁,以{e,n}为公开密钥,{d,n}为私有密钥。

            实例:

            1. 假设p = 3、q = 11(p,q都是素数即可。),则N = pq = 33;

            2. r =Φ(n)= (p-1)(q-1) = (3-1)(11-1) = 20;

            3. 根据gcd(e,Φ(n))=1,即gcd(e,20)=1,令e=3,则,d = 7。(两个数交换一下也可以。)

      到这里,公钥和密钥已经确定。公钥为(N, e) = (33, 3),密钥为(N, d) = (33, 7)。

            代码实现:

           

    public class SimpleRSA {
        /** 
         * 加密、解密算法 
         * @param key 公钥或密钥 
         * @param message 数据 
         * @return 
         */
        public static long rsa(int baseNum, int key, long message){ 
            if(baseNum < 1 || key < 1){ 
                return 0L; 
            } 
            //加密或者解密之后的数据 
            long rsaMessage = 0L; 
               
            //加密核心算法 
            rsaMessage = Math.round(Math.pow(message, key)) % baseNum; 
            return rsaMessage; 
        } 
     
        public static void main(String[] args){ 
            //基数 
            int baseNum = 3 * 11; 
            //公钥 
            int keyE = 3; 
            //密钥 
            int keyD = 7; 
            //未加密的数据 
            long msg = 24L; 
            //加密后的数据 
            long encodeMsg = rsa(baseNum, keyE, msg); 
            //解密后的数据 
            long decodeMsg = rsa(baseNum, keyD, encodeMsg); 
               
            System.out.println("加密前:" + msg); 
            System.out.println("加密后:" + encodeMsg); 
            System.out.println("解密后:" + decodeMsg); 
        } 
    } 

    结果:这样CA就保存了用户的公钥,其他任何人想法送给此用户信息,只需查询词公钥,加密发送即可,而此用户用只有自己知道的秘钥解密。

     

    3、签名证书:

            签名证书的用途:加入有A用户向B用户发送了信息“A love you”,B接收到之后怎么确定就是A发送的呢(因为中间人攻击中,假如C截获了A发送的信息后,改成“C love you”,B是无法确定这两个信息的发送者,因他她们都同样用B的工要加密),于是产生了签名证书技术。

            签名证书是由CA用自己的私钥对用户的信息进行加密,并把发给用户的,用户可以在发送信息的过程中附加上自己的签名证书,让接受者验证信息的来源。当接受者接受到发送者的签名证书后即可用ca的公钥解密验证发送者的身份信息。

     

    4、信息传输:

       过程:

            A. Alice 准备好要传送的数字信息(明文)。

            B. Alice 对数字信息进行哈希(hash)运算,得到一个信息摘要。

            C. Alice 用自己的私钥(SK)对信息摘要进行加密得到Alice 的数字签名,并将其附在数字信息上。

            D. Alice 用Bob 的公钥(PK)对刚才随机产生的加密密钥进行加密,将加密后的密文传送给Bob

            E. Bob 收到Alice 传送过来的密文,用自己的私钥(SK)对密文解密。

            F. Bob 用Alice 的公钥(PK)对Alice 的数字签名进行解密,得到信息摘要。

            G. Bob 用相同的hash 算法对收到的明文再进行一次hash 运算,得到一个新的信息摘要。

            H. Bob 将收到的信息摘要和新产生的信息摘要进行比较,如果一致,说明收到的信息没有被修改过。

     

            采用数字签名,能完成这些功能:

           (1)确认信息是由签名者发送的; 

            (2)确认信息自签名后到收到为止,未被修改过; 

           (3)签名者无法否认信息是由自己发送的。

            

            但是上述过程存在问题,例如有用户C窃取A的电脑信息,把B的公钥修改成了自己的公钥,A用此公钥加密信息发给B,C在中间截获这个数据就可以获取这些私密信息。怎么应对这种情况呢?签名证书就派上用场了。

             证书中心用自己的私钥,对每一个用户的、的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。发送者在发送信息之前如果想核对接受者的公钥,只需用CA的公钥对B的签名证书进行解密确认即可。

     

     

    展开全文
  • 主要介绍了java 非对称加密算法DH实现详解 ,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 主要介绍了使用openssl实现rsa非对称加密算法的示例,大家参考使用吧
  • 非对称加密算法

    2021-02-12 13:41:50
    对称加密算法是因为秘钥的对称而由来的,而非对称加密算法是因为和对称加密相反的原理来实现的,是高级的,举个例子: 银行的保险柜,肯定是银行工作人员拿着他自己那把钥匙,加上事主自己那把钥匙,共同才能打开...

    概述

    对称加密算法是因为秘钥的对称而由来的,而非对称加密算法是因为和对称加密相反的原理来实现的,是高级的,举个例子:
    在这里插入图片描述
    银行的保险柜,肯定是银行工作人员拿着他自己那把钥匙,加上事主自己那把钥匙,共同才能打开保险柜的,这种方式我们叫做双保险。
    非对称加密算法是分公钥、私钥,公钥是非安全的方式(公开)发放的,私钥自己保存。公钥、私钥通常情况都是成对出现的,使用公钥加密的数据只能使用和它一对的私钥来解密,反之亦然。注意一点:在非对称加密算法里,有些算法可以公钥加密私钥解密、私钥加密公钥解密都支持的,有的只支持一种方式。

    DH(Diffie-Hellman)秘钥交换算法

    对称加密算法的秘钥管理复杂,避免秘钥传递过程中的泄露成为了一个困扰。因此,出现了秘钥交换算法,它是怎么解决的呢?是通过构建本地秘钥来解决的,但是构建的本地秘钥对于双方来说是一致的,也是一种对称的行为。

    秘钥长度默认长度工作模式填充方式实现方
    512~1024(64的倍数)1024JDK

    算法实现涉及到的类介绍

    • 初始化发送方秘钥

      • KeyPairGenerator:生成秘钥的载体
      • KeyPair:密钥的载体
      • PublicKey:公钥
          //创建KeyPairGenerator对象
          KeyPairGenerator senderKeyPairGenerator=KeyPairGenerator.getInstance("DH");
      
    • 初始化接收方秘钥

      • KeyFactory:秘钥工厂,作用是生成秘钥,也可以说是通过秘钥的规范来还原秘钥 ,方法generatePublic()、generatePrivate()
      • X509EncodedKeySpec:根据ASN.1标准进行秘钥编码
      • DHPublicKey:DH专门提供的公钥的具体形式
      • DHParameterSpec:DH算法使用的参数的集合,就是DH中使用的参数通常都是放到这个类里使用
      • KeyPairGenerator:生成KeyPair的类
      • PrivateKey:私钥
    • 秘钥构建

      • KeyAgreement:提供秘钥一致性(或秘钥交换)协议的功能
      • SecretKey:秘密秘钥,存在的唯一目的是为了生成一个分组的秘密秘钥,同时提供了类型安全的操作
      • KeyFactory
      • X509EncodedKeySpec
      • PublicKey
    • 加密、解密

      • Cipher:为加密、解密提供密码功能的类,它是JCE框架的核心内容,通过工厂方法创建实例

      demo见 :
      在这里插入图片描述

    RSA-基于因子分解

    DH算法为非对称加密提供了一个好的基础,RSA就是在这个基础上提供的一个好的算法,是被广泛接受实现的公开算法,有的人说它已经成为非对称加密的标准,当然这不是官方的机构的说法,是事实上的标准。
    特点是不仅仅在数据加密时候用到,也在数字签名的时候用到。它有公钥加密私钥解密、公钥解密私钥加密两种方式,它比DES来说比较慢。
    基于的是大因数分解比较难数学难题的一个算法。

    秘钥长度默认长度工作模式填充方式实现方
    512~65536(64的倍数)1024ECBNoPadding、PKCS1Padding、OAEPWITHMD5AndMGF1Pading、OAEPWITHSHA1AndMGF1Pading、OAEPWITHSHA256AndMGF1Pading、OAEPWITHSHA384AndMGF1Pading、OAEPWITHSHA512AndMGF1PadingJDK
    512~65536(64的倍数)2048NONENoPadding、PKCS1Padding、OAEPWITHMD5AndMGF1Pading、OAEPWITHSHA1AndMGF1Pading、OAEPWITHSHA224AndMGF1Pading、OAEPWITHSHA256AndMGF1Pading、OAEPWITHSHA384AndMGF1Pading、OAEPWITHSHA512AndMGF1Pading、ISO9796-1PaddingBC

    在这里插入图片描述

    ElGamal-基于离散对数

    和RSA不同的是,一:只提供公钥加密私钥解密算法,不提供私钥加密公钥解密,二:JDK里没有实现,Bouncy Castle有实现。这个算法在构建秘钥的时候和RSA几乎是相同的,说是RSA的补充也好,说是和RSA共同构成了非对称加密的算法实现也好,jdk是没有提供的,BC提供了。生成秘钥对后,公钥可以通过安全、非安全的方式发送给对方,其实公钥通过安全、非安全的方式发送给对方并没有那么重要了。

    秘钥长度默认长度工作模式填充方式实现方
    160~16384(8的倍数)1024ECB、NONENoPadding、PKCS1Padding、OAEPWITHMD5AndMGF1Pading、OAEPWITHSHA1AndMGF1Pading、OAEPWITHSHA224AndMGF1Pading、OAEPWITHSHA256AndMGF1Pading、OAEPWITHSHA384AndMGF1Pading、OAEPWITHSHA512AndMGF1Pading、ISO9796-1PaddingBC

    在这里插入图片描述

    ECC(Elliptical Curve Cryptography)—椭圆曲线加密

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

    2012-11-25 18:42:53
    这是本人总结的Java 非对称 加密 算法,有疑问可以找我1038546502@qq.com
  • 设计一个使用RSA算法的加解密系统。 1. 设计操作界面; 2. 对输入的明文可以进行加解密; 3. 对指定的文件可以加解密。
  • DES算法为密码体制中的对称密码体制,是一个分组加密算法,典型的DES以64位为分组对数据加密,加密和解密用的是同一个算法。 这里以Java代码实现DES算法。
  • 最近突发奇想要往数据库里保存一些机密的东西,然后就想着怎么让别人即使进入到了数据库也看不懂存储的是什么,那么只有加密了;可是我们自己还要看呢,那只能找一些对称...下面就介绍了php中简单的对称加密算法实现
  • 对称加密算法非对称加密算法

    千次阅读 2020-10-15 17:47:18
    常用的对称加密算法:AES,RC4,3DES 传输的示意图如下所示: 第二 、对称加密: 非对称加密算法实现机密信息交换的基本过程是: 甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开; 得到该公用密钥的...

    第一 对称加密:

    对称加密是指,加密方和解密方使用同样的秘钥来进行加密和解密。

    在对称加密算法中,数据发信方将明文( 原始数据 )和加密 密钥 (mi yue)一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。

    常用的对称加密算法:AES,RC4,3DES

    传输的示意图如下所示:

     

    第二 、非对称加密:

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

    1. 甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;
    2. 得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;
    3. 甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。
    4. 甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。

    非对称加密算法:RSA,DSA/DSS 

    用通俗易懂的话来解释非对称加密:

    看一个小时候经常在《趣味数学》这类书里的一个数学小魔术:

    让对方任意想一个3位数,并把这个数和91相乘,然后告诉我积的最后三位数,我就可以猜出对方想的是什么数字啦!比如对方想的是123,那么对方就计算出123 * 91等于11193,并把结果的末三位193告诉我。看起来,这么做似乎损失了不少信息,让我没法反推出原来的数。不过,我仍然有办法:只需要把对方告诉我的结果再乘以11,乘积的末三位就是对方刚开始想的数了。可以验证一下,193 * 11 = 2123,末三位正是对方所想的秘密数字!

    其实道理很简单,91乘以11等于1001,而任何一个三位数乘以1001后,末三位显然都不变(例如123乘以1001就等于123123)。

    知道原理后,我们可以构造一个定义域和值域更大的加密解密系统。比方说,任意一个数乘以400000001后,末8位都不变,而400000001 = 19801 * 20201,于是你来乘以19801,我来乘以20201,又一个加密解密不对称的系统就构造好了。

    甚至可以构造得更大一些:4000000000000000000000000000001 = 1199481995446957 * 3334772856269093,这样我们就成功构造了一个30位的加密系统。

    这是一件非常coooooooool的事情,任何人都可以按照我公布的方法加密一个数,但是只有我才知道怎么把所得的密文变回去。

    其安全性就建立在算乘积非常容易,但是要把4000000000000000000000000000001分解成后面两个数相乘,在没有计算机的时代几乎不可能成功!但如果仅仅按照上面的思路,如果对方知道原理,知道我要构造出带很多0的数,根据19801和8位算法这2个条件非常容易穷举出400000001这个目标值。

    要解决这个问题,真实世界就不是使用乘法了,比如RSA算法使用的是指数和取模运算,但本质上就是上面这套思想。

    传输的示意图如下所示:

    如上图所示,客户端用公钥对请求内容加密,服务器使用私钥对内容解密,反之亦然,但上述过程也存在缺点:

    公钥是公开的(也就是黑客也会有公钥),所以第 ④ 步私钥加密的信息,如果被黑客截获,其可以使用公钥进行解密,获取其中的内容。

     

    非对称和对称完美结合

    非对称加密既然也有缺陷,那我们就将对称加密,非对称加密两者结合起来,取其精华、去其糟粕,发挥两者的各自的优势:

    如上图所示

    1. 第 ③ 步时,客户端说:(咱们后续回话采用对称加密吧,这是对称加密的算法和对称密钥)这段话用公钥进行加密,然后传给服务器
    2. 服务器收到信息后,用私钥解密,提取出对称加密算法和对称密钥后,服务器说:(好的)对称密钥加密
    3. 后续两者之间信息的传输就可以使用对称加密的方式了

    这是个非常非常经典的数据传输过程,也是Https传输协议里面最经典的部分。也是把对称加密和非对称加密的作用发挥到了很好的地方。在https传输的过程中,如果单独只用对称加密,或者单独使用非对称加密都会出现问题。

    展开全文
  • C语言实现AES-128对称加解密算法。编译环境:VS2010。请参考我的博客https://blog.csdn.net/u013073067/article/details/86529111 分析代码
  • 主要介绍了Java 对称加密使用DES / 3DES / AES 这三种算法分别实现的相关资料,这里提供了实例代码,需要的朋友可以参考下
  • 主要介绍了Java实现对称加密算法AES,结合实例形式分析了对称加密算法AES的定义、特点、用法及使用场景,需要的朋友可以参考下
  • AES对称加密算法的Python代码实现,含基础UI界面,课程设计 AES加密算法涉及4种操作,分别是字节替代、行移位、列混淆和轮密钥加,解密算法的每一步分别对应加密算法的逆操作,且所有操作的顺序相反。加解密中每轮的...
  • C语言实现国密SM4对称加解密算法。编译环境:VS2010。请参考我的博客https://blog.csdn.net/u013073067/article/details/86578753 分析代码
  • 利用MFC实现AES非对称加密算法,其中有详细的算法注释
  • 一种常用的非对称加密算法. 非对称加密算法家族包含了鼻祖DH算法,基于因子分解难题的RSA算法,基于离散对数难题的ElGamal算法和ECC算法等.在本人对接过的多家银行和第三方支付接口中,RSA算法是非对称加密中的网红花旦...
  • 传统的非对称加密算法仅涉及两方:一方是发送方(加密器),另一方是接收方(解密器),其中每一方都有两个不同的密钥:私钥和公钥。 但是,如果将其应用在某些面向多方的环境中,则可能会存在一个严重的问题,即各...
  • 非对称加密算法——RSA算法原理及C++实现

    千次阅读 多人点赞 2021-03-18 09:23:20
    什么是非对称加密算法三. 双方交换信息工作流程四.密钥生成数学原理五.总结公钥和私钥生成步骤六.解决大数运算1.getCountAdd() 解决大数相加2. getCountExp() 解决大数幂运算3. getCountmod() 解决大数求余七.举个...
  • 对称加密算法中,数据发信方将明文(原始数据)和加密密钥(mi yue)一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。常用的对称加密算法:AES,RC4,3DES传输的示意图如下所示:如上图所示,此种...
  • 国密算法SM2算法 C语言源码 签名验签 加解密, 密钥交换
  • 对称与非对称加密算法

    千次阅读 2021-01-12 11:09:33
    二、非对称加密算法:常见的非对称加密算法:RSA、DSA(数字签名用)、ECC(移动设备用)、Diffie-Hellman、El Gamal。 三、散列算法(Hash算法---单向加密算法):常见的Hash算法:MD2、MD4、MD5、HAVAL、SHA、SHA...
  • 例如,最古老的斯巴达加密棒,广泛应用于公元前7世纪的古希腊。16世纪意大利数学家卡尔达诺发明的栅格密码,基于单表代换的凯撒密码、猪圈密码,基于多表代换的维吉尼亚密码,二战中德军广泛使用的恩格玛加密机…但...
  •  假如现实世界中存在A和B进行通讯,为了实现安全的通讯通道上实现信息的保密性、完整性、可用性(即信息安全的三个性质),A和B约定使用非对称加密通道进行通讯,具体过程如下:  说明: ...
  • 本文主要介绍对称加密算法(symmetric encryption algorithm)和非对称加密算法(asymmetric cryptographic algorithm)的相关知识。 1 对称加密算法 1.1 概述 对称加密算法是应用较早的加密算法,技术成熟。 在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 61,614
精华内容 24,645
关键字:

非对称加密算法实现