精华内容
下载资源
问答
  • 对称加密典型应用

    千次阅读 2019-09-15 13:20:29
    1.数字签名 对摘要信息进行加密,这样做就能保证原文与公钥的一致性。 2.保密通讯(SSL与HTTPS) 实际上是使用非对称加密传递对称加密的密钥。 ...

    1.数字签名


     

    对摘要信息进行加密,这样做就能保证原文与公钥的一致性。

     

     

    2.保密通讯(SSL与HTTPS)


     

    实际上是使用非对称加密传递对称加密的密钥。

     

    转载于:https://my.oschina.net/chunquedong/blog/54348

    展开全文
  • 对称加密应用

    千次阅读 2019-12-04 09:19:44
    估计有人看到这篇文章标题的时候会有很多的疑惑,非对称加密是干什么的,"非对称"大致很好理解,意思和对称相反,加密也能理解,但是非对称加密是个什么玩意儿。这东西有什么应用呢? 在开始聊非对称加密之前,...

    估计有人看到这篇文章标题的时候会有很多的疑惑,非对称加密是干什么的,"非对称"大致很好理解,意思和对称相反,加密也能理解,但是非对称加密是个什么玩意儿。这东西有什么应用呢?

     

    在开始聊非对称加密之前,咱们先来聊聊对称加密,什么是对称加密呢?

     

    首先我们要清楚,网络中有些数据进行传输的时候,是需要加密的,比方说https,https中就用到了对称加密。

     

    在http协议中,我们将用户发送给服务器端的真实信息叫做明文,明文传输很不安全,所以我们要将明文进行加密,打个比方,我们将明文锁在一个箱子里面,用户有这个箱子的钥匙,这个箱子加上明文就叫做密文,我们把密文发送到服务器,服务器也有一把钥匙,这把钥匙和用户的钥匙是一样的,所以能打开箱子进行解密,这个过程就叫对称加密。

     

    因为客户的钥匙和服务端的钥匙是一样的,所以叫做对称加密。

     

    图A

     

    这里的对称加密有一个缺点,只要持有钥匙就能开锁,并不能确定对方的身份,只要有人持有了钥匙就能解密。

     

    下面就该非对称加密出场了,非对称加密和对称加密不同,非对称加密有两把钥匙,一把叫做公钥,一把叫做私钥。

     

    两个密钥是不同的,也可以称作“不对称”,公钥可以公开给任何人使用,而私钥必须严格保密(理论上不能被第三方知道,除非你的计算机被入侵)。这是非对称加密的一个非常重要的一个特性。

     

    还有一个重要的特性,公钥和私钥有个特别的“单向”性,虽然都可以用来加密解密,但公钥加密后只能用私钥解密,私钥加密后只能用公钥解密,具体如何实现的,这里不做讨论。

     

    通常情况下,⽹站保管私钥,将公钥分发给客户,客户登录⽹站只要⽤公钥加密就⾏了,密⽂只能由私钥持有者才 能解密。⽽hacker因为没有私钥,所以就⽆法破解密⽂。如图:

     

    图B.

    非对称加密在数据传输过程中并不能完全保证数据的完整性,比方说有中间人截取了公钥,发布一把假的公钥,非对称加密就形同虚设了。

     

    但是我们这里讨论的是非对称加密的另外一个特性,非对称加密主要的功能是身份的认证,这里我们以github的公钥配置和ssh的免密登录两个案例为大家来演示非对称加密如何实现身份的认证。

     

    文章读到这里请大家思考一个问题,大家仔细观察上面的图B,私钥解密完数据后,能判断出数据是哪个客户端发送过来的吗?

     

    答案肯定是不能,我们在仔细回忆一下公私钥加密的特性,公钥加密私钥解密私钥加密公钥解密,私钥唯一保存,公钥所有客户端都有保存。

     

    仔细观察上面的图B,是公钥加密,私钥来解密,私钥并不知道消息是谁发送的,但是反过来呢?私钥加密公钥解密,我们将上面的图发过来画,如图:

     

     

    我们用私钥加密,私钥是唯一的,持有公钥的客户端,如果接收到与其匹配的私钥加密的信息,就可以解密,如果解密完成,就能判断是谁发送的信息了,因为私钥唯一(就像人的身份证号码是的,知道你的身份证号码就能确定你是谁),这样就完成了身份验证。

     

    回过头来,在看一下我们通常配置github账号的公钥的时候,我们先在本地用ssh-keygen命令生成公私钥,id_rsa.pub和id_rsa, 前者是公钥,后者是私钥,我们将公钥填入我们github账号的配置里面,如图:

     

     

    这样,我们再向远程仓库推送或者拉取代码就不需要在输入密码和账号了。

     

    我们思考一下推送代码的流程,github云端保存我们的公钥,我们每次发起命令(git pull git push 等等),本地计算机用私钥加密,云端的公钥解密,github云端仓库解密完成说明公私钥匹配,完成身份验证,所以可以免去输入账号密码的麻烦。

     

    另外一个应用就是用ssh命令登录远程的linux服务器,我们如果不用公私钥配对的方式验证身份,那么我们每次登录远超过linux服务器,都需要输入账号和密码验证,如果你频繁操作这是很麻烦的,或者如果要执行一些诸如scp的命令等等是很不友好的,所以我们可以使用公私钥配对的方式,ssh支持公私钥配对。

     

    首先还是我们本地生成公私钥,当然如果你本地计算机已经生成公私钥就不需要重复生成了,我们将公钥配置到远程目标服务器,如何配置呢,通常是将公钥的内容填写到目标服务器的一个文件中,这个文件的位置在目标服务的 ~/.ssh/authorized_keys中。

     

    配置如图,登录远程服务器,进入.ssh目录,将本地计算机的公钥添加到目标服务器的 ~/.ssh/authorized_keys中。

     

     

    添加完成后,我们用cat 命令看一下authorized_keys文件的内容:

     

     

    可以看到这里配置了1把公钥,所以有拥有和这个公钥匹配的私钥的客户端可以用ssh免密登录这个服务器。

     

    将客户端公钥添加到目标服务器除了手动添加外,我们还可以使用scp_copy_id命令,完整命令如下:

     

    •  
    ssh-copy-id -i  ~/.ssh/id_rsa.pub "-p 10056 root@192.168.20.11"

     

    shh-copy-id命令是专门操作公钥的一名命令,-是指定客户端的公钥位置,一般都在用户目录的.ssh文件夹中。

     

    -p命令指定登录目标服务器的端口,默认ssh端口是22,如果是非22那么就需要添加-p指定端口了。

     

    后面就是用户名和目标服务器的ip了,用户名和目标服务器中间需要@作为间隔。

     

    以上便是非对称加密的一些应用,如果你有其他建议或者问题欢迎留言讨论。

    展开全文
  • A 和 B 要把他们的通信内容加密, 如果A/B使用相同的加密解密key,那这就是 对称加密对称加密最大的问题就是A和B之间的加密/解密key必须是唯一的。也就是如果A和C 要加密通信,同时还不想让C知道A/B之间的通信...

    1 概念

    A 和 B 要把他们的通信内容加密, 如果A/B使用相同的加密解密key,那这就是 对称加密。

    对称加密最大的问题就是A和B之间的加密/解密key必须是唯一的。也就是如果A和C 要加密通信,同时还不想让C知道A/B之间的通信内容。那么A/C之间的加密/解密用的key就不能和A/B之间的一样。

    链接一旦便多,这种机制将很难管理大量的key。

    非对称加密 就是在此环境下诞生的。非对称加密有公钥和私钥。公钥随意公开,私钥自己私密保存。

    比如 A 把公钥发给B, C。 当B,C与A通信时,先把约定好的见面信号用公钥加密,A收到后,用私钥解密,当解密后的数据就是提前约定好的见面信号的话,A 就认为B,C是受信链接。

    如果此时D也给A发送信息,但却没有正确的公钥。A就无法得到正确的见面信号,就不会受理D的请求。

     

    2 对称加密

     

    对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥加密

    也就是密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法,对称加密算法使用起来简单快捷,密钥较短,且破译困难,除了数据加密标准(DES),另一个对称密钥加密系统是国际数据加密算法(IDEA),它比DES的加密性好,而且对计算机功能要求也没有那么高

    对称加密算法在电子商务交易过程中存在几个问题:

    1.   要求提供一条安全的渠道使通讯双方在首次通讯时协商一个共同的密钥。直接的面对面协商可能是不现实而且难于实施   的,所以双方可能需要借助于邮件和电话等其它相对不够安全的手段来进行协商;
    2.   密钥的数目难于管理。因为对于每一个合作者都需要使用不同的密钥,很难适应开放社会中大量的信息交流;
    3.  对称加密算法一般不能提供信息完整性的鉴别。它无法验证发送者和接受者的身份;
    4.   对称密钥的管理和分发工作是一件具有潜在危险的和烦琐的过程。对称加密是基于共同保守秘密来实现的,采用对称加密技术的贸易双方必须保证采用的是相同的密钥,保证彼此密钥的交换是安全可靠的,同时还要设定防止密钥泄密和更改密钥的程序。


     假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要2个密钥并交换使用,如果企业内用户有n个,则整个企业共需要n×(n-1) 个密钥,密钥的生成和分发将成为企业信息部门的恶梦。

    常见的对称加密算法有DES、3DES、Blowfish、IDEA、RC4、RC5、RC6和AES

     

    3 非对称加密

    与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。

    公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。


    非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。

     非对称加密的典型应用是数字签名。

       常见的非对称加密算法有:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)

     

    4 非对称加密之公钥/私钥

    公钥与私钥原理
    1)鲍勃有两把钥匙,一把是公钥,另一把是私钥

    2)鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。

    3)苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就可以达到保密的效果。

    4)鲍勃收信后,用私钥解密,就看到了信件内容。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。

    5)鲍勃给苏珊回信,决定采用"数字签名"。他写完后先用Hash函数,生成信件的摘要(digest)。


    6)然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature)。

    7)鲍勃将这个签名,附在信件下面,一起发给苏珊。

    8)苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的。


    9)苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。


    10)复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成"数字签名",写信给苏珊,让苏珊用假的鲍勃公钥进行解密。


    11)后来,苏珊感觉不对劲,发现自己无法确定公钥是否真的属于鲍勃。她想到了一个办法,要求鲍勃去找"证书中心"(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。


    12)鲍勃拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。


    13)苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明"数字签名"是否真的是鲍勃签的。

    展开全文
  • RSA是一种典型对称加密算法,它是由三位数学家(Rivest、Shamir、Adleman)设计出来的。 应用场景 签名验证 私钥用于加密签名,公钥用于验签,签名和加密作用不同,签名并不是为了保密,而是为了保证数据是由特定...

    简单说明

    非对称加密算法中引入了公钥私钥的概念,他们一一对应,使用公钥加密只能使用对应私钥解密,反之亦然,非对称即是如此。
    RSA是一种典型非对称加密算法,它是由三位数学家(Rivest、Shamir、Adleman)设计出来的。

    应用场景

    1. 签名验证
      私钥用于加密签名,公钥用于验签,签名和加密作用不同,签名并不是为了保密,而是为了保证数据是由特定的某个人提供,而不是被其它人伪造,所以私钥的私有性就适合用在签名用途上。
    2. 加密
      公钥用于加密,私钥用于解密,因为公钥是公开的,很多人可以持有公钥。若用私钥加密,那所有持有公钥的人都可以进行解密,这是不安全的

    RSA密钥生成方法

    这里我们选择使用openssl工具生成,操作步骤如下:

    1. 生成密钥
      openssl genrsa -out rsa_pri_key.pem 1024

      说明: 其中1024是指密钥长度,密钥长度越长被暴力破解难度越大,长度可选 1024 / 2048 / 3072 / 4096
    2. 将密钥转换为PKCS8格式
      openssl pkcs8 -topk8 -inform PEM -in test_pri_key.pem -outform pem -nocrypt -out test_pri_key_pkcs8.pem
      在这里插入图片描述
      说明: PKCS8是一种密钥存储机制,他在PKCS1标准上进行了加固
    3. 生成公钥
      openssl rsa -in test_pri_key.pem -pubout -out test_public_key.pem
      在这里插入图片描述

    JAVA调用

    说明:代码中的私钥(privateKeyStr)和公钥内容(publicKeyStr)要去头去尾,即移除-----BEGIN…头尾部分

    1.加载密钥,并使用私钥加密数据

    private static RSAPrivateKey loadPrivateKeyByStr(String privateKeyStr)
            throws NoSuchAlgorithmException, InvalidKeySpecException {
        byte[] buffer = Base64.decodeBase64(privateKeyStr);
        PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(buffer);
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        return (RSAPrivateKey) keyFactory.generatePrivate(keySpec);
    }
    
    private static byte[] encryptByPrivateKey(byte[] bb, PrivateKey key) throws NoSuchAlgorithmException,
            NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException, InvalidKeyException {
        Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
        cipher.init(Cipher.ENCRYPT_MODE, key);
        byte[] doFinal = cipher.doFinal(bb);
        return doFinal;
    }
    

    2.加载公钥,通过公钥解密数据

    private static RSAPublicKey loadPublicKeyByStr(String publicKeyStr)
            throws NoSuchAlgorithmException, InvalidKeySpecException {
        byte[] buffer = Base64.decodeBase64(publicKeyStr);
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        X509EncodedKeySpec keySpec = new X509EncodedKeySpec(buffer);
        RSAPublicKey publicKey = (RSAPublicKey) keyFactory.generatePublic(keySpec);
        return publicKey;
    }
    
    private static byte[] decryptByPublicKey(byte[] b, PublicKey key) throws NoSuchAlgorithmException,
            NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
        Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
        cipher.init(Cipher.DECRYPT_MODE, key);
        return cipher.doFinal(b);
    }
    

    路漫漫其修远兮,吾将上下而求索。
    展开全文
  • 什么是对称加密技术? 对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥加密 也就是密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法,对称加密算法使用起来简单快捷,密钥...
  • 几种对称加密算法:AES,DES,3DES DES是一种分组数据加密技术(先将数据分成固定长度的小数据块,之后进行加密),速度较快,适用于大量数据加密,而3DES是一种基于DES的加密算法,使用3个不同密匙对同一个分组数据...
  • 所以就引入了加密算法,常用加密算法主要分为两类 对称加密 与 非对称加密。先看一下对称加密的主要内容。 对称加密   对称加密中,加密解密使用的都是同一个密钥。例如,甲 与 乙通信,甲用密钥对数据加密发送给...
  • 对称加密,顾名思义,解密密钥与加密密钥不同。 对称加密 对称密码学的典型算法有:AES、Twofish, Serpent, Blowfish, CAST5, Kuznyechik, RC4, DES, 3DES, Skipjack, Safer+/++ (Bluetoo...
  • 常见对称加密原理以及应用

    千次阅读 2020-07-25 16:36:03
    所谓对称加密算法,通过密钥将明文加密成密文,并且再通过同一个密钥将密文解密成明文,相对于非对称加密算法速度快效率高,对于明文文本越长效率优势越大。 常见的对称加密算法有AES、DES、3DES等,其中DES由于密钥...
  • 什么是对称加密技术? 对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥加密 也就是密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法,对称加密算法使用起来简单快捷,密钥较短...
  • 对称加密和非对称加密的比较

    千次阅读 2015-03-16 09:54:49
    对称加密和非对称加密的比较
  • 对称加密和非对称加密介绍和区别   什么是对称加密技术?  对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密...
  • 什么是对称加密技术? 对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥加密 也就是密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法,对称加密算法使用起来简单快捷,密钥较...
  • 对称加密 加解密秘钥相同,速度快 计算效率高,加密强度高 秘钥容易泄露 DES、3DES、AES、IDEA 非对称加密 分公钥和私钥 无需提前共享私钥 计算效率低 RSA、EIGamal、椭圆曲线系列 ...
  • 加密分为两大类:对称加密、非对称加密,两类加密算法各有优点,在不同的场景使用不同的算法。 对称加密 加密方将原始数据和加密密钥一起经过特殊加密算法处理后,生成密文结果,解密方使用相同的秘钥及相同加密...
  • 什么是对称加密技术?  对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法,对称加密算法使用起来简单快捷,密钥较短...
  • 对称加密/非对称加密

    千次阅读 2012-07-30 12:43:52
    对称加密  采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。  需要对加密和解密使用相同密钥的加密算法。由于其速度,对称性...
  • 一、对称加密(Symmetric Cryptography) 优缺点 二、非对称加密(asymmetric Cryptography) 优缺点 三、Hash加密算法(摘要算法) 对称加密算法的加密与解密使用的是同样的密钥,加密解密速度较快。但由于...
  • 一般金融类的产品,涉及前端和后端交互的时候,都会都严格的数据安全保证。防止黑客攻击,信息篡改。 加密方式有很多,总的来说,分为2种:对称和...常见的对称加密算法有DES、3DES、Blowfish、IDEA、RC4、RC5、RC6...
  • [b]一、什么是非对称加密算法[/b] 加密和解密所用的密钥是不一样的,所以叫“非对称”。 非对称加密算法的这两个密钥,一个称为公钥,一个称为...RSA就是典型的非对称加密算法。 关于RSA算法的解释,最经典的...
  • 什么是对称加密技术?  对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法,对称加密算法使用起来简单快捷,密钥较...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,396
精华内容 5,358
关键字:

对称加密的典型应用