密码学基础

1. 加密和解密

  1. 加密三要素是什么?
    答:明文/密文、**、加密算法。
  2. 加密三要素相互之间如何配合?
    答:明文/密文 * 加密算法 + ** = 密文/明文;
  3. 加密的方法有哪些?
    答:对称加密与非对称加密
  4. 什么是对称加密?特点?
    答:对称加密是指双方使用同一个**,既可以加密也可以解密。
    特点:加密效率高,速度快,通常发送大量数据时使用;加密强度低;**分发困难,因为需要约定好相同的**,而且若与多个用户发送数据,都需要不同的**,就需要保管大量的**成为负担。
  5. 如何解决**分发困难问题?
    答:通过非对称加密将对称加密的**协商好。
  6. 什么是非对称加密?
    答:非对称加密是指由**对即公钥与私钥组成,公钥可以分发,私钥不能泄露。公钥私钥相互加密解密。
  7. 非对称加密的特点?
    答:效率较低,加密强度高,因为**比对称加密的长度长。与对称加密相对。
  8. DES加密的方式?
    答:**8byte,将数据分组,每组8byte,对数据进行加密算法与**运算加密。
  9. 3DES加密的方式?特点?
    答:**24byte分三组每组8byte,数据依然每组8byte, 对数据进行加密算法与第一组**加密,再用第二组**解密,再用第三组**加密。三组**不同,因此第二组解密得到的结果并非原始数据。、
    特点:安全但效率低;
  10. AES算法加密方式?特点?
    答:**长度16、24、32byte,字节越大加密程度越高;原始数据分组同**长度相同。API用Open SSL。
  11. 常用非对称加密算法?使用场景?
    答:RSA加密算法。用户**交换和数字签名。
  12. RSA算法如何实现**交换?
    答:
    (1)主机A生成非对称**,将公钥发送给B;
    (2)主机B生成对称**,通过公钥加密后发送给A;
    (3)主机A通过私钥解密B发送的对称**,得到对称加***;
  13. 什么是哈希算法?
    答:可以将任意长度数据转换为固定长度数据(不同哈希算法长度不同);有很强的碰撞性(不同数据的哈希运算结果不同);运算不可逆(无法通过结果得到原始数据)。
    注意:哈希算法并非加密算法,其知识生成了一个散列值来代表文件。
  14. 哈希运算的结果?
    答:称为哈希值/散列值/指纹。
  15. 散列值的形式?原因?
    答:散列值表现为是一串16进制数,但实质是一堆二进制数值但无法显示,为了直观显示,将二进制数值转为16进制数。
  16. 常用的哈希算法?特点?
    答:MD4/MD5:散列值长度16byte,碰撞性已经被攻破;SHA1:散列值长度20byte;SHA2:包含有SHA224/SHA256/SHA384/SHA512,其后缀代表所占bit数,即占用后缀/8byte大小。
  17. 散列值的应用场景?
    答:如向百度网盘上传数据时,若服务器中已有该文件,则会在服务器数据库中存由该数据的散列值,上传该数据时就可以秒传,但实际上并没有将本地的文件传到网盘中。
  18. 什么是消息认证码HMAC?
    答:将原始数据与**一同进行哈希运算,得到的散列值就是消息认证码。及(原始数据+**)*哈希运算 = 消息认证码。
  19. 为什么需要消息认证码?原理
    答:为了验证数据是否被篡改。密码学基础
    当A送数据helloworld+helloworld的散列值给B,若发送途中被C拦截,B将数据修改位“你好世界”并重新计算散列值后发给B,B将原始数据哈希运算后后发现与得到的你好世界的散列值相同,但实际数据已不是helloworld。
    密码学基础
    但若发送的是原始数据+消息认证码,C即便截取了也无法修改,因为C无法得知**是多少;即便C修改为你好世界,B得到数据后将你好世界带入**进行哈希运算,得到的散列值与消息认证码不同,就可知道数据已被篡改。
  20. 消息认证码的弊端?
    答:**分发问题。因为消息认证码的哈希运算需要双方拥有相同的**,即需要先进性对称加密。
  21. 为什么要数字签名?
    答:数字签名是为了某数据属于某人。
  22. 如何实现数字签名?
    答:
    (1)将原始数据哈希运算的散列值进行私钥加密;
    (2)将原始数据后加密文发送出去;
    (3)将得到的数据拆分原始数据和密文;
    (4)对原始数据哈希运算得到散列值;
    (5)将密文通过公钥解密后对比(4)得到的散列值;
    (6)相同则校验成功。密码学基础
  23. 什么是OpenSSL?
    答:其封装了主要的密码算法、常用的**和SSL协议及证书封装管理功能,是一个安全套接字层的密码库。
  24. 什么是SSL?
    答:是安全套接层协议,可以在internet上提供秘密性传输。