Android 中的最常用得到有三种加密方式:MD5,AES,RSA.
1.MD5
MD5本质是一种散列函数,用以提供消息的完整性保护。
特点:
1.压缩性:任意长度的数据,算出的MD5值长度都是固定的;
2.容易计算:从原数据计算出MD5值很容易;
3.抗修改性:对原数据进行任何改动,哪怕只修改一个字节,所得到的MD5值都有很大的区别
4.强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(及伪造数据)是非常困难的;
2.RSA加密
RSA加密算法是一种非对称加密算法,非对称加密算法需要两个密钥:公共密钥和私有密钥。公钥和私钥是配对的,用公钥加密的数据只有配对的私钥才能解密。
RSA对加密数据的长度有限制,一般为密钥的长度值-11,要加密较长的数据,可以采用数据截取的方法,分段加密。
3.AES加密
AES加密是一种高级加密的标准,是一种区块加密标准。它是一个对称密码,就是说加密和解密用相同的密钥。WPA/WPA2经常用的加密方式就是AES加密算法。
② android md5加密一次第二次加密,会怎么样
一段信息经过MD5加密之后,形成128位的整数,而且MD5算法是不可逆的,你经过第一次加密之后,一般情况下不会被破解。经过一次加密,你第二次加密相当于把第一次加密后的整数当成字符串,再次加密之后还是128位。
③ android签名是要md5值还是要sha1值
android签名是要md5值
④ Android 签名 SHA1WithRSA SHA256WithRSA MD5WithRSA
在对app进行签名,然后上传到某应用市场时,有如下报错
<center>错误提示</center>
<center>记录一下自己踩的坑,也希望能帮到碰到同样问题的人。</center>
MD5 SHA1 SHA256 SHA512 这4种本质都是摘要函数,不通在于长度:
MD5 是 128 位,
SHA1 是 160 位 ,
SHA256 是 256 位,
SHA512 是512 位。
SHA1WithRSA 他的 核心算法是 先用sha1 去摘要,然后使用 RSA 加密。但是 他在 sha1 的过程中 加入了一些 关于算法的东西。
作用特点:
SHA1:公钥后处理回传,SHA1是不可逆的、防冲
MD5:防篡改
MD5和SHA1是2种加密算法,用于计算出一段不可逆向计算的数值,以此来验证该文件是否被修改的.
AES:更快,兼容设备,安全级别高;
DES:本地数据,安全级别低
RSA:非对称加密,有公钥和私钥
⑤ Android 网络交互之MD5为什么要加盐
MD5自身是不可逆的 但是目前网路上有很多数据库支持反查询
如果用户密码数据库不小心被泄露黑客就可以通过反查询方式获得用户密码或者对于数据库中出现频率较高的hash码(即很多人使用的)进行暴力破解(因为它通常都是弱口令)
盐值就是在密码hash过程中添加的额外的随机值
比如我的id是癫ω倒④ゞ 密码是123456 存在数据库中的时候就可以对字符串123456/癫ω倒④ゞ 进行hash,而验证密码的时候也以字符串(要验证的密码)/癫ω倒④ゞ 进行验证
这样有另外一个笨蛋密码是123456的时候 依然能构造出不同的hash值 并且能成功的验证
这时候我的id就作为盐值 为密码进行复杂hash了
所以么。。盐值的作用是减少数据库泄露带来的损失
如果你RP非常好 猜中了我的密码是123456 我也阻止不了你啊
一般情况下,系统的用户密码都会经过一系列的加密才会存储到数据库或者别的资源文件。
盐值加密:把你原来密码,加上一些盐然后再进行一些列的加密算法。
比如你的密码是:899312 用户名是:gaobing
在security 中盐值加密可以是这样加盐的899312{gaobing} 然后 ,在进行一些列的加密。
上一篇日志中介绍了三种登陆设置,这边用数据库的那种作为例子:
<authentication-manager
<authentication-provider user-service-ref='myUserDetailsService'
<password-encoder hash=md5<salt-source user-property=username/</password-encoder
</authentication-provider
</authentication-manager
<b:bean id=myUserDetailsService
class=org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl
<b:property name=dataSource ref=dataS /
</b:bean说明:
<salt-source user-property=username/ 这一句即声明了所加的盐值,即数据库中的username字段。
<password-encoder hash=md5 在他的属性中指明了加盐之后的加密算法 即MD5(应该是32位 我测试是32位的)
这样设置后你的数据库中的密码也应该是经过盐值加密的。
比如username:gaobing 在数据库中的password应该是899312{gaobing}经过MD5加密后的 。