六、HASH、对称加密

Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数

  • HASH的特点:
    1.算法是公开的
    2.对相同数据运算,得到的结果是一样的
    3.对不同数据运算,如MD5得到的结果默认是128位固定的长度,32个字符(16进制标识)
    4.没法逆运算(无限的数据得到有限的数据,那么一定会存在一个或者多个相同的HASH值表示不同的数据,专业术语叫做散列碰撞)
    5.信息摘要,信息“指纹”,是用来做数据识别的

  • HASH的用途:
    •用户密码的加密
    •搜索引擎
    •版权
    •数字签名

聊一聊:

  • 服务器数据库直接存放用户密码可以吗?
    答:不行,其一:这样的话数据库泄漏了,麻烦就大了,用户的所有信息都泄漏了,其二:用户密码明文,开发人员、运营人员等等,大家都知道用户的隐私信息,不安全。
    结论:用户密码保存在数据库里需要进行加密!!

  • 用RSA加密可以吗?
    RSA安全性来说确实比较安全,传输的时候不怕被破译,但是,保存在数据库里的还是明文,数据库被攻破了,还是会泄漏,有的小伙伴肯定又会说,那么保持在数据库的用密文不就行了吗?这样都是密文,就算数据库被攻破了,也无法获取用户的真实密码,这样不就安全了吗?答案是否定的,只要有公钥public key,私钥private key,我就有办法解密获取明文,开发人员都有,运营人员也有,只要有公钥私钥,就能获取明文,不安全。

  • 那么要怎么样做,才能保证保存在数据库里面的密码是相对安全的呢?
    用HASH,不可逆运算,但是不能用简单的HASH,例如md5,因为有个网站https://www.cmd5.com/ 记录了很多简单的md5值解密等等,那么给一个加盐可以吗,加盐可以,但是也不是很安全,看下图,这个网站已经把常用的一些加密方式给记录起来了,把无聊做到了极致,就是牛!!

    image.png

    最终方案,用HMAC,两次散列运算,第一次明文进行md5,然后第二次拿到key,这个key通过后台服务器接口获取,密文拼接上key在进行一次md5,两次md5,key的传输过程中可以用RSA加密,保证传输的安全性,这个一个用户对应一个key,每个用户拿到的key都是不一样的,相对安全。

  • 那么问题来了,我不用破解你的密码,我直接抓包获取你加密的数据,然后模拟你的登录请求不就行了吗?
    是的,密码安全性保证了,但是别人不破解也能用,模拟登录,那么我们还需要进行进一步的处理,就是刚刚两次md5的HMAC在拼接上一个时间,这个时间是服务器返回的时间,格式可以是yyyy-MM-HHhh-mm-ss,然后再进行md5加密,这样,当我们登录请求的时候,服务端接受到我们的请求,客户端和服务端协商好一个时间范围,在这个时间范围内,都认为是成功的,超过这个约定的时间,就都失败,服务端拿到当前时间,加上数据库保存的密码HMAC进行md5,然后进行对比,如果一样登录成功,否则,在约定的时间范围内继续尝试,如果对比都匹配不上,就返回登录失败。

  • 数字签名
    验证内容的真实性
    发送端,发送内容,然后用RSA加密内容的HASH值,然后进行网络传输,RSA加密安全系数比较高,很难破译,接受端接受到内容的时候,首先使用RSA解密获取到HASH值,然后再把接受到的内容获取一下HASH值,然后吧解密出来的HASH值和内容HASH值进行对比,如果一样,说明是没有被篡改过的,否则,就是被修改过,不安全。

  • 对称加密:
    AES(高级密码标准)
    DES(数据加密标准(用得少,因为强度不够)
    3DES(使用3个密钥,对相同的数据执行3次加密,强度增强)

应用模式:
•ECB(Electronic Code Book):电子密码本模式。每一块数据,独立加密。

最基本的加密模式,也就是通常理解的加密,相同的明文将永远加密成相同的密文,无初始向量,容易受到密码本重放攻击,一般情况下很少用。

•CBC(Cipher Block Chaining):密码分组链接模式。使用一个密钥和一个初始化向量[IV]对数据执行加密。

明文被加密前要与前面的密文进行异或运算后再加密,因此只要选择不同的初始向量,相同的密文加密后会形成不同的密文,这是目前应用最广泛的模式。CBC加密后的密文是上下文相关的,但明文的错误不会传递到后续分组,但如果一个分组丢失,后面的分组将全部作废(同步错误)。

•CBC可以有效的保证密文的完整性,如果一个数据块在传递是丢失或改变,后面的数据将无法正常解密。

终端命令

//aes-128-ecb加密
echo -n hello | openssl enc -aes-128-ecb -K 616263 -nosalt | base64
//aes-128-ecb解密
echo -n d1QG4T2tivoi0Kiu3NEmZQ== | base64 -D | openssl enc -aes-128-ecb -K 616263 -nosalt -d
//aes-128-cbc加密
 echo -n hello | openssl enc -aes-128-cbc -iv 0102030405060708 -K 616263 -nosalt | base64
//aes-128-cbc解密
echo -n u3W/N816uzFpcg6pZ+kbdg== | base64 -D | openssl enc -aes-128-cbc -iv 0102030405060708 -K 616263 -nosalt -d
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容

  • 1. HASH算法简介 1.1 HASH是什么? Hash算法(也叫散列算法) Hash,一般翻译做“散列”,也有...
    孔雨露阅读 533评论 0 5
  • HASH 现在在处理App的用户敏感信息方面,大部分都是采用HASH加密的方式来进行处理。 关于哈希算法 详细看这...
    Phant阅读 11,306评论 0 0
  • HASH的简单介绍: Hash,一般也被称为散列,是一种通过算法将一段任意的输入转化成一个固定长度(通常是128个...
    SharaYuki阅读 1,810评论 0 5
  • HASH概述 Hash:一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入通过散列算法变换成固定长...
    帅驼驼阅读 914评论 0 3
  • 一、hash 1. 什么是hash? Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入...
    我是好宝宝_6966阅读 1,177评论 0 1