首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >android中的加密算法,Android中加密算法[通俗易懂]

android中的加密算法,Android中加密算法[通俗易懂]

作者头像
全栈程序员站长
发布2022-08-27 11:02:19
发布2022-08-27 11:02:19
1.6K0
举报

大家好,又见面了,我是你们的朋友全栈君。

Android中的加密算法可以分为两类:对称加密 和 非对称加密

对称加密(DES、3DES、AES)

概念

对称加密算法中,发送方将明文和加密密匙经过特殊加密算法处理后,使其形成变成复杂的密文后发送出去。接受方用同样的密匙、同样加密算法的逆算法对密文进行解密。传统的DES加密算法只有56位密匙,最新AES技术拥有128位密匙。大大提高了安全性。

优点:算法公开、计算量小、加密速度快、加密效率高

缺点:发送方和接受方拥有同样的密匙,安全问题得不到保证;管理密匙会成为额外的负担;可逆。

非对称加密(MD5、SHA、RSA、DSA)

概念

非对称加密算法中,发送方和接收方需要使用完全不同但又完全匹配的一对钥匙即 公匙 和 私匙来加密和解密数据。如果发送方只想要接收方解密数据,发送方就需要先拿到接收方的公匙,并且发送方并不知道接收方的私匙。

优点:安全,不可逆

Base64

Base64其实就是将数据进行base64编码传输,不算什么加密算法。

异或加密

原理:某个值异或一个数2次后,得到是本身

异或运算中,如果某个字符(或数值)x 与 一个数值m 进行异或运算得到y,则再用y 与 m 进行异或运算就可以还原为 x ,因此应用这个原理可以实现数据的加密解密功能。

//固定key的方式

public byte[] encrypt(byte[] bytes) {

int len = bytes.length;

int key = 0x12;

for (int i = 0; i < len; i++) {

bytes[i] ^= key;

}

return bytes;

}

//测试

byte[] bytes = encrypt(“whoislcj”.getBytes());//加密

String str1 = new String(encrypt(bytes));//解密

//不固定 (加密)

public byte[] encrypt(byte[] bytes) {

int len = bytes.length;

int key = 0x12;

for (int i = 0; i < len; i++) {

bytes[i] = (byte) (bytes[i] ^ key);

key = bytes[i];

}

return bytes;

}

//解密

public byte[] decrypt(byte[] bytes) {

int len = bytes.length;

int key = 0x12;

for (int i = len – 1; i > 0; i–) {

bytes[i] = (byte) (bytes[i] ^ bytes[i – 1]);

}

bytes[0] = (byte) (bytes[0] ^ key);

return bytes;

}

//测试

byte[] bytes = encrypt(“whoislcj”.getBytes());//加密

String str1 = new String(decrypt(bytes));//解密

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/145256.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档