keystore密钥文件使用的算法-PBKDF2WithHmacSHA1 和Scrypt
PBKDF2
简单而言就是将salted hash进行多次重复计算,这个次数是可选择的。如果计算一次所需要的时间是1微秒,那么计算1百万次就需要1秒钟。假如攻击一个密码所需的rainbow table有1千万条,建立所对应的rainbow table所需要的时间就是115天。这个代价足以让大部分的攻击者忘而生畏
实现:
P 口令,一字节串
S 盐值,字节串 salt
2. 假设l是导出密钥的hLen长度的字节块的个数,r表示最后一个块的字节数。
r = dkLen - (l - 1) * hLen .
T_2 = F (P, S, c, 2) ,
...
T_l = F (P, S, c, l) ,
U_2 = PRF (P, U_1) ,
...
U_c = PRF (P, U_{c-1}) .
{
"crypto":{
"cipher":"aes-128-ctr",
"cipherparams":{
"iv":"6087dab2f9fdbbfaddc31a909735c1e6"
},
"ciphertext":"5318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46",
"kdf":"pbkdf2",
"kdfparams":{
"c":,//迭代次数
"dklen":,//导出密钥的指定字节长度
"prf":"hmac-sha256",//基本伪随机函数,用于迭代中的计算函数
"salt":"ae3cd4e7013836a3df6bd7241b12db061dbe2c6785853cce422d148a624ce0bd"//盐值
},
"mac":"517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2"
},
"id":"3198bc9c-6672-5ab3-d995-4942343ae5b6",
"version":
}
⚠️hmac是Hash-based Message Authentication Code的简写,就是指哈希消息认证码,包含有很多种哈希加密算法,sha256是其中一种。所以hmac-sha256的意思就是使用sha256哈希算法
scrypt
https://tools.ietf.org/html/rfc7914(RFC 7914《The scrypt Password-Based Key Derivation Function》关于算法的描述)
https://zhuanlan.zhihu.com/p/32484253
Scrypt算法会产生一个p个块元素的数组,p的值大概比2^31(42亿)小几个数量级,实际使用中可能是十万~百万级别吧?对于每个块元素,都是进行一系列复杂运算生成的哈希值,最后对整个数组再进行PBKDF2-HMAC-SHA256运算得到最终结果。
Scrypt算法保证只有将每个元素都存放在内存中,最后才能算出正确的结果,从算法层面保证了对大量内存空间的硬需求,从而提高了运算成本。
{
"address":"a9886ac7489ecbcbd79268a79ef00d940e5fe1f2",
"crypto":{
"cipher":"aes-128-ctr",
"cipherparams":{
"iv":"c542cf883299b5b0a29155091054028d"
},
"ciphertext":"0a83c77235840cffcfcc5afe5908f2d7f89d7d54c4a796dfe2f193e90413ee9d",
"kdf":"scrypt",
"kdfparams":{
"dklen":,//导出密钥的指定字节长度
"n":,//迭代次数
"r":,//底层哈希的块大小。默认为8
"p":,//并行化的因素。默认为1
"salt":"699f7bf5f6985068dfaaff9db3b06aea8fe3dd3140b3addb4e60620ee97a0316"//盐值
},
"mac":"613fed2605240a2ff08b8d93ccc48c5b3d5023b7088189515d70df41d65f44de"
},
"id":"0edf817a-ee0e-4e25-8314-1f9e88a60811",
"version":
}
salt 的定义是通过一个单向函数获取随机数据来为密码或口令添加一些额外的数据。更简单的说法则是通过生成一些随机的文本将其附加到密码上来生成 Hash。
为 Hash 加 salt 的主要目的是用来防止预先被计算好的彩虹表攻击。
现在加 salt 好处是将原本一次比较变为多次比较从而减慢对密码 Hash 值的猜测,否则对 Hash 密码库的破解效率将是非常之高。
bcrypt
keystore密钥文件使用的算法-PBKDF2WithHmacSHA1 和Scrypt的更多相关文章
- Android Studio apk打包,keystore.jks文件生成,根据keystore密钥获取SHA1安全码
keystore.jks文件生成,打包APK 选择Build > Generate Signed APK 出现如下弹框: 然后点击Create new...(创建的意思)出现另一个弹框,在做如下 ...
- Android Eclipse keystore.jks文件生成,根据keystore密钥获取SHA1安全码 ,apk打包
keystore.jks文件生成,打包APK 选中项目右键-> Android Tools->Export Signed Application Package ,如图: 之后 点击Nex ...
- 什么是以太坊私钥储存(Keystore)文件
进入keystore管理以太坊私钥的障碍很大,主要是因为以太坊客户端在直接的命令行或图形界面下隐藏了大部分的密码复杂性. 例如,用geth: $ geth account new Your new a ...
- 全面解决.Net与Java互通时的RSA加解密问题,使用PEM格式的密钥文件
作者: zyl910 一.缘由 RSA是一种常用的非对称加密算法.所以有时需要在不用编程语言中分别使用RSA的加密.解密.例如用Java做后台服务端,用C#开发桌面的客户端软件时. 由于 .Net.J ...
- 034_非交互自动生成 SSH 密钥文件
#!/bin/bash#-t 指定 SSH 密钥的算法为 RSA 算法;-N 设置密钥的密码为空;-f 指定生成的密钥文件存放在哪里 rm -rf ~/.ssh/{known_hosts,id_rsa ...
- JSCH通过密钥文件进行远程访问
需求:WEB app 需要使用JSCH来通过密钥文件的方式进行SFTP/SSH访问远程LINUX机器 实现方式:假设远程机器都含有用户名为hadoop的用户,因为密码因为策略的要求密码会随时间发生变化 ...
- 无法导入以下密钥文件: xxxx.pfx,该密钥文件可能受密码保护 的解决方案
无法导入以下密钥文件: xxxx.pfx,该密钥文件可能受密码保护.若要更正此问题,请尝试再次导入证书,或手动将证书安装到具有以下密钥容器名称的强名称 CSP: VS_KEY_A5A29909FF6D ...
- .NET使用OpenSSL生成的pem密钥文件
NET要使用OpenSSL生成的pem密钥文件,网上资料很少(http://www.faqs.org/rfcs/rfc1421.html,RFC1421文件又老长老长),仅有的资料还是有错误的,所以今 ...
- rsync 密钥文件错误问题总结
rsync 可以使用 --password-file 选项指定密钥文件,密钥文件中简单存放 rsync 密码:在第一次使用密钥文件的时候经常遇到文件权限相关问题:这里总结一下,我遇到的问题. 问题描述 ...
随机推荐
- vue-cli脚手架搭建项目简单入门一
搭建系统: Windows系统 简单了解Node.js.npm,安装Node.js,下载网址:http://nodejs.cn/download/ 查看node,npm安装成功与否.打开cmd命令行, ...
- iis 站点中文乱码 解决方案
问题描述:iis乱码问题 1:在vs里开发没问题,发布后用发布文件替换iis文件没问题,但是如果用fis3发布后导致iis站点访问时出现部分中文乱码 原理:文件编码格式不统一 解决方案: 四个步骤解决 ...
- 细说mysql replace into
replace语句在一般的情况下和insert差不多,但是如果表中存在primary 或者unique索引的时候,如果插入的数据和原来的primary key或者unique相同的时候,会删除原来的数 ...
- CSS 3D transforms
https://www.creativebloq.com/css3/20-stunning-examples-css-3d-transforms-11112759 https://github.com ...
- php文件与HTML页面的数据交互
注意:首先需要保证本地配置了php开发环境,如WAMP开发环境 WAMP配置:https://www.cnblogs.com/shiyiaccn/p/9984579.html php获取HTML页面返 ...
- python之网络通信协议
TCP/IP五层协议和OSI的七层协议: TCP和UDP的区别: Tcp协议:面向连接,数据可靠,传输效率低,面向字节流 Udp协议:面向无连接,数据不可靠,传输效率高,面向报文
- 使用bootstrap的JS插件实现模态框效果
在上一篇文章中,我们使用 js+css 实现了模态框效果,在理解了模态框的基本实现方法和实现效果后,我们就要寻找更快捷的方法,又快又好的来完成模态框开发需求,从而节约时间,提高效率.一个好的轮子,不仅 ...
- MVC与单元测试实践之健身网站(完)-备案与部署
主页-http://www.zhixin9001.cn/Home/Introduce GitHub- https://github.com/zhixin9001/Fitness 这是关于Fit网站的最 ...
- 《InsideC#》笔记(十) 异常处理
CLR的作用之一是处理异常.通过自动的内存和资源管理可以避免一部分异常,然后借助强类型系统还可以捕获运行时异常. 一 异常基础 异常处理系统保护四个关键字:try,catch,throw,finall ...
- CSS| 學習心得
resize :both , 只有overflow設置為auto時, 才能起作用???