• 密码学基础之对称加密算法


    消息摘要算法

    消息摘要算法又称为单向散列hash算法。其主要特点是加密过程中不需要密钥,相同的输入数据经过hash后才能得到相同的hash值且由hash值无法反推出原始数据。常见的消息摘要算法有md系列(md3,md4,md5)sha系列(sha-1,sha-2)crc系列等。一般hash后的结果位数越越长越安全,md5计算的散列值为128位可以转化为字符形式就是32个字符。而sha-160计算的hash值为160位转化为字符形式就是40个字符,所以相比md5而言sha-160更安全。

    对称加密算法

    对称加密算法的特点是加密与解密使用相同的秘钥,解密算法相当于加密算法的逆运算。常见的对称加密有RC系列(RC4,RC2),DES,AES和IDEA等。对称加密中的秘钥的保存尤为重要,因为一旦秘钥泄露加密的数据就会被轻松地解密,而且因为一般对称加密中的秘钥都是一组无意义的字节数据,所以秘钥的管理很麻烦。

    PBE算法

    这里的PBE(Password based encryption)算法又叫基于口令加密,起并不是一种全新的算法而是对称加密算法的一种包装。因为在对称加密中key(秘钥)是一组无意义的数据不方便表示,而在PBE中口令也叫密码是一个字符串。

    • 先将PBE + salt盐值(一个随机数)经过单向散列后得到hash值,然后用这个hash值作为对称加密的秘钥对数据进行加密。因为salt盐值是随机的,所以每次对应的秘钥key也是不同的,那通过对称加密后的到的密文每次也是不一样的。

    crypto-js 中的aes加密

    crypto-js是js代码实现的一个加密库,其提供的aes算法就支持PBE形式。

    • 其会先将password密码和一个8个字节的盐值(随机数)通过md5散列后生产一个128位的数据作为iv
    • 然后将password密码和盐值通过sha-256散列后生成一个256位的数据作为key
    • 然后利用这个iv和key将密文通过AES加密后生成密文
    • 在传输给服务端时会将八个字节的salt盐值也传递过去,这样服务端在得到数据后就可以取出salt值,然后通过实现约定的口令经过相同的散列算法得到iv和key,然后对密文进行aes解密。

    所以PBE基于口令的加密算法的优点是不需要单独保存key,以口令(密码)的形式进行加密。缺点是口令如果过于简单可能会被猜测到。

  • 相关阅读:
    MySQL Backup mysqldump 常用选项与主要用法--转发
    openssl 之RSA加密
    Windows 之Dll/lib导出
    缓存雪崩、击穿、穿透
    时间复杂度
    分布式事务
    mysql主从复制与读写分离
    什么是消息队列?
    微服务架构演化
    高并发问题常规思路
  • 原文地址:https://www.cnblogs.com/revercc/p/16709590.html
Copyright © 2020-2023  润新知