加密

Base64编码算法

用64个字符(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/)来表示任意二进制数据的方法。

在加解密算法中,原始的数据和加密后的数据一般也是二进制数据,为了不传输出错,方便保存或者调试代码,一般需要对加密后的数据进行base64编码。

base64只是一种编码方式,并不是一种加密算法

 

Hash算法

Hash算法是指任意长度的字符串输入,此算法能给出固定n比特的字符串输出,输出的字符串一般称为Hash值。 

具有以下两个特点:

  • 抗碰撞性:寻找两个不同输入得到相同的输出值在计算上是不可行的,需要大约2的(n/2)次方的时间去寻找到具有相同输出的两个输入字符串。
  • 不可逆:不可从结果推导出它的初始状态。

单向密码体制,只能加密不能解密。

可以用来检验数据的完整性,用来加密用户的登录密码等凭证。

 

MD5加密

是一种单向加密算法,是不可逆的一种的加密方式。

可以对明文进行处理产生一个128位(16字节)的散列值,为了便于展示和读写一般将128位的二进制数转换成32位16进制数(如:655A6E9A375DF4F82B730833C807AADD)。

通常用在密码存储和文件的完整性校验上。

虽然说MD5加密本身是不可逆的,但并不是不可破译的,网上有关MD5解密的网站数不胜数,破解机制采用穷举法,就是我们平时说的跑字典。所以如何才能加大MD5破解的难度呢?

  • 对字符串多次MD5加密
  • MD5加盐

      加盐的方式也是多种多样:

string+key(盐值key)然后进行MD5加密

用string明文的hashcode作为盐,然后进行MD5加密

随机生成一串字符串作为盐,然后进行MD5加密

 

对称加密算法

使用的密钥只有一个,发收双方都使用这个密钥对数据进行加密和解密。

1、建议使用AES算法。

2、DES默认的是56位的加密密钥,已经不安全,不建议使用。

3、注意加密模式不要使用ECB模式。ECB模式不安全。

  • AES

有着更高的速度和资源使用效率,安全级别高。

 

 

非对称加密

非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,用公开密钥对数据进行加密,只有用对应的私有密钥才能解密。

原理:将a和b相乘得出乘积c很容易,但要是想要通过乘积c推导出a和b极难。即对一个大数进行因式分解极难

 

目前被破解的最长RSA密钥是768,建议使用1024、2048位的密钥长度。

在实际应用中,绝大多数对RSA的实现,都遵循pkcs (公开秘钥加密标准)的标准,即私钥能推出公钥,但公钥不能推出私钥。

android的rsa加密方式是RSA/ECB/NoPadding,而标准jdk是RSA/ECB/PKCS1Padding,所以加密时要设置标准jdk的加密方式。

适用:通常只能用于加密少量数据或者加密密钥,如登录、支付。1024位key的最多只能加密127(1024 / 8 - 11)位数据,否则就会报错,可以分段加密

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值